【发布时间】:2015-12-15 05:10:32
【问题描述】:
我想在 Armadllio 向量上执行MPI_Allreduce operation,但我得到 0 输出。本质上,我每个处理器都有 arma 向量 v。使用 MPI_Allreduce,我想将所有向量添加到 w 中。我不确定是否必须添加一些同步。下面是我的代码。
#include <iostream>
#include <stdlib.h>
#include <mpi.h>
#include <math.h>
#include <assert.h>
#include<armadillo>
using namespace std;
using namespace arma;
int main(int argc, char** argv) {
MPI_Init(NULL, NULL);
int world_rank;
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
int world_size;
MPI_Comm_size(MPI_COMM_WORLD, &world_size);
vec v(2,fill::randu);
vec w(2,fill::zeros);
MPI_Allreduce(&w, &v, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
if(world_rank==0)
cout<<"w: "<<w<<endl;
MPI_Finalize();
}
我的输出:
w: 0
0
【问题讨论】: