Cray mpich有64位整数MPI变量吗?

时间:2016-08-19 22:20:59

标签: 64-bit mpi cray

我正在使用cray-mpich / 7.4.0。当我做的时候

 printf("Size:%d",sizeof(MPI_UINT64_T));

它打印4而不是8.为什么?集群机器肯定是64位。

我在另一个群集上用openmpi / 1.10.2尝试了这个,并打印出8.

2 个答案:

答案 0 :(得分:3)

MPI_UINT64_T的类型为MPI_Datatype。未指定MPI_Datatype的确切实现。对于基于MPICH的MPI实现(例如Cray),它通常是int,而在OpenMPI中它是指向结构的指针。

在任何情况下,printf都会打印sizeof(MPI_Datatype),它与它所代表的类型的实际字节大小无关。

如果要检查系统中的指针(地址)大小是32位还是64位,可以打印sizeof(void*)或任何其他指针类型。

答案 1 :(得分:2)

以前的回答是对的。但你真的应该使用MPI_Type_size

MPI_Type_size(MPI_UINT64_T,&tsize);
fprintf(stderr,"Size:%d, MPI_Type_size:%d\n",sizeof(MPI_UINT64_T),tsize);

显示MPI_Datatype的大小与您真正想知道的内容之间的差异,UINT64类型的大小。

Size:4, MPI_Type_size:8