2016-08-19 30 views
2

我正在使用cray-mpich/7.4.0。當我做Cray mpich是否有64位整數MPI變量?

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

它打印4而不是8.爲什麼?羣集機器肯定是64位。

我已經另一個羣集與了openmpi/1.10.2嘗試這樣做,一個打印8.

回答

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 
3

MPI_UINT64_TMPI_Datatype類型。未指定MPI_Datatype的確切實施。對於基於MPICH的MPI實現(例如Cray's),通常是int,而在OpenMPI中則是指向結構的指針。

在任何情況下,您的printf將打印sizeof(MPI_Datatype),它與它所代表的類型的實際字節大小無關。

如果要檢查系統中的指針(地址)大小是32位還是64位,則可以打印sizeof(void*)或任何其他指針類型。

+0

這是正確的。您可以在與您的實現相關的mpi.h文件中看到MPI_UINT64_T的值。 – kraffenetti