問題タブ [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.

0 投票する
3 に答える
1804 参照

c++ - ScalaなどとC/C++/Fortranの性能比較は?

scala などの「最新の」マルチスレッドに特化した言語と、MPI、Posix、さらには Open-MP などの並列ライブラリを使用する C、C++、Fortran などの「古典的な」「低レベル」言語との間のパフォーマンスの信頼できる比較があるかどうか疑問に思います。

リンクや提案は大歓迎です。

0 投票する
4 に答える
2919 参照

multithreading - メッセージパッシング任意のオブジェクトグラフ?

関係するCPUがアドレス空間を共有しないように、Beowulfクラスター全体でいくつかのコードを並列化することを検討しています。外側のループで関数呼び出しを並列化したい。関数呼び出しには「重要な」副作用はありません(ただし、乱数ジェネレーターを使用したり、メモリを割り当てたりします)。

私はMPIのようなライブラリを見てきましたが、問題は、ノード間で複雑なオブジェクトグラフを渡すのが非常に簡単ではないように見えることです。私の関数への入力は、非常に複雑なオブジェクトグラフを指すthisポインターです。私の関数の戻り値は、別の複雑なオブジェクトグラフです。

言語に依存しないレベルで(私はDプログラミング言語で作業しており、ここで利用できるソリューションはほぼ確実ですが、作成するつもりです)、複雑なパスを通過する「典型的な」方法はありますかノード間の状態は処理されますか?理想的には、状態がどのようにコピーされるかの詳細を完全に抽象化し、呼び出しを通常の関数呼び出しのように見せたいと思います。問題の並列処理のレベルは非常に粗く、おそらく問題にならないため、ネットワークを介してこれだけの状態をコピーすることが特に効率的でないことは気にしません。

編集:複雑な状態を渡す簡単な方法がない場合、メッセージパッシングは通常どのように使用されますか?ネットワークを介したデータのコピーには粗粒度の並列処理が必要なように思えますが、粗粒度の並列処理では通常、1つの作業単位で多くの作業を実行できるように、複雑な状態を渡す必要があります。

0 投票する
2 に答える
522 参照

c++ - mpiを使用して送信するためのクラスでのc ++変数の初期化

私はプログラミングの仕事に行き詰まりました。stl ベクトルの要素を

MPI_Send() ルーチンで送信するための連続したメモリ。

以下に例を示します。

シリアル メモリを持つベクトルを取得するにはどうすればよいですか?

ありがとう。よろしくお願いいたします。

SRec

0 投票する
1 に答える
11365 参照

mpi - MPI_Bcastの対応受信ルーチン

ブロードキャスト ルーチン MPI_Bcast の対応する MPI 受信ルーチンは何でしょうか。

つまり、1 つのプロセッサがメッセージをグループにブロードキャストします。たとえば、全世界にメッセージを送信します。これらのプロセスでメッセージを受信するにはどうすればよいでしょうか?

ありがとうございました。

よろしく

SRec

0 投票する
1 に答える
1689 参照

arrays - C で malloc と MPI に問題はありますか?

申し訳ありませんが、ソースコードを投稿できません...

GS ソルバーのマスター/スレーブ赤黒アルゴリズムを実行するコードがあります。単純なケースでは、行列は 4 つの均等なサイズの計算ピースに分割されます。画像 1 ~ 3 は計算の一部を実行し、結果を含むバッファーを画像 0 に送り返します。問題は次のとおりです。

個々の結果を単一のグリッドにマップできるように、すべてのピースを保持するのに十分な大きさの配列を malloc しました。問題は、イメージ 0 で、MPI_Recv 呼び出しの後、そのプロセスがグリッドが全体を保持するために malloc されたことを認識していないことです。そのグリッドに何かを配置しようとすると、エラーが発生します。私が見つけた唯一の回避策は、すべてのプロセスで malloc を実行し、MPI_Recv の直前のプロセス 0 に対しても malloc を実行することです。

以前に割り当てられたメモリへの参照が失われているように見える理由はありますか?

擬似コード:

事前に助けてくれてありがとう

0 投票する
1 に答える
3120 参照

sorting - MPI_CARTを使用してプロセスをHypercubeにマッピングする方法

2^nプロセッサ用のMPIを使用してバイトニックソートを実装しようとしています。

便宜上、n次元の超立方体を使用したいと思います。MPI_Cart_Createを使用して、自己組織化ディメンションを作成できます。そうすることで、プロセスの効率が最大化され、それを実行するために吐き出さなければならないLOCの数も減ります。

グーグルと文学は常に同じことを伝えます:

n次元の超立方体は、座標方向ごとに2つのプロセスを持つn次元のトーラスであることに注意してください。したがって、ハイパーキューブ構造の特別なサポートは必要ありません。

単一の例を見たことがありません+座標方向ごとに2つのプロセスを持つn次元トーラスは、私には謎に過ぎないようです。誰かが提案する必要がありますか?

ありがとう、

0 投票する
1 に答える
664 参照

arrays - より大きな 2D マトリックスから 2D サブマトリックスを抽出する MPI コードは何ですか?

より大きな 2-D サブマトリックスから 2D サブマトリックスを抽出する最良の方法を探しています。あれは。各エッジに 1 つのゴースト ポイントを持つ行列がある場合、内部行列を抽出したいと考えています。したがって、マトリックスがマトリックス [NX+2][NY+2] として定義されている場合、マトリックス [1][1] からマトリックス [NX+1][NY+1] に移動するサブマトリックスを抽出するにはどうすればよいですか?

MPI_Type_vector を使用してこれを行いたいと考えていますが、適切なストライド、ブロック長などで定義する方法が正確にはわかりません。MPI_Send と MPI_Recv を使用して、その新しい MPI_Datatype を別のプロセッサに送信したいと考えています。受信側プロセッサのバッファのサイズは [NX][NY] になります。ありがとうございます

0 投票する
4 に答える
3989 参照

c - MPI_Send と MPI_Recv のオーバーヘッド

そのため、C コードで MPI を使用してプロセッサ間で情報を送受信する際の通信オーバーヘッドを把握しようとしています。

送信と受信の両方でバッファを渡す必要がありますが、やりたいことは、2 つのプロセッサ間の通信にかかる時間を計ることだけです。

ここに私のコード全体があります:

いくつかのテストを行ったところ、for ループを取り出すと、思いどおりに動作することがわかりました。では、無限ループまたはセグ フォールトのいずれかを引き起こす for ループの何が問題なのでしょうか?

0 投票する
2 に答える
606 参照

network-programming - 分散アプリケーションの場合、ASIO と MPI のどちらを使用しますか?

私はこれについて少し混乱しています。場合によっては並列操作を実行する可能性のある分散アプリケーションを構築している場合 (必ずしも数学的ではありませんが)、ASIO や MPI などを使用する必要がありますか? MPI は ASIO よりも高いレベルにあると思いますが、スタックのどこから始まるかは明確ではありません。