走っている間グロマーク異なる設定(Infinibandに接続されているノード内の2、3、4ノード)でベンチマークした結果、重大なパフォーマンス低下が発生しました。この研究の目的のために、MPI_Alltoall()
すべてのノード間でさまざまなサイズ(4バイト〜2 MB)のパケットを転送するテストプログラムを作成しました。テストプログラムの内部タイミングとI_MPI_STATS
IntelMPI施設で収集された統計は、両方とも同じパターンを示しています。言い換えれば、少量のデータの場合、結果の帯域幅は許容可能であり、より大きなペイロードの場合、動作は不規則になる。一部の転送には非常に長い時間が必要です(約2.15秒)、平均パフォーマンスが低下します。これらの非常に長い遅延はランダムに発生するように見えるため、存在しないか、サンプルサイズが小さい可能性があります(たとえば、ペイロードサイズあたり100の転送)。以下は、4つのノード、各サイズの1000の転送を使用して取得したいくつかのサンプルデータです。
# Message size Call count Min time Avr time Max time Total time
Alltoall
1 2097152 1000 5649.09 13420.98 2152225.97 13420980.69
2 1048576 1000 2874.85 13000.87 2151684.05 13000867.13
3 524288 1000 1404.05 8484.15 2149509.91 8484153.99
4 262144 1000 719.07 5308.87 2148617.98 5308866.74
5 131072 1000 364.78 9223.77 2148303.99 9223767.04
6 65536 1000 206.95 5124.41 2147943.97 5124409.44
7 32768 1000 120.88 12562.09 2147678.85 12562089.68
8 16384 1000 36.00 57.03 93.94 57034.25
9 8192 1000 22.89 34.80 103.00 34803.87
管理されていないスイッチを介してQDR InfinibandとIntelMPI 4.0.3を使用しています。 ib_send_bwを使用してリング転送(node1 -> node2 -> node3 -> node4 -> node1)を設定してMPIを確認しようとしましたが、問題の動作は観察されませんでした。
#bytes #iterations BW peak[MB/sec] BW average[MB/sec]
16384 10000 1202.93 1202.91
32768 10000 1408.94 1367.46
65536 10000 1196.71 1195.85
131072 10000 1195.68 1180.71
262144 10000 1197.27 1167.45
524288 10000 1162.94 1154.15
1048576 10000 1184.48 1151.31
2097152 10000 1163.39 1143.60
4194304 10000 1157.77 1141.84
8388608 10000 1141.23 1138.36
私の質問:この問題をより深く掘り下げて、問題の根本原因が何であるかを調べる方法はありますか? IntelMPIリファレンスマニュアルを見ましたがI_MPI_STATS
。