我很难理解MPI_Scatter的工作原理。我知道基础知识,但不知道如何实现。
我有一个由4个数字组成的向量,应将这些数字发送给所有从属。
std::vector<float> sendValues;
std::vector<float> recieveValues;
int val = 0;
if (world_rank == 0) { //Master
for(int i = 1; i < world_size; ++i){
val = 2*i; //i = the rank of the slave
sendValues.push_back(val);
}
}
MPI_Scatter(&sendValues, 1, MPI_FLOAT, &recieveValues, 1, MPI_FLOAT, 0, MPI_COMM_WORLD);
如果这是正确的方法,我如何使每个从属获得自己的val?我的意思是;
进程1 recv val = 2
进程2 Recv val = 4
等...