2011-08-24 9 views
6

OpenMPによって並列化されたループがありますが、タスクの性質上、4つのcritical節があります。OpenMPボトルネックをプロファイルする方法

スピードアップをプロファイリングして、ループの中でクリティカル句(またはクリティカルではない(!))の中で最も時間がかかる部分を見つけるにはどうすればよいでしょうか?

IはGとのUbuntu 10.04使用

++ 4.4.3

+0

私は追加の情報を元の投稿に変更しました – Mikhail

+1

ompライブラリのソースを変更してrdtscのものを追加することで、このような作業を行いました – osgx

答えて

2

のOpenMPは機能omp_get_wtime()とomp_get_wtickを含む()タイミング性能(docs here)を測定するために、私はこれらを使用してお勧めします。

それ以外の場合は、プロファイラを試してください。私はhereが見つかりますGoogleのCPUプロファイラを好む。

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

intelは無料でvtuneの提供を停止したようです。現在、学術的利用のための提供のみがあります。 –

3

は、OpenMPおよびpthreadsプロファイリングがあり、ソースコードの計測や修正を行うことなく動作します。同期の問題や、スレッドがソースラインレベルに時間を費やしているところがわかります。 OpenMP profilingブログエントリは読む価値があります。

MAPは、MPIなどのマルチプロセスアプリケーションのプロファイルでもあるため、高性能コンピューティングに広く使用されています。

関連する問題