MPI中变量的可见性

时间:2013-12-18 12:48:48

标签: c++ c mpi

我还在学习MPI,我在那里有一个问题。

考虑以下计划。说,我已经声明了很少的变量,我在几个过程中使用它们。

因此,如果我在MPI_Init(我已经发表评论)之前定义它们,它们是否对所有MPI进程都可见?

如果我在另一个工作进程中使用它们,是否必须使用MPI_Send显式发送它们或直接使用它们?

如果是这样,它会如何影响程序的性能和数据传输?

int main(int argc, char **argv) {

    //define and initialize some variables

    //MPI init
    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &taskid);
    MPI_Comm_size(MPI_COMM_WORLD, &numtasks);

    if(taskid==0){
        //master code
    }
    else{
        //worker code
    }
}

如果这些是非常基本的问题,真的很抱歉。提前致谢

1 个答案:

答案 0 :(得分:0)

他们当然是初始化的。重复一遍,在每个进程中执行相同的代码。如果您有以下内容:

int main()
{
int x=5;
int y=6;

MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &taskid);

if(taskid = <whatever>) cout << x << endl;
return 1;
}

无论值如何,此代码都将打印“5”。我相信你确实需要采取高性能马克的建议。