【发布时间】:2026-01-05 10:45:01
【问题描述】:
我已经设置了一个包含 2 个 int 向量的向量,现在我想通过 OpenMPI 发送和接收它,以便我可以在从节点上对这个结构进行计算。如果可能的话,我想一次性发送这个庞大的结构......
在 main 上,我已经声明了我的向量,并使其在发送方和接收方都通用:
std::vector < std::vector<int> > temp;
在发送端,我已经填充了这个结构,后来我尝试发送它:
MPI_Send(&temp[0], 2, MPI_INT, 1, 0, MPI_COMM_WORLD);
而且,在接收端,我一直在执行:
temp.resize(2);
MPI_Recv(&temp[0], 2, MPI_INT, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
但是,一旦我尝试访问收到的项目,接收方就会抛出一个段错误,所以我一定做错了什么。我的问题是这种方法有什么问题,或者如果有更有效的方法可以做到这一点甚至更好!?
此外,我不喜欢使用 boost,这样我可以更好地掌握这个级别的情况。
【问题讨论】: