問題タブ [boost-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.
multithreading - ブースト mpi MPI_THREAD_MULTIPLE
MPI_THREAD_MULTIPLE をサポートする mpich を使用しています。boost ドキュメントから:
シリアル化された型やパックされたアーカイブなどの可変長データの場合、MPI_Send を介して 2 つのメッセージが送信されます。1 つはデータの長さを含み、もう 1 つはデータ自体を含みます。
同じタグを持つシリアル化された型を、異なるスレッドから同じランクに送信しても安全ですか? 受信ランクには、メッセージを受信するためのスレッドが 1 つしかありません
c++ - MPI を強制的に送信時に常にブロックすることは可能ですか?
MPI を強制的に送信時に常にブロックする方法はありますか? これは、 MPI が send で実行することを選択する可能性のあるバッファリングに依存する分散アルゴリズムでデッドロックを探す場合に役立つ場合があります。
たとえば、次のプログラム (2 つのプロセスで実行) は、私のマシンでは問題なく動作します。
しかし、バッファのサイズを10000に変更すると、無期限にブロックされます。
c++ - boost::mpi::packed_oarchive およびpacked_iarchiveを使用した未知のサブクラスのMPI送信
未知のサブクラスのクラスを送信しようとしていますが、既知の基本クラスです。
boost::serialization
これは、 BOOST_CLASS_EXPORT_GUID
andを使用して可能であると信じていますboost::mpi
が、私は一般的に C++ にはかなり慣れていません。
これは私が持っているコードです:
コンパイル/実行:
これはうまくいくようです:
...「不明なアクションクラスの送受信」に到達するまで、実行時エラーが発生します。
質問:
- 質問はタグ付けされて
boost
いますが、ブーストの有無にかかわらず、未知のサブクラスを送信することは可能ですか? 文字列名による並べ替えの登録と、作成を処理するための制御担当者の反転を使用できることは理解していますが、それがBOOST_CLASS_EXPORT_GUID
. - 私が持っているものでこれを機能させる方法はありますか?
boost
これを通常の古いMPIで機能させるための合理的に簡単な代替手段(を使用しない)はありますか?
c++ - Boost.MPI recv を既存のベクターのスライスに
上記はベクトルのサブセットを受信および更新するのに有効で機能的ですか?
そうでない場合、recv と copy 以外に同等の代替手段はありますか?
c++ - boost_mpi で文字列型を送信するには?
boost mpi を使用して、より複雑なデータ型を渡そうとしています。http://theboostcpplibraries.com/boost.mpi-simple-data-exchangeのサンプル コードを実装しています。
最初に、前述のチュートリアルの例 47.5 から機能する文字の配列として文字列を送信しようとします。コードは次のとおりです。
次のコマンドで問題なくコンパイルして実行できました。
mpic++ -std=c++0x 3.cpp -o 3 -lboost_mpi
mpiexec -np 3 ./3
次に、型を文字列に変更しようとしました (同じチュートリアルの例 47.5 から)。
このコードをコンパイルしてリンクすると、次のエラーが発生しました。
どんな助けでも大歓迎です。
c++ - 効率的な方法でブースト mpi ブロードキャスト機能を使用するには?
ルート プロセスから値をブロードキャストし、それを他のすべてのプロセスで受信しようとしています。以下の2つの形式で実装しました。1.すべてのプロセス(ルートおよび他のすべてのスレーブ)でブロードキャスト機能を使用しました
2.次のように、ルートからのみブロードキャストを呼び出し、他のプロセスから呼び出しを受信します。
これらの例ではどちらも同様に機能しているように見えますが、ここでコードの効率とパフォーマンスに関して好みがあるかどうかを知りたいです。
ありがとうございました!
c++ - リアルタイム ストリーミング アプリケーションで mpi を使用するには?
私は2つのプロセスを持っています.1つのプロセスは、内部割り込みがプロセス(送信するプロセス)を停止するまで、パケットを別のプロセスにストリーミングしています。このチャネルに受信するメッセージがあるまで、他のプロセスが受信できるメカニズムが必要です。
停止コマンドをメッセージとして転送する以外にそれを行う方法はありますか? 割り込みが送信側プロセスを強制終了する可能性があるため、別のメッセージとして終了/割り込みを送信しないことを好みます。
python - Pythonのboost.mpiでmpi.gatherが機能しない
以下に示すように、Pythonのboost.mpiでmpi.gatherを使用しようとしています。
次のコマンドでプログラムを実行すると、
出力は
(数字の順番は変わる可能性があります。)
ただし、value
mpi.gather の引数をブール型以外に設定すると、スタックします。なぜこれが起こっているのか分かりますか?
私はmpich2(バージョン3.0.4)、ブースト1.61.0、およびpython 3.5.1を使用しています。前もって感謝します。
更新: 機能しないコードは次のとおりです。
上記のプログラムをmpirun -n 3 python mpi_test.py
で実行したところ、次の結果が得られました (また、番号の順序は異なる場合があります)。
プログラムも 0 を出力するはずですが、スタックしてしまいました。使用するプロセスをいくつか試しましたが、ルートランクが印刷されずに常にスタックします。
をまたはvalue
に設定した場合のみ、プログラムが終了するようです。False
True