MPI を使用してネットワーク経由でオブジェクトを渡すことができるように、コードに単純なシリアル化/逆シリアル化メソッドを実装しようとしています。理想的な世界では、そのために使用Boost.Serialization
しBoost.MPI
ていたでしょうが、アクセスできる一部のクラスターにはインストールされていないため、自分でこれを行うことを検討しています。
私の戦略は、すべてのオブジェクトをオブジェクトにシリアル化し、データ型として使用しstd::stringstream
てメッセージを送信することです。そのような場合、ポインターとメッセージのサイズとして渡します。MPI_Send
MPI_CHAR
std::stringstream::str()::c_str()
std::streaingstream::str()::size()*sizeof(char)
std::stringstream
すべてをオブジェクトにシリアル化する方法を考え出しました。私の逆シリアル化メソッドも、std::stringstream
オブジェクトを受け取り、すべてを逆シリアル化して戻します。std::stringstream
s の配列からオブジェクトを作成し、配列char
からストリームへの余分なコピーを回避する方法がわからないことを除いて、これは正常に機能します。逆シリアル化メソッドを代わりにchar
usingの配列で直接動作するように変更する必要がありますか?memcpy