2

http://bccd.net/でダウンロードできる BCCD (Bootable Cluster CD) を使用してクラスターとしてセットアップした 24 台のコンピューターで、分散クラスター化アルゴリズム (MPI で実装) を実験しています。

ノード数と入力データのサイズを変えてアルゴリズムを数回実行する実験を実行するためのバッチ プログラムを作成しました。

アルゴリズムの実行ごとに MPI 通信で使用されるデータ量を知りたいので、前述のパラメーターを変更したときにデータ量がどのように変化するかを確認できます。そして、バッチプログラムを使用してこれらすべてを自動的に実行したいと考えています。

tcpdump を使用するように誰かに言われましたが、この方法にはいくつかの問題がありました。

まず、アルゴリズムを実行するたびにバッチ プログラム (呼び出しを行うコマンド システムを使用して C++ で記述) で tcpdump を呼び出す方法がわかりません。これは、tcpdump をアプリケーションと並行して実行する別の端末が必要になるためです。また、ネットワークがスイッチを使用しているため、別のコンピューターで tcpdump を実行できません。したがって、マスターノードで実行する必要があります。

次に、実験中に tcpdump でトラフィックを確認しましたが、MPI が使用するポートを特定できませんでした。多くのポートを使用しているようです。パッケージをフィルタリングするためにそれを知りたかったのです。

3 番目に、パッケージ全体をキャプチャし、tcpdump を使用してファイルに保存しようとしましたが、数秒でファイルは 3.5 MB になりました。しかし、私の実験全体には2日かかります。したがって、このアプローチに従うと、最終的なログ ファイルは巨大になります。

理想的なアプローチは、パッケージのヘッダーにあるサイズ フィールドだけを取得し、これを合計して、送信されたデータの総量を取得することです。そうすれば、ログファイルは、パッケージ全体をキャプチャする場合よりもはるかに小さくなります。しかし、私はそれを行う方法がわかりません。

もう 1 つの制限は、コンピューターのディスクにアクセスできないことです。そのため、RAM と 4GB の USB フラッシュ ドライブしかありません。そのため、巨大なログファイルを持つことはできません。

http://www.open-mpi.org/faq/?category=perftoolsで言及されているような MPI トレース ツールまたはプロファイリング ツールの使用を既に考えています。これまで、Sun Performance Analyzer のみをテストしました。問題は、これらのツールを BCCD にインストールするのは困難であり、おそらく不可能でさえあると思います。それに加えて、このツールを使用すると、オーバーヘッドが増えるため、実験の終了に時間がかかります。しかし、誰かが BCCD に精通していて、それらのツールのいずれかを使用するのが良い選択だと思う場合は、お知らせください。

誰かが解決策を持っていることを願っています。

4

1 に答える 1

2

とにかく、シャードメモリを使用して通信するマルチコアノードがある場合、tcpdump のような実装は機能しません。

MPEのようなものを使用することは、ほぼ間違いなく進むべき道です。これらのツールはほとんどオーバーヘッドを追加せず、メッセージをカウントしたい場合は常にいくらかのオーバーヘッドが必要になります。mpitrace を使用してすべての MPI 呼び出しを書き出し、結果のテキスト ファイルを自分で解析できます。ちなみに、MPE についてはbccd の Web サイトで明示的に説明されていることに注意してください。MPICH2 には MPE が組み込まれていますが、任意の実装用にコンパイルできます。MPE のオーバーヘッドはごくわずかしかありません。

IPMは、メッセージとサイズのカウントを行うもう 1 つの優れたツールです。XML出力を解析するか、後処理ツールを使用してグラフを手動で統合する必要があります(ランクごとのbytes_rx/bytes_tx、またはメッセージバッファサイズ/カウントグラフなど)。IPM のオーバーヘッドは MPE よりもさらに小さく、ほとんどの場合、プログラムの実行が終了してファイル I/O を実行した後に発生します。

これらのアプローチのいずれかでオーバーヘッドが非常に心配な場合は、MPI_Send、MPI_Recv などをラップするプロファイリング インターフェイスを使用して、独自の MPI ラッパーをいつでも作成でき、プロセスごとに送受信されたバイト数をカウントし、出力することができます。最後にその合計のみ。

于 2011-02-06T05:52:21.950 に答える