2016-08-19 3 views

답변

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 
3

MPI_UINT64_T 8. 유형 MPI_Datatype이다 인쇄합니다. MPI_Datatype의 정확한 구현은 지정되지 않습니다. MPICH 기반의 MPI 구현 (예 : Cray)의 경우, 보통은 int이지만 OpenMPI에서는 구조체에 대한 포인터입니다.

어쨌든 printf는 sizeof(MPI_Datatype)을 인쇄합니다.이 값은 그것이 나타내는 유형의 실제 바이트 크기와 관련이 없습니다.

시스템의 포인터 (주소) 크기가 32 또는 64 비트인지 확인하려면 sizeof(void*) 또는 다른 포인터 유형을 인쇄 할 수 있습니다.

+0

이것은 맞습니다. 구현과 관련된'mpi.h' 파일에서'MPI_UINT64_T'의 값을 볼 수 있습니다. – kraffenetti