単一のサーバーがあり、2 つのプロセス タイプ A (多数のプロセスが多数のスレッドを処理する) と B (1 つのプロセスが n-cpu の n スレッド) を持っていて、大量の一方向メッセージを A から B に送信したいとします。 . MPI は、以下を使用するカスタム実装よりも優れた実装ですか?
- Unix ドメインソケット
- Windows 名前付きパイプ
- 共有メモリ
1 と 2 に基づいて独自のライブラリを作成することを考えていましたが、共有メモリにはロックが必要になるため、3 の方が優れているかどうかも疑問に思っています。
プロセス A は外部サービスを提供するため、B のリソースの使用と一般的なメッセージ パッシングはできるだけ少ないリソースを消費する必要があり、A はメッセージを送信するときにブロッキングまたは非ブロッキングの両方で実装できます。B のリソース使用量とメッセージ パッシングは、A の使用量に比例してスケーリングする必要があります。
最終的には、マシン間のブロードキャスト機能も必要になります。おそらくプロセスBです。
私の別れの質問は、MPI (特に openMPI) はこれに適したライブラリであり、さまざまなオペレーティング システムで最適なカーネル プリミティブを使用するかどうかです。