2011-08-24 76 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等多進程應用程序。