7

良い一日!

これらのライブラリの違いは何ですか?

私は MPI のドキュメントを読み、asio の経験はほとんどありません。私にとっては、ネットワーク通信のさまざまな実装であり、それ以上のものではありません。

しかし、それぞれが異なる抽象化を導入し(これらの抽象化の同じレベルについてはわかりません)、異なるアプリケーション設計につながります。

あるライブラリまたは別のライブラリをいつ使用する必要がありますか? それぞれの状況で正しい決定を選択するために知っておくべきことは何ですか?

はい、Asio はいくつかのノード (および一般的に非常に一般的なフレームワーク) に適していますが、なぜ MPI はそのようなタスクにあまり適していないのでしょうか? MPI C ライブラリへの依存が限定的だとか、MPI が理解しにくいとか、スケーラビリティについてはどうでしょうか。Asio を使用すると、放送などを実装できますが、一方で MPI は単純なネットワーク アプリケーションを作成することを禁止していません。必要に応じて MPI で Asio 固有のロジックを書き直すのは概念的に難しいですか?

ソケットのような通信についてはどうですか。必須の場合、Asio または他のフレームワークのモジュールにそのような通信をカプセル化し、他の通信に MPI を使用できます。

私にとって、ソケットと MPI 標準は異なるネットワーク サービスであり、単純なクライアント サーバー ペアからいくつかの中程度の計算までの距離が 1 つのステップである現実の世界で何が基本的なのかは明確ではありません。また、MPI は Asio に比べてオーバーヘッドが大きいとは思いません。

悪い質問かもしれませんが、必要なのは ICE (Internet Communications Engine) のようなものだけでしょうか? さまざまな言語がサポートされており、(ZeroC が保証するように) 優れたパフォーマンスがサポートされています。

もちろん、「このライブラリを使用しないでください!」などのドキュメント トピックは見たことがありません。

ある場合はソケット、別の場合は非同期メッセージ、そして最後に重いミドルウェア プラットフォームです。開発のライフサイクルにおける明快さはどこにありますか? 公平な質問ではないかもしれませんが、この動物園を縮小するには、ある程度のポイントが必要です。

4

2 に答える 2

5

各ライブラリはさまざまな問題を解決しますが、実際には重複していません。また、解決しようとしていることや、アプリケーションの通信パターンによっても異なります。Boost.MPIを使用して、数千または数万のノードへのスケーリングなどのスケーラビリティを実現します。基盤となるネットワークアーキテクチャに応じて、MPIは、収集、分散、ブロードキャストなどの集合的な操作にも優れています。

単一のサーバーや一部のクライアントなど、少数のノードのみが必要な場合は、ソケット抽象化レイヤーにBoost.Asioを使用します。何らかの方法でMPIディストリビューションをまだ使用していない場合は、Boost.Asioを使用することをお勧めします。

于 2010-11-07T16:38:34.077 に答える
3

私は両方を使用していませんが、Boost.ASIOは低レベルのネットワーク用の抽象化レイヤーですが、Boost.MPIは分散コンピューティングシステムを作成できるMPI標準を実装しています。

したがって、たとえばソケットのような通信が必要な場合は、ASIOを使用します。分散コンピューティングを実行したい場合、および他の言語で/他のプラットフォーム用に記述されたMPIプログラムと相互運用したい場合は、Boost.MPIを使用してください。

于 2010-11-06T12:45:16.143 に答える