c++ - 带数组的广播函数
问题描述
为什么 Bcast 函数无法正确使用我的数组?我按照下面的例子做了(只是没有数组,而是数字)。
#include <iostream>
#include <mpi.h>
#include <vector>
void test(int rnk) {
int n = 5;
vector<int> array;
array.reserve(n);
if (rnk == 0) {
for (int i = 0; i < n; i++) {
array[i] = i;
}
}
cout << "Process " << rnk << " before Bcast:" << endl;
for (auto x: array) {
cout << x << " ";
}
cout << endl;
MPI_Bcast(&array[0], n, MPI_INT, 0, MPI_COMM_WORLD);
cout << "Process " << rnk << " after Bcast:" << endl;
for (auto x: array) {
cout << x << " ";
}
cout << endl;
}
int main(int argc, char **argv) {
int num, rank;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &num);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
test(rank);
MPI_Finalize();
return 0;
}
结果 - 没有数据的空行:
Process 2 before Bcast:
Process 0 before Bcast:
Process 0 after Bcast:
Process 2 after Bcast:
Process 1 before Bcast:
Process 1 after Bcast:
Process 3 before Bcast:
Process 3 after Bcast:
如果不是一个数组,而是例如 3 个呢?会有尽可能多的 MPI_Bcast 吗?那么需要 MPI_Barrier 吗?
解决方案
推荐阅读
- python - 使用pyEOF教程在python中进行Varimax旋转pca分析不起作用
- ios - Xamarin.iOS (14.14.2.5) 可以与 Xcode(11.3.1) 一起使用吗?
- database - 带有变量的 sqlldr 控制文件文件
- java - Tomcat webapp 未运行
- c++ - C++ MFC:没有使用增强型元文件 (EMF) 绘制文本 - TextOut 函数失败,返回零 0
- dynamoose - Dynamoose TypeScript ValidationException:使用 .get() 时键上的条件数无效
- python - 在 HTML 中遍历 Python 列表中的变量
- python - 检测excel单元格中的文本是否完全可见?
- php - 我的 Lumen 依赖项无法识别 api.php 中的 $router - 未定义变量:路由器
- api - 如何从 GCP DataFusion / CDAP 管道中执行多个 HTTP 调用