c – mpi_byte是如何工作的?

c – mpi_byte是如何工作的?,第1张

概述我在Stackoverflow上看到一篇关于mpi的简单程序的帖子: Simple MPI Program 在该程序中,用户试图广播一个等于20的char变量长度 使用MPI_BYTE mpi-type代替MPI_CHAR. 我试图(可能不是很聪明)广泛转换整数变量“n” 使用MPI_BYTE类型: call MPI_BCAST(n,1,MPI_BYTE,0,MPI_COMM_WORLD,ierr 我在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)
总结

以上是内存溢出为你收集整理的c – mpi_byte是如何工作的?全部内容,希望文章能够帮你解决c – mpi_byte是如何工作的?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1219556.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存