問題タブ [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.
ubuntu-12.04 - UbuntuでBoost.MPIでMPICHを使用する
Ubuntu12.04でboost.mpiを使おうとしていました。apt-getはopenmpiをインストールしますが、私が実行している他のいくつかのソフトウェア(トルクを含む)はmpich2 / mpichを期待し、
「mpdstartup:コマンドが見つかりません」
私は確かに、openmpiを使用するようにソフトウェアを変更したり、ソフトウェアのアップグレード時に移行の問題を心配したりしたくありません。
私の質問は、Ubuntu(12.04 LTS)にboost.mpi + mpich2をインストールするユーザーフレンドリーな方法はありますか?(例:非公式リポジトリ)。最悪の場合、ソースからブーストをビルドする必要がある場合、新しいブーストバージョンにアップグレードするときにブーストインストールをアンインストールするユーザーフレンドリーな方法はありますか?apt-getがファイルとよく知られた場所へのリンクをインストールし、要求されたときに完全に削除するという事実が気に入りました。
ところで、私は最初にmpich2をインストールしてからlibboost-mpi-devをインストールしようとしましたが、動作するmpi実装がある場合でも、apt-getはopenmpiをインストールします。これはやや制約があるようです。
ありがとう、
mpi - boost.mpi 空ベクトル メッセージ
Boost MPI で空のベクターを送信するとどうなりますか?
たとえば、次のコードを使用して送信したとします。
これは機能しますか?空のベクトルを受け取って に割り当てるだけでしょうother_vector
か?
ありがとう
c++ - Boost :: MPIを介して2DCスタイルの配列を送信する方法は?
私はdouble A[B_ROWS][B_COLUMNS];
CAPIで次のようなものを使用しました:
と
今ブースト::mpiで私は試します:
と
しかし、私のアプリは常に次のようなもので失敗します:
つまりseg fault
、元のCアプリは必要に応じて機能し、現在変更したのはapiの使用だけであり、ロジックは使用されていないことに注意してください。
では、boost ::mpiを介して2DCスタイルの配列を送信する正しい方法は何ですか?
vector - bools ブースト mpi を使用した all_to_all
bool のベクトルを使用して all to all を実行しようとしていますが、コンパイラ エラーが発生します。
コンパイラは、最後の 2 つの引数 (ベクトル) が「左辺値または関数指定子でなければならない」と不平を言います。
なぜこの問題が発生するのかわかりません。
mpi - status.MPI_SOURCEと同等のmpiをブーストします
boost::MPI
次のCMPIコードに相当するものはありますか?ここにある基本的なマスタースレーブテンプレートである次の標準MPIコードを移植しようとしています。ブーストmpiのドキュメントに続いて、mpi_sendまたはmpi_recvランク、タグ、およびバッファーの3つのパラメーターのみがあります。
boost-mpi - 同種のマシンで mpi をブーストする
ブースト MPI で均一なオプションを使用して成功した人はいますか? boost mpi config.cpp ファイルの適切な行のコメントを外してから、boost mpi をビルドし、渡したいくつかのクラスで BOOST_IS_BITWISE_SERIALIZABLE([classname]) を有効にしましたが、パフォーマンスに変化は見られなかったので、そうであるかどうかはわかりません有効にします。
ドキュメントには次のように記載されています。
MPI_Pack/MPI_Unpack 呼び出しを回避し、ビットごとの直接コピーを使用することにより、同種のマシンでより多くの最適化が可能です。この機能は、Boost.MPI のビルド時およびアプリケーションのビルド時にマクロ BOOST_MPI_HOMOGENEOUS を定義することで有効にできます。さらに、Boost.Serialization のヘルパー マクロを使用して、すべてのクラスを is_mpi_datatype および is_bitwise_serializable としてマークする必要があります。
ブーストをビルドするときにマクロを定義してクラスをマークしましたが、アプリケーションをビルドするときに何をすべきかについての情報がどこにも見つからなかったので、これが欠けているのではないかと考えています。どんな助けでも大歓迎です。
mpi - ブースト mpi アサーションの失敗
boost-mpi を使用していますが、理解するのに苦労しているというエラーが表示されます。recv 呼び出しを使用していますが、ブースト コードのアサーションが失敗します。
これは、boost/mpi/detail/ にあるファイル binary_buffer_iprimitive.hpp からのものです。
これは、初めて受信したときは発生しないため、送信/受信呼び出しを行うたびに発生する一般的なエラーではないことがわかっています。このアサーションは、受信するデータを収容するのに十分な大きさのバッファーがあるかどうかを確認していると思いますが、それについてもわかりません。その場合、バッファが十分に大きくない原因は何ですか? それは、根底にあるブーストによって処理されるべきではありませんか?
mpi - boost::mpi send/recv とのメッセージ同期?
「-np 2」で mpirun を呼び出します。ランク0のプロセスを「マスター」、ランク1のプロセスを「スレーブ」と呼んでいます。
ゴール:
- マスターは時々 のようなメッセージをスレーブに送信します
mpi::send(1, UPDATE, data);
。他のメッセージ タイプには、DIE、COMPUTE などがあります。これらのメッセージ タイプは、一意の値を持つ定数の整数です。 - スレーブは無限ループを実行し、マスターからのメッセージを「リッスン」します。メッセージを受信すると、受信確認をマスターに送り返します。
実装:
スレーブ実行:
マスターが実行されている間:
マスターのコードのより多くのコンテキスト:
出力:
...
コマンドを取る準備ができているスレーブ
マスターが更新を送信しました
スレーブ ireceived UPDATE
スレーブは UPDATE_ACK を送信しました
マスターが UPDATE_ACK を受信しました
コマンドを取る準備ができているスレーブ
...
コマンドを取る準備ができているスレーブ
マスターが更新を送信しました
スレーブ ireceived UPDATE
スレーブは UPDATE_ACK を送信しました
コマンドを取る準備ができているスレーブ
...
問題: マスターが初めて UPDATE メッセージを送信したとき、すべて問題ないように見えます。ただし、2 回目では、マスターは UPDATE_ACK を受信しません。
boost - boost::mpi のエラー コードを解釈する方法は?
boost::mpi エラーコードを理解する方法は? たとえば、エラー コード 834983239 はどういう意味ですか?
boost - シンプルなコードで MPIrun がクラッシュする
MPI を使用して、依存関係のあるプログラムとほぼ同じように動作するコードを生成しようとしています。X がモデル化しようとしているタスクの数 (switch ステートメントのケース数など) よりも大きい多数のプロセッサ (mpirun -np X など) を使用すると、すべて正常に動作します。私のプログラム モデルには、タスクのリスト、各タスクの実行時間、およびタスク間の一連の依存関係があります。次のような MPI コードを生成しました (実際のケースでは、50 から 600 のタスクがあります)。
私はこれをうまくコンパイルしg++ -L/usr/local/lib -lmpi -lmpi_cxx -lboost_serialization -lboost_mpi test.cpp
て実行することができますmpirun -np 4 a.out
ただし、プロセッサの数を超えるケースに達すると、常に例外が発生します。
プロセッサの数を 2 から 3 に増やすと、もう 1 つのケースを正常に実行できることに注意してください。MPIについて理解していないことがあると思います
完全な例外: