如何使用 MPI_Comm_spawn 在远程节点上启动工作进程?
使用 OpenMPI 1.4.3,我试过这段代码:
MPI_Info info;
MPI_Info_create(&info);
MPI_Info_set(info, "host", "node2");
MPI_Comm intercom;
MPI_Comm_spawn("worker",
MPI_ARGV_NULL,
nprocs,
info,
0,
MPI_COMM_SELF,
&intercom,
MPI_ERRCODES_IGNORE);
但这会失败并显示此错误消息:
-------------------------------------------------- ---------------------- 没有为应用程序分配资源 工人 匹配请求的映射: 验证您是否已使用 --host 或 --hostfile 规范。 -------------------------------------------------- ---------------------- -------------------------------------------------- ---------------------- 一个守护进程(pid 未知)在尝试执行信号 1 时意外死亡 启动所以我们正在中止。 环境可能会报告更多信息(见上文)。 这可能是因为守护进程无法找到所有需要的共享 远程节点上的库。您可以将 LD_LIBRARY_PATH 设置为 远程节点上共享库的位置,这将 自动转发到远程节点。 -------------------------------------------------- ----------------------
如果我用本地机器的名称替换“node2”,那么它工作正常。如果我 ssh 进入 node2 并在那里运行相同的东西(在信息字典中使用“node2”),那么它也可以正常工作。
我不想用 mpirun 启动父进程,所以我只是在寻找一种在远程节点上动态生成进程的方法。这可能吗?