MPI は Message Passing Interface ですが、オブジェクトを送信する場合は、MPI_Send の前にシリアル化する必要があります。
MPI は、通信機能を開発者に公開し、それを満たすための多くのインターフェイスを提供します。しかし、なぜ MPI はシリアライゼーションを提供しないのでしょうか?
シリアライゼーションが MPI に属していないことはわかっていますが、シリアライゼーション テクノロジにはまだ最適化する価値があるのでしょうか?
ありがとう!
MPI は Message Passing Interface ですが、オブジェクトを送信する場合は、MPI_Send の前にシリアル化する必要があります。
MPI は、通信機能を開発者に公開し、それを満たすための多くのインターフェイスを提供します。しかし、なぜ MPI はシリアライゼーションを提供しないのでしょうか?
シリアライゼーションが MPI に属していないことはわかっていますが、シリアライゼーション テクノロジにはまだ最適化する価値があるのでしょうか?
ありがとう!
MPI はプラットフォームに依存しないメッセージ パッシングの標準であり、その操作が単純であるほど移植性が高くなります。その単純さのために、ほとんどの MPI ライブラリは異種アーキテクチャをサポートしています。異なる内部データ表現と異なる ABI を持つ 16、32、および 64 ビット マシンの混合クラスターでアプリケーションを実行できます。
C++ オブジェクトのシリアライゼーションは決して単純でも移植可能でもありません。お気に入りの C++ シリアライゼーション ライブラリをいつでも使用でき、MPI メッセージを使用して生成された BLOB を交換できます。MPI には、バイナリ データをそのまま送信するための特別な型さえありますMPI_BYTE
。
さらに、C++ のサポートは、今後の MPI 標準バージョン 3.0 で完全に削除され、C++ プログラマーは代わりに C 関数を使用することが推奨されます。