gpt4 book ai didi

c++ - MPI如何使在根进程中初始化的变量在其他进程中可见

转载 作者:太空宇宙 更新时间:2023-11-04 13:20:45 27 4
gpt4 key购买 nike

我有几个初始化数组 a0 的测试方法,但每个方法的数组大小不同。这些数组在进程 rank==0 中初始化。现在在其他文件中,我有一个方法的实现,该方法使用该表中的值进行一些计算(它不修改它们)。它看起来有点像这样(伪代码):

res=0;
x=0;
for(i=mystart;i<myend;++i)
for(j=0;j<length;++j)
x+= a[j] * multiplier;

MPI_Reduce(&x,&res,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD);

我有一个要求,即这些计算只能由 root 以外的进程处理,但由于它们看不到 a[] 持有什么值,所以它不起作用。我尝试了 MPI_Bcast(a, ?, MPI_DOUBLE, 0, MPI_COMM_WORLD),但我无法获得大小的值,因为它随每个方法调用而不同。整个代码有点大,但如果有人想看一下,我可以在某个地方发布它......

是否有一种简单的方法可以使这些字段对其他进程可见?

编辑:按照建议我上传了代码:主要功能:http://pastebin.com/tREeHMZM计算和类声明的方法:http://pastebin.com/BBedJ7bA

划分循环工作正常,只是那些不起作用,我不确定如何让这些进程相互通信。

最佳答案

为什么不首先广播要广播的数组的大小?

关于c++ - MPI如何使在根进程中初始化的变量在其他进程中可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35399167/

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