加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – mpi_byte是如何工作的?

发布时间:2020-12-16 10:21:39 所属栏目:百科 来源:网络整理
导读:我在Stackoverflow上看到一篇关于mpi的简单程序的帖子: Simple MPI Program 在该程序中,用户试图广播一个等于20的char变量长度 使用MPI_BYTE mpi-type代替MPI_CHAR. 我试图(可能不是很聪明)广泛转换整数变量“n” 使用MPI_BYTE类型: call MPI_BCAST(n,1,MP
我在Stackoverflow上看到一篇关于mpi的简单程序的帖子:

Simple MPI Program

在该程序中,用户试图广播一个等于20的char变量长度
使用MPI_BYTE mpi-type代替MPI_CHAR.

我试图(可能不是很聪明)广泛转换整数变量“n”
使用MPI_BYTE类型:

call MPI_BCAST(n,1,MPI_BYTE,MPI_COMM_WORLD,ierr)

但是当我为处理器打印“n”的值时,我得到了一个很大的数字
不同于根.

我的问题是我什么时候可以使用MPI_BYTE?

我已经读到它依赖于机器架构,但我仍然没有明白这一点.

问候.

解决方法

您的问题很容易解决:您对MPI_BYTE的使用(几乎)完全正常,但是要发送的元素大小/数量(在这种情况下:字节数)是错误的.

根据整数的长度(例如4个字节),您必须将第二个参数设置为4:

call MPI_BCAST(n,4,ierr)

无论你在这里使用MPI_BYTE还是MPI_CHAR都没关系,因为它们的长度都相同(这就像unsigned char与char一样).但是你必须记住,这在不同的架构之间不起作用.

要解决此问题,请使用正确的类型(MPI_INTEGER)来确保(幕后)转换,例如从little endian到big endian:

call MPI_BCAST(n,MPI_INTEGER,ierr)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读