2016-12-17 4 views
0

私は、さまざまなコンパイラ設定でMPIプログラムをベンチマークしています。Linuxの時刻ユーティリティを使ってMPIプログラムのパフォーマンスを測定する

は今、私はそうするように、Linuxのtimeを使用します。

$> $(which time) mpirun -v [executable] 

私は私が期待したものの面で[OK]を見てもらうの値が。

なぜ私はでなければならないのですかにはtimeを使用していますか?

ここで重要なのは、必要なCPU時間を測定することです。

私は、1台のマシンでのベンチマークは、必ずしもクラスタ上で起こっていることと一貫しているとは限りませんが、これは範囲外です。

答えて

1

timeを使用すると、MPIプログラムのCPU時間を稼ぐことができます。

まず、分散セットアップでは動作しません。今あなたの質問が単一ノードまたはクラスタをターゲットにするかどうかは不明ですが、それは問題ではありません。 MPIの実装は、単一のノードでも起動するためのどのようなメカニズムを使用してもよい。そのため、実際のアプリケーションプロセスのCPU時間が時間に含まれる場合と含まれない場合があります。

ただし、MPIプログラムのCPU時間はどういう意味ですか?これは、すべてのプロセスのCPU時間の合計になります。これはベンチマークのメトリックが悪いことです。改善の数値を示すものではなく、全体的な実行時間とは相関しません。たとえば、コードのバージョンが非常に不均衡な場合、CPU時間は短くなりますが、バランスの取れた壁面よりも壁の時間が長くなります。また、ブロッキングではなくビジー待機を有効にすると、ランタイム全体が向上するだけでなく、使用されるCPU時間も増加します。何が起こっているのかを実際に理解するには、どんな種類のリソースを使用するのかは、proper parallel performance analysis toolにしてください。

HPCでは、CPU時間ではなく、予約されているCPU * walltimeによって予算が設定されます。したがって、1次元のメトリックを使用する必要がある場合は、ウォールタイムを使用してください。今度はtime mpirun ...を使ってそれを得ることができますが、短時間実行されるアプリケーションでは精度はあまり良くありません。

+0

詳細な回答ありがとうございます。私はこのことについてほとんど経験がないので、とても感謝しています! – j2L4e

関連する問題