問題タブ [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.
mpi - Boost.MPIの問題
私はHPCに取り組んでいます。その HPC には古いバージョンの Boost がインストールされており、Boost ライブラリには Boost.MPI がありません。管理者に HPC へのインストールを依頼しました。しかし、彼らは私にそれを私のホームディレクトリにインストールするように要求しました。だから私は自分のホームディレクトリにboostとboost.mpiの両方をインストールしました。Boost ライブラリは正しく動作しているようです。しかし、以下のコマンドで次のコードを実行しようとすると、エラーが発生しました。
テストコード:
ビルド コマンド:
次のエラーが叫んでいます。
どなたかお役に立てれば幸いです。
mpi - PVM(並列仮想マシン)ライブラリはHPCで広く使用されていますか?
誰もがMPI(メッセージパッシングインターフェイス)に移行しましたか、それともPVMはスーパーコンピューターやHPCでまだ広く使用されていますか?
c - GCC パフォーマンス
Beowulf クラスターで MPI を使って並列プログラミングを行っています。シミュレーテッド・アニーリングのための並列アルゴリズムを書きました。それは正常に動作します。シリアル コードよりも 15 倍速い実行が期待されます。ただし、パフォーマンス測定用に異なるデータ セットを使用できるように、さまざまなアーキテクチャとオペレーティング システムでシリアル C コードを実行しました。この Random 関数をコードで使用しました。Windows と ubuntu Linux の両方で GCC を使用しています。Linux では実行に時間がかかることがわかりましたが、その理由はわかりません。誰かが Linux と Windows で gcc を使ってこのコードをコンパイルし、説明してくれませんか。
NUM_ITERATIONS の引数として 100 000 000 を指定して実行すると、Linux では Windows よりも 20 倍遅くなります。デュアル ブート win + ubuntu linux を備えた同じアーキテクチャのマシンでテスト済み。このランダム関数は、データで表示したいもののボトルネックであるため、助けが必要です。
performance - MPI は大量のソフトリアルタイム IPC に適していますか?
単一のサーバーがあり、2 つのプロセス タイプ A (多数のプロセスが多数のスレッドを処理する) と B (1 つのプロセスが n-cpu の n スレッド) を持っていて、大量の一方向メッセージを A から B に送信したいとします。 . MPI は、以下を使用するカスタム実装よりも優れた実装ですか?
- Unix ドメインソケット
- Windows 名前付きパイプ
- 共有メモリ
1 と 2 に基づいて独自のライブラリを作成することを考えていましたが、共有メモリにはロックが必要になるため、3 の方が優れているかどうかも疑問に思っています。
プロセス A は外部サービスを提供するため、B のリソースの使用と一般的なメッセージ パッシングはできるだけ少ないリソースを消費する必要があり、A はメッセージを送信するときにブロッキングまたは非ブロッキングの両方で実装できます。B のリソース使用量とメッセージ パッシングは、A の使用量に比例してスケーリングする必要があります。
最終的には、マシン間のブロードキャスト機能も必要になります。おそらくプロセスBです。
私の別れの質問は、MPI (特に openMPI) はこれに適したライブラリであり、さまざまなオペレーティング システムで最適なカーネル プリミティブを使用するかどうかです。
c++ - 共有メモリ、MPI、およびキューイングシステム
私のunix/windows C ++アプリは、MPIを使用してすでに並列化されています。ジョブはN cpusに分割され、各チャンクは並列で実行され、非常に効率的で、非常に高速なスケーリングで、ジョブは正しく実行されます。
ただし、一部のデータは各プロセスで繰り返され、技術的な理由から、このデータをMPIで簡単に分割することはできません(...)。例えば:
- 5 Gbの静的データ、各プロセスにまったく同じものがロードされます
- MPIで分散できる4Gbのデータは、使用されるCPUが多いほど、このCPUあたりのRAMは小さくなります。
4 CPUジョブでは、これは少なくとも20GbのRAM負荷を意味し、メモリの大部分は「無駄」になります。これはひどいことです。
全体的な負荷を減らすために共有メモリを使用することを考えています。「静的」チャンクは、コンピューターごとに1回だけロードされます。
したがって、主な質問は次のとおりです。
ノード上でメモリを共有するための標準的なMPIの方法はありますか? ある種のすぐに利用できる+無料のライブラリ?
- そうでない場合は、
boost.interprocess
MPI呼び出しを使用して、ローカル共有メモリ識別子を配布します。 - 共有メモリは、各ノードの「ローカルマスター」によって読み取られ、共有読み取り専用になります。変更されないため、セマフォ/同期の種類は必要ありません。
- そうでない場合は、
パフォーマンスの低下や注意すべき特定の問題はありますか?
- (「文字列」や過度に奇妙なデータ構造はありません。すべてを配列と構造ポインターにまとめることができます)
ジョブはPBS(またはSGE)キューイングシステムで実行されます。プロセスがクリーンでない出口の場合、それらがノード固有の共有メモリをクリーンアップするかどうか疑問に思います。
c++ - Windows での Mpi の使用
Windows に mpi をインストールしたので、そのライブラリを使用できます。問題は、私が書くときのWindowsで
コマンドプロンプトに入ると、適切な操作が行われません。4 つの異なるプロセスがコード ファイル全体を個別に使用します。MPI_Init および MPI_Finalize 行でのみ動作する並列プロセスのようには動作しません。この問題を解決するにはどうすればよいですか? Windows で MPI を動作させることは不可能ですか。
Ps: 私は Dev c++ を使用しています
parallel-processing - MPIバッファリングされた送信/受信順序
私はMPIを使用しています(Fortranを使用していますが、質問は特定の言語よりもMPI標準に固有です)。具体的には、バッファーされた送信/受信関数isendおよびirecvを使用しています。ここで、次のシナリオを想像すると、次のようになります。
プロセス0:
プロセス1:
メッセージは送信された順序でプロセス1に配信されますか?つまり、使用されるタグがすべての場合で同じである場合、 in1==stuff1とin2==stuff2を確認できますか?
mpi - MPIバリアC++
WindowsでMPI(MPICH2)を使用したい。私はこのコマンドを書きます:
そして、すべてのグループメンバーが呼び出すまで、すべてのプロセッサをブロックすることを期待しています。しかし、それは起こりません。コードの回路図を追加します。
(2プロセッサの場合:)ルートプロセッサ( )は正しく動作しますが、ランク1のプロセッサは変数を0
認識しないため、の代わりに表示されます。a
-858993460
4
誰か助けてもらえますか?
よろしく
c++ - MPI_Barrier C++ のテスト
MPI_Barrier が正しく動作することを確認するにはどうすればよいですか? そのためのテスト方法は何ですか?
ありがとうございました