私は並列コンピューティングの世界に不慣れです。デュアル コアを搭載したラップトップで MPI ルーチンを使用する C++ コードを実行することは可能ですか、それともそれを行うためのシミュレータ/エミュレータはありますか?
4 に答える
ほとんどの MPI 実装は、同じホスト上にあるランク間の通信に共有メモリを使用します。ラップトップのセットアップに関して特別なことは何も必要ありません。
デュアル コア ラップトップを使用すると、2 つのランクを実行でき、OS スケジューラはそれらを別々のコアに配置する傾向があります。デフォルトでは、ジョブは最後に実行されたコアでスケジュールされる傾向があるため、WinXP スケジューラはある程度の「CPU バインド」を強制する傾向があります。ただし、ほとんどの MPI 実装では、特定のコアでランクを強制的にスケジュールする明示的な「cpu バインディング」も許可されています。この構文は非標準であり、特定の実装ドキュメントから取得する必要があります。
大学のコンピュータが実行しているラップトップで MPI の「同じ」バージョンと実装を使用するようにしてください。これは、MPI ランタイム フラグが同じであることを確認するのに役立ちます。
ほとんどの MPI 実装には、何らかの「コンパイラ ラッパー」、または少なくとも MPI ライブラリを含むアプリケーションを構築するための一連の命令が同梱されています。それらのラッパーを使用するか、それらの指示に従ってください。
MPI アプリケーションのシミュレーターに興味がある場合は、おそらく SMPI を確認する必要があります。
このオープンソース シミュレーター (私が関与している) は、多くの MPI C/C++/Fortran アプリケーションを変更せずに実行でき、ハードウェア プラットフォームの正確な説明があれば、アプリケーションのランタイムをかなり正確に予測できます。オンラインとオフラインの両方の調査が可能です。
シミュレーターを使用して MPI アプリケーションを研究することには、他にも多くの利点があります。
- 再現性: 指定しない限り、複数の実行でまったく同じ動作が発生します。トレースを追加することでアプリケーションの動作が変化するハイゼンバグは発生しません。
- What-if 分析: アクセスできない、またはまだ構築されていないプラットフォームでテストする機能。
- クレアボヤンス: システムのあらゆる部分を観察できます。ネットワーク コアでも観察できます。
詳細については、このプレゼンテーションまたはこの記事を参照してください。
SMPI フレームワークは、そのプレゼンテーションで示されているように、徹底的なテストを通じて MPI アプリケーションの修正を正式に調査することさえできます。
MPIメッセージはTCPネットワークを介して転送されます(共有パフォーマンスのような他の高性能の可能性がありますが、ネットワークがデフォルトです)。したがって、ノードが相互に接続できる限り、アプリケーションがどこで実行されるかはまったく問題ではありません。ラップトップでアプリケーションをテストしたいので、ノードはすべてローカルで実行されており、ループバックネットワークを介して相互に簡単に接続できます。
あなたの質問を理解できるかどうかはよくわかりませんが、ラップトップは他のコンピューターと同じです。MPIライブラリを正しく設定し、パスを設定していれば、もちろん、ラップトップでMPIルーチンを使用できます。
私に関する限り、私はすべての並列処理にDebian Linux( http://www.debian.org )を使用しています。私は、DebianマシンでMPIを実行する方法を扱った小さな記事を書きました。あなたはそれを参照したいかもしれません。