转载:http://motioo.blog.163.com/blog/static/117718291200954102830215/
并行计算使用的节点数在开始运行程序时进行指定。 学习了FFT之后,我们知道机器的数目最后和FFT计算的样点数目 N 有一定的关系。为什么使得程序更见 flexible, 有的同学就问,能不能动态的指定计算节点的数目呢? MPI_Comm_spawn 可以达到这样的目的。 Spawn 是产卵,繁殖后代的意思。一个 进程 可以通过这个命令启动多个进程,构成一个子通信组。产卵的进程 称作父CPU。 多个进程 通过同一条 MPI_Comm_Spawn 产生的多个进程构成同一个子进程组。子进程组之间可以互相通信,父进程和子进程也可以通信。 同一进程组间的通信称作 intracommunication, 不同进程组之间的通信称作 intercommunication.
请参考:
http://book.opensourceproject.org.cn/enterprise/cluster/advbeowulf/
在上面的链接上给出的例子 下面一句在我的机器上会报错
MPI_Comm_spawn( "worker", MPI_ARGV_NULL, numworkers,
MPI_INFO_NULL,
0, MPI_COMM_SELF, &workercomm, MPI_ERRCODES_IGNORE );
报错如下:
problem with execution of 01.child on pku-1482: [Errno 2] No such file or directory
原因: MPI_Comm_spawn 的第一个参数 "worker" 是一个可执行文件的名字。可执行文件不在默认搜索路径下,则要指明路径。
解决的方法: 如果 worker 在当前路径下, 改成 "./worker" .