すべては、64 ビット整数を MPI_Bcast する必要があったときに始まりました。MPI はそれを処理する方法がわからないので、次のようにしました。
template<typename T>
inline int BcastObjects(T* pointer,
int count,
int root,
MPI_Comm comm)
{
return MPI_Bcast(pointer,
count * sizeof(*pointer),
MPI_BYTE,
root,
comm);
}
今私はできる:
int64_t i = 0;
BcastObjects(&i, 1, root_rank, some_communicator);
次に、BcastObjects を使用して構造体の配列を送信し始めました。そんなことしていいのかな?
MPI_Datatype に関するマニュアルは、それを行う方法に焦点を当てていますが、なぜそれを行う必要があるかについては説明していません。