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中演示
- 项目
标签: