2011-08-24 136 views
6

我有一个已被OpenMP并行化的循环,但由于任务的性质,有4个critical子句。如何剖析OpenMP瓶颈

如何分析加速并找出哪些关键子句(或者非关键(!))占用循环内最多时间的最佳方法是什么?

我使用Ubuntu 10.04使用g ++ 4.4.3

+0

我修改了原始文章的其他信息 – Mikhail

+1

我做了这样的任务,修改了omp库资源并添加了一个rdtsc的 – osgx

回答

2

OpenMP的包括用于测量定时性能(docs here)的功能omp_get_wtime()和omp_get_wtick(),我建议使用这些。

否则请尝试一个分析器。我更喜欢谷歌CPU分析器,可以找到here

还有在this答案中描述的手动方式。

4

Scalasca是分析OpenMP(和MPI)代码并分析结果的好工具。 Tau也很好,但更难使用。英特尔工具,如vtune,也很好,但非常昂贵。

+0

intel vtune是一个很好的产品。与scalasca或tau相比,使用非常简单。这是值得的钱。 – tune2fs

+0

VTune实际上可以免费用于非商业软件。 http://software.intel.com/en-us/non-commercial-software-development – SaiyanGirl

+0

英特尔似乎已经停止免费提供vtune。现在只有提供学术用途的产品。 –

3

Arm MAP具有OpenMP和pthreads性能分析 - 并且无需工具或修改源代码即可工作。您可以看到同步问题以及线程在源线级别花费时间的位置。 OpenMP profiling博客条目值得一读。

MAP被广泛用于高性能计算,因为它也是剖析MPI等多进程应用程序。