gpt4 book ai didi

c - mpi_byte 是如何工作的?

转载 作者:太空狗 更新时间:2023-10-29 15:49:14 24 4
gpt4 key购买 nike

我在 Stackoverflow 上看到一篇关于使用 mpi 的简单程序的帖子:

Simple MPI Program

在那个程序中,用户试图广播一个长度等于 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com