2017-02-09 90 views
1

我想知道是否有必要在所有进程都有需要的数据时,例如,MPI_Comm_spawn被调用。调用MPI_Comm_spawn时,所有进程是否需要所有数据?

当调用这个函数时,根进程被定义为驱动操作,显然,这个等级必须给该函数提供适当的参数。即:

MPI_Comm_spawn("./a.out", &argvs, maxprocs, info, 0, MPI_COMM_WORLD, &intercomm, MPI_ERRCODES_IGNORE); 

如果我们知道等级0为根,做其他的进程需要设置的变量:argvs,和的MaxProcs信息?或者是否有足够的信息在的等级0

回答

3

否,这似乎从文档清楚:
MPI_Comm_spawn
其中

的argv:参数命令(字符串数组,仅在显著)
的MaxProcs:启动进程的最大数量(整数,有效 只在
信息: 一组告诉运行时系统在哪里以及如何启动键值对的过程(处理,只在

所以显著根据我对文档的理解,“其他”过程不需要设置上述过程。
只要记住这是一个集体电话。

3

尽管MPI_Comm_spawn的前四个参数只对指定的根进程有效,通信器中的所有进程都必须进行调用。因此,他们通过由MPI_Comm_spawn返回的互通器获得与儿童工作沟通的能力。如果你并不需要在初始工作各级能够与孩子的工作沟通,但只有根级别,你可以使用MPI_COMM_SELF,而不是MPI_COMM_WORLD

int rank; 

MPI_Comm_rank(MPI_COMM_WORLD, &rank); 
if (rank == 0) { 
    MPI_Comm_spawn("./a.out", args, maxprocs, info, 0, MPI_COMM_SELF, 
        &intercomm, MPI_ERRCODES_IGNORE); 
} 
相关问题