std :: vector的mpi_send/recv不匹配
MPI_Send/Recv of std::vector not matching
我不明白为什么此代码在收到的向量上打印0而不是1,我做错了吗?
通信工作起作用,但它只是打印五个零,而不是四个零和一个。
int main(int arg, char** argvs) {
int rank, numOfProcess;
MPI_Init(&arg, &argvs);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &numOfProcess);
MPI_Status status;
if (rank == 0) {
vector<int> prova(5);
prova.push_back(1);
MPI_Send(prova.data(), 5, MPI_INT, 1, 0, MPI_COMM_WORLD);
}
if (rank == 1) {
vector<int> rec(5);
MPI_Recv(rec.data(), 5, MPI_INT, 0, 0, MPI_COMM_WORLD, &status);
cout << rec.back() << endl;
}
MPI_Finalize();
return 0;
}
您的push_back将向量的长度增加一个。因此,您正在传达两个小矢量。
#include <mpi.h>
#include <iostream>
#include <vector>
using namespace std;
int main(int arg, char** argvs) {
int rank, numOfProcess;
MPI_Init(&arg, &argvs);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &numOfProcess);
MPI_Status status;
if (rank == 0) {
std::vector<int> prova(5);
prova.push_back(1);
MPI_Send(prova.data(), 6, MPI_INT, 1, 0, MPI_COMM_WORLD);
}
if (rank == 1) {
std::vector<int> rec(6);
MPI_Recv(rec.data(), 6, MPI_INT, 0, 0, MPI_COMM_WORLD, &status);
cout << rec.back() << endl;
}
MPI_Finalize();
return 0;
}
相关文章:
- Qt SQLite没有查询或参数计数不匹配
- 模板参数推导失败,函数参数/参数不匹配
- 在使用累加时,C++中的运算符+不匹配
- C++ 与操作员不匹配<<
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 与'operator='不匹配(操作数类型'String'且"void")
- C++模板/别名 - 模板参数列表中参数 1 处的类型/值不匹配
- C4018:类内有符号、无符号不匹配
- 我在 .h 中有一个枚举类,并且在.cpp错误中有一个运算符重载:与"运算符<<不匹配
- 为什么我收到错误:"运算符<<不匹配?
- RE2 不匹配非 ASCII 字符
- 函数签名与调用的函数不匹配,常量字符[]和字符*之间的区别?
- 模板推导:为什么函数指针模板定义在常量和/或引用时不匹配?
- 错误:"模板<类_Tp,类_Dp>类 std::unique_ptr"的模板参数列表中参数 1 的类型/值不匹配
- OpenSSL fips in C++ wrapper Library 如何?错误:指纹不匹配
- 为什么我的数组值与此处的全局变量不匹配?
- 引号之间匹配/不匹配,带有不可避免的引号和多行
- 映射迭代器与运算符不匹配
- C++调用和定义不匹配
- std :: vector的mpi_send/recv不匹配