C++ MPI中变量的可见性
我还在学习MPI,我有一个问题 考虑以下程序。比如说,我声明了几个变量,并在几个过程中使用它们 因此,如果我在MPI_Init之前定义它们(我在这里添加了注释),它们对所有MPI进程都可见吗 如果我在另一个工作进程中使用它们,我必须使用MPI_send显式发送它们还是直接使用它们 如果是这样,它将如何影响程序的性能和数据传输C++ MPI中变量的可见性,c++,c,mpi,C++,C,Mpi,我还在学习MPI,我有一个问题 考虑以下程序。比如说,我声明了几个变量,并在几个过程中使用它们 因此,如果我在MPI_Init之前定义它们(我在这里添加了注释),它们对所有MPI进程都可见吗 如果我在另一个工作进程中使用它们,我必须使用MPI_send显式发送它们还是直接使用它们 如果是这样,它将如何影响程序的性能和数据传输 int main(int argc, char **argv) { //define and initialize some variables //M
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;
}
intmain()
{
int x=5;
int y=6;
MPI_Init(&argc,&argv);
MPI通信等级(MPI通信世界和任务ID);
if(taskid=)cout MPI进程是(通常)的单独实例相同的可执行文件。每个实例都有一个完全独立的内存空间,因此不会与其他实例共享任何变量。只能通过显式发送和接收数据来共享数据。使用您喜爱的搜索引擎查找共享内存和分布式内存并行计算的定义和说明,以及它们的不同我确实知道内存模型,我想知道在MPI_Init之前初始化的所有进程中是否都初始化了相同变量的副本,或者必须显式发送它们,它们没有初始化。无论何时初始化,都必须显式发送它们。