作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 Stackoverflow 上看到一篇关于使用 mpi 的简单程序的帖子:
在那个程序中,用户试图广播一个长度等于 20 的 char 变量通过使用 MPI_BYTE mpi 类型而不是 MPI_CHAR。
我正在尝试(可能不是很聪明)广播一个整数变量“n”使用 MPI_BYTE 类型:
call MPI_BCAST(n,1,MPI_BYTE,0,MPI_COMM_WORLD,ierr)
但是当我为处理器打印“n”的值时,我得到的只是一个大数字不同于根。
我的问题是什么时候可以使用 MPI_BYTE?
我读到它依赖于机器架构,但我仍然不明白这一点。
问候。
最佳答案
您的问题很容易解决:您对 MPI_BYTE
的使用(几乎)完全没问题,但是您发送的元素大小/数量(在本例中为字节数)是错误的。
根据整数的长度(例如 4 个字节),您必须将第二个参数设置为 4:
call MPI_BCAST(n,4,MPI_BYTE,0,MPI_COMM_WORLD,ierr)
无论您在这里使用 MPI_BYTE
还是 MPI_CHAR
都不重要,因为两者的长度相同(这就像 unsigned char
与 字符
)。但您必须记住,这不适用于不同的架构。
要解决这个问题,请使用正确的类型 (MPI_INTEGER
) 来确保(在幕后)转换,例如从小端到大端:
call MPI_BCAST(n,1,MPI_INTEGER,0,MPI_COMM_WORLD,ierr)
关于c - mpi_byte 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9895431/
我在 Stackoverflow 上看到一篇关于使用 mpi 的简单程序的帖子: Simple MPI Program 在那个程序中,用户试图广播一个长度等于 20 的 char 变量通过使用 MPI
我是一名优秀的程序员,十分优秀!