DiscoPoP是一个帮助软件开发人员用线程并行化他们的程序的工具。它发现了顺序程序中潜在的并行性,并就如何利用它提出了建议。

discopop的Python项目详细描述


DiscoPoP图形分析仪

DiscoPoP profiler附带了一个Python框架,专门用于分析探查器输出文件、生成CU图、检测潜在的并行模式以及建议OpenMP并行化。 目前,可以检测到以下五种模式:

  • 减少
  • 全力以赴
  • 管道
  • 几何分解
  • 任务并行性

入门

我们假设您已经在目标顺序应用程序上运行DiscoPoP profiler,并且在当前工作目录中创建了以下文件:

  • Data.xml(由CUGenerationpass创建的XML格式的CU信息)
  • <app_name>_dep.txt(由DPInstrumentationpass创建的数据依赖项)
  • reduction.txt和{}(还原操作和循环迭代数据由DPReductionpass标识)

如果上面提到的任何文件丢失,请按照DiscoPoP manual生成它们。在

先决条件

要使用图形分析器工具,需要在系统上安装Python3.6+。可以使用以下命令安装更多的Python依赖项: pip install -r requirements.txt

用法

要运行图形分析器,可以使用以下命令:

python3 -m discopop_explorer --path <path-to-your-output>

您可以指定DiscoPoP输出文件的路径。然后,Python脚本在该路径中搜索以找到所需的文件。不过,如果您有兴趣将特定位置传递给每个文件,下面是详细的用法:

`discopop_explorer [--path <path>] [--cu-xml <cuxml>] [--dep-file <depfile>] [--plugins <plugs>] [--loop-counter <loopcount>] [--reduction <reduction>] [--json <json>]`

选项:

^{pr2}$

默认情况下,运行图形分析器会将模式列表以及OpenMP并行化建议打印到标准输出。{JSON}你也可以通过传递cd7}格式的Python}获得结果。在

演练示例

test/文件夹包含许多用于测试工具的预计算输入,例如来自Polybench benchmark suite的atax。 您可以尝试这个示例工作流。在

test/reduction/包含源代码和用于简单简化循环的预计算DiscoPoP输出。 循环本身将从1到n的所有数字相加

您可以在main.c上运行DiscoPoP,或者只使用包含的输出。在

之后,您可以运行discopop\uExplorer--path参数应该指向DiscoPoP的输出。在

在本例中,reduction的输出将指向第6-9行,它将建议pragma omp parallel forOpenMP指令来并行化循环。 您还会发现i被分类为私有变量,而sum被归类为一个缩减变量。因此,建议并行化指令如下:

#pragma omp parallel for private(i) reduction(+:sum)

建议的模式在mainp.c中演示

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Apache Flink外部Jar   创建和强制转换对象数组时发生java错误   Java,添加数组   具有相同包结构和类的java JAR   java Jenkins未能构建Maven项目   java为什么一个forloop比另一个更快,尽管它们做的“一样”?   servlets在将“/”站点迁移到Java EE包时处理contextpath引用   无法解析java MavReplugin:2.21或其某个依赖项   泛型如何编写比较器来泛化Java中的两种类型的对象?   java Android Emulator未在netbeans上加载   多线程Java使用线程对数组中的数字求和:在同步块中使用新变量作为锁:差异   java如何在JSP/servlet中设置<input>标记的值?