問題タブ [intel-mpi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Intel MPI を使用した Boost.MPI のビルド
Intel MPI 4.0.0.012 で Boost.MPI 1.47 をビルドしようとしていますが、Boost はインストールを見つけることができません。using mpi ;
を含む user-config.jam でさまざまなバリアントを試しましたがusing mpi ;
、運がusing mpi : mpicl ;
ありませんでした。実際に何ができるかはわかりませんがusing mpi : c:/path/to/mpi/mpicl.bat
、 も使用してみました)。using mpi : <find-shared-library>impi ;
<find-shared-library>
私が得る使用using mpi ;
:
私が得る使用using mpi : mpicc
:
using mpi : <find-shared-library>impi ;
結果は
Boost.MPI を Intel MPI (Windows、Visual Studio 2010、x64) とリンクするにはどうすればよいですか?
c - MPIブロードキャスト2Dアレイ
いくつかのプロセスによって並行して操作されている2D倍精度配列があります。各プロセスは配列の一部を操作し、すべての反復の終わりに、すべてのプロセスが2D配列の同じコピーを持っていることを確認する必要があります。
サイズ10*10および2プロセス(またはプロセッサー)の配列を想定しています。プロセス1(P1)は2D行の最初の5行(合計5 * 10 = 50要素)を操作し、P2は最後の5行(合計50要素)を操作します。そして、各反復の終わりに、P1が必要です(それ自体の最初の5行+ P2の最後の5行)。P2は(P1の最初の5行+それはOWNの最後の5行)を持つ必要があります。シナリオが明確であることを願っています。
以下のコードを使用してブロードキャストしようとしています。しかし、私のプログラムは次のエラーで終了し続けます:「アプリケーションは終了文字列で終了しました:ハングアップ(信号1)」。
ここで指摘されているように、私はすでに連続した2Dメモリアロケータを使用しています。MPI_BcastはJonathanによる動的な2D配列です。しかし、それでも同じエラーが発生します。
誰かが私を助けることができますか?
私のコード:
パート2:上記のコードは、1D分解を使用したラプラス方程式の並列ソルバーの一部であり、マスターワーカーモデルを使用したくありませんでした。マスターワーカーモデルを使用すると、コードが簡単になりますか?
parallel-processing - MPIユーザーを指定します
mpirunを介したMPI実行で、特定のホストまたはホストのリストとの特定のssh接続で使用する必要があるユーザーを指定できることを誰かが知っていますか?異なるノードで異なるユーザーを使用する必要があります。
linux - MPI_SEND は仮想メモリの大部分を占めます
多数のカーネルでプログラムをデバッグすると、非常に奇妙なエラーが発生しinsufficient virtual memory
ました。私の調査はコードの平和につながり、マスターは各スレーブに小さなメッセージを送信します。次に、1 つのマスターが 10 個の整数を単純に送信しMPI_SEND
、すべてのスレーブがそれを受信する小さなプログラムを作成しましたMPI_RECV
。/proc/self/status
前後のファイルを比較するとMPI_SEND
、メモリ サイズの違いが非常に大きいことがわかりました。最も興味深いこと (私のプログラムをクラッシュさせます) は、このメモリが後で解放されずMPI_Send
、依然として巨大なスペースを占有することです。
何か案は?
error-handling - 別のコミュニケーターで MPI メッセージを受信しました - 間違ったプログラムまたは MPI 実装のバグですか?
これは、私の以前の質問のフォローアップです。結論は、プログラムが間違っていたため、予期される動作が未定義であるというものでした。
ここで作成しようとしているのは、単純なエラー処理メカニズムです。そのために、空のメッセージに対する Irecv 要求を「アボート ハンドル」として使用し、それを通常のMPI_Wait
呼び出しにアタッチ (および に変換MPI_WaitAny
) して、プロセス 0 でエラーが発生し、プロセス 1 のブロックを解除できるようにしますMPI_Recv
。
何が起こっているかというと、内部メッセージ バッファリングが原因でMPI_Isend
、他のプロセスが一致するMPI_Recv
. ですので、キャンセルは仕方ありません。
すべてのプロセスが呼び出されMPI_Comm_free
たら、そのメッセージを完全に忘れることができることを望んでいましたが、結局のところ、そうではありません。MPI_Recv
代わりに、次のコミュニケーターに配信されています。
だから私の質問は:
- これも間違ったプログラムですか、それとも MPI 実装 (Intel MPI 4.0.3) のバグですか?
MPI_Isend
呼び出しをに変更すると、プログラムは期待どおりに動作しますMPI_Issend
。少なくともその場合、プログラムが正しいことを確認できますか?- ここで車輪を再発明していますか?これを達成するためのより簡単な方法はありますか?
繰り返しになりますが、フィードバックは大歓迎です。
出力:
c++ - 単純な mpi プログラムを実行できません
最近 Intel の Cluster Studio をインストールし、IMPI をテストしていました。を使用して単純な hello world プログラムを実行しようとするとmpirun
、処理に時間がかかり、自分で終了する必要があります。次のコードを使用しました。
でコンパイルしましたmpiicpc main.cpp -o main
。これは、-show
オプションを追加したときの出力です。
で実行可能ファイルを実行しましmpirun -np 4 main
た。
追加情報:
更新g++
:の代わりに使用してコンパイルも試みましたicpc
。運がない。私の推測では、MPI ランタイムに問題があるのですが、見つかりません。デバッグは機能しませんでした。そもそもプログラムが初期化されていないと思います。
mpi - Intel MPI_COMM_SPAWN_MULTIPLE でのクラッシュ
MPI_COMM_SPAWN_MULTIPLE
Intel MPI 実装を使用し、ifort でコードをコンパイルすると、内部でクラッシュが発生します。同じコードは、OpenMPI を使用して gfortran でコンパイルしても問題なく動作します。関連するコードを以下に掲載します。
java - Intel MPI mpirun が java Process.destroy() を使用して終了しない
Intel MPI のバージョンは、RHEL マシンにインストールされている impi/5.0.2.044/intel64 です。
次のコードを使用して、Java を使用して MPI プログラムを呼び出しています。
しかし、exitValue()
が例外をスローせずに認識された後でも、ps aux
まだ大量の が表示./myProgram
され、プログラムはまだ強制終了されていないかのように結果ファイルを書き込んでおり、すべての計算が終了した後にのみ終了します。
現在、終了に成功した唯一の方法は、コンソールで Java プログラムを./myProgram
使用して Java を終了することです。Ctrl+C
私の意図は、計算をすぐに停止し、Java プログラムに他の計算をスケジュールさせることです。すべての mpi インスタンスを強制的に終了させる、または少なくとも一定時間 (30 秒または 1 分間のポーリングなど) で終了することを保証する回避策はありますか?