Boost.MPI で提供されるような MPI 機能のスケルトンとコンテンツの実装にどのような利点があるのか疑問に思っています。私が理解している限り、スケルトンとコンテンツのアプローチは、メッセージが任意のタイプの固定サイズであり、このメッセージを異なるコンテンツで数回送信する必要がある場合にのみ有益です。
したがって、skeleton&content は次の場合には機能しません。
std::list<int> l;
// Exchange Skeleton mpi::skeleton(l)
// Send Content mpi::content(l) (but modify the size of the list, so sending once 10 element and in the next time 2 elements, for example)
Boost は、データをシリアル化し、反対側で逆シリアル化することによってコンテンツを送信します。(MPI_BYTE型のデータを送信し、フラグでエンディアンを処理すると思いますか?)
2 つの質問:
- シリアライズ可能なタイプ (シリアライゼーション ラッパー オブジェクトの場合もあります) のスケルトンを送信する必要がある理由: スケルトンを必要とせずに、受信したデータをデシリアライズするだけでなく (デシリアライゼーションを提供する同じシリアライゼーション ラッパーが与えられた場合)、ブーストできますか?
したがって、skelton&content アプローチは、リストなどの動的サイズを後続の呼び出しで再度シリアル化する必要がないという意味で有益です。したがって、本当の利点は、シリアル化されたメッセージ (コンテンツの送信) がスケルトンとコンテンツのアプローチで小さくなることです。メッセージが数回送信される場合、これは有益です。
結論として、メッセージが非常に動的 (形状が変化する) で、メッセージが 1 つしか送信されない場合は、スケルトンとコンテンツを適用しないでください。
あれは正しいですか?