在MPI初始化中查询

时间:2014-02-23 14:05:26

标签: mpi openmpi

如果我们调用MPI_Init(),我们知道同一个可执行文件的多个副本在不同的机器上运行。假设MPI_Init()在函数f()中,那么main()函数的多个副本是否也存在?

我面临的主要问题是接受输入实际上,正在发生的事情是输入一次,但主要功能运行了几次排名为0的处理器似乎总是有输入,其余的都有随机值。那么要发送值,我们是否必须将处理器0的输入广播到所有其他处理器?

1 个答案:

答案 0 :(得分:4)

MPI_Init()不会创建多个副本,它只是初始化进程内MPI库。在之前创建了多个流程副本,很可能是使用某种mpirun命令(这就是你运行MPI应用程序的方式)。所有流程都从一开始就是独立的,所以回答问题的第一部分 - 是的,main()的多个副本将存在,即使你没有调用MPI_Init它们也会存在。

关于输入的问题的答案取决于输入的性质:如果从控制台输入,则必须仅在一个进程(例如,等级0)中输入值,然后广播它们。如果输入在某个文件中或指定为命令行参数,则所有进程都可以访问它们。