すべては、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 に関するマニュアルは、それを行う方法に焦点を当てていますが、なぜそれを行う必要があるかについては説明していません。