MPI 中变量的可见性

Visibility of variables in MPI

本文关键字:可见性 变量 MPI      更新时间:2023-10-16

我还在学习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
    }
}

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

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

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"。我相信你真的需要接受高性能马克的建议。