저는 cray-mpich/7.4.0을 사용하고 있습니다. 내가 할 때Cray mpich에는 64 비트 정수형 MPI 변수가 있습니까?
printf("Size:%d",sizeof(MPI_UINT64_T));
8 대신 8이 인쇄됩니다. 왜 그런가요? 클러스터 컴퓨터는 확실히 64 비트입니다.
나는 다른 클러스터에하는 openmpi/1.10.2와 함께이 시도하고 그
저는 cray-mpich/7.4.0을 사용하고 있습니다. 내가 할 때Cray mpich에는 64 비트 정수형 MPI 변수가 있습니까?
printf("Size:%d",sizeof(MPI_UINT64_T));
8 대신 8이 인쇄됩니다. 왜 그런가요? 클러스터 컴퓨터는 확실히 64 비트입니다.
나는 다른 클러스터에하는 openmpi/1.10.2와 함께이 시도하고 그
이전 대답은 맞습니다. 하지만 실제로는 MPI_Type_size
을 사용해야합니다. 하여 MPI_Datatype
의 크기와 당신이 정말의 UINT64
유형의 크기를 알고 자 사이의 차이를 보여줍니다
MPI_Type_size(MPI_UINT64_T,&tsize);
fprintf(stderr,"Size:%d, MPI_Type_size:%d\n",sizeof(MPI_UINT64_T),tsize);
.
Size:4, MPI_Type_size:8
MPI_UINT64_T
8. 유형 MPI_Datatype
이다 인쇄합니다. MPI_Datatype
의 정확한 구현은 지정되지 않습니다. MPICH 기반의 MPI 구현 (예 : Cray)의 경우, 보통은 int
이지만 OpenMPI에서는 구조체에 대한 포인터입니다.
어쨌든 printf는 sizeof(MPI_Datatype)
을 인쇄합니다.이 값은 그것이 나타내는 유형의 실제 바이트 크기와 관련이 없습니다.
시스템의 포인터 (주소) 크기가 32 또는 64 비트인지 확인하려면 sizeof(void*)
또는 다른 포인터 유형을 인쇄 할 수 있습니다.
이것은 맞습니다. 구현과 관련된'mpi.h' 파일에서'MPI_UINT64_T'의 값을 볼 수 있습니다. – kraffenetti