我还在学习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
}
}
如果这些是非常基本的问题,真的很抱歉。提前致谢
答案 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”。我相信你确实需要采取高性能马克的建议。