首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cray mpich有64位整型MPI变量吗?

Cray mpich有64位整型MPI变量吗?
EN

Stack Overflow用户
提问于 2016-08-20 06:20:59
回答 2查看 340关注 0票数 3

我使用的是cray-mpich/7.4.0。当我这样做的时候

代码语言:javascript
复制
 printf("Size:%d",sizeof(MPI_UINT64_T));

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

我在另一个集群上尝试过openmpi/1.10.2,结果打印了8。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-21 06:49:11

之前的答案是正确的。但是你真的应该使用MPI_Type_size

代码语言:javascript
复制
MPI_Type_size(MPI_UINT64_T,&tsize);
fprintf(stderr,"Size:%d, MPI_Type_size:%d\n",sizeof(MPI_UINT64_T),tsize);

它显示了MPI_Datatype的大小和您真正想知道的UINT64类型的大小之间的差异。

代码语言:javascript
复制
Size:4, MPI_Type_size:8
票数 2
EN

Stack Overflow用户

发布于 2016-08-20 17:59:53

MPI_UINT64_T的类型为MPI_Datatype。没有指定MPI_Datatype的确切实现。对于基于MPICH的MPI实现(比如Cray的),它的s通常是一个结构,而在OpenMPI中它是一个指向结构的指针。

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39048436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档