【发布时间】:2019-08-10 16:01:53
【问题描述】:
我正在尝试从我的管理器进程向其他进程广播提升向量,如下所示:
MPI_Bcast(&b, N, MPI_DOUBLE, 0, MPI_COMM_WORLD);
其中 b 定义为:
boost::numeric::ublas::vector<double> b(N);
向量 b 由管理器进程初始化,然后广播到工作进程,但是,如果我将向量 b 打印出来,我仍然会得到所有不是管理器进程的进程的随机结果。我广播不正确吗? (需要明确的是,所有进程都在调用 MPI_Bcast,而不仅仅是管理器进程。)
【问题讨论】:
-
也许是 b.data() 或 &b[0] ?基本上,如果向量的大小是第一个然后是数据,你会得到垃圾。
-
@SeverinPappadeux .data() 不起作用,但是 &b[0] 确实起作用,所以如果你想添加它作为答案,你可以这样做。感谢您的帮助。
-
完成了,去抢吧
标签: c++ boost mpi broadcast openmpi