MPI_Datatypeのデータサイズは実行環境に依存しますが、その環境のデータサイズどうなのか? というのを調べる関数が用意されています。 MPI_Type_size(MPI_Datatype datatype, int * size); でsize変数にデータサイズが格納されます。(参考: MPI_Type_size(MPI_Datatype datatype, int *size ) function)
ざっとデータサイズの一覧を表示させるプログラムを作成しました。私の環境での実行結果を下に付け加えています。てか、MPI_DOUBLE_INTなんてタイプがあったんですねぇ。
MPI_CHAR 1 MPI_SHORT 2 MPI_INT 4 MPI_LONG 8 MPI_LONG_LONG 8 MPI_FLOAT 4 MPI_DOUBLE 8 MPI_LONG_DOUBLE 16 MPI_UNSIGNED_CHAR 1 MPI_UNSIGNED_SHORT 2 MPI_UNSIGNED 4 MPI_UNSIGNED_LONG 8 MPI_UNSIGNED_LONG_LONG 8 MPI_INT8_T 1 MPI_INT16_T 2 MPI_INT32_T 4 MPI_INT64_T 8 MPI_UINT8_T 1 MPI_UINT16_T 2 MPI_UINT32_T 4 MPI_UINT64_T 8 MPI_2INT 8 MPI_SHORT_INT 6 MPI_LONG_INT 12 MPI_FLOAT_INT 8 MPI_DOUBLE_INT 12 MPI_LONG_DOUBLE_INT 20