我正在尝试了解openmpi / mpirun如何处理与外部程序关联的脚本文件,这里是一个R进程(doMPI / Rmpi)
我无法想象在运行类似的东西之前我必须在每台主机上复制我的脚本:
mpirun --prefix /home/randy/openmpi -H clust1,clust2 -n 32 R --slave -f file.R
但是,显然直到我在群集上复制脚本'file.R'然后运行mpirun才能工作。然后,当我这样做时,结果写在集群上,但我希望它们将返回到localhost的工作目录。
是否有另一种方法可以将R作业从localhost发送到多个主机,包括要评估的脚本?
谢谢!
答案 0 :(得分:1)
我不认为mpirun不知道如何为诸如“R”之类的命令指定脚本的细节,但mpirun的Open MPI版本确实包含--preload-files
选项来帮助情况:
--preload-files <files>
Preload the comma separated list of files to the current working
directory of the remote machines where processes will be
launched prior to starting those processes.
不幸的是,我无法让它工作,这可能是因为我误解了一些东西,但我怀疑它没有经过充分测试,因为很少使用该选项,因为在没有分布式文件的情况下进行并行计算是非常痛苦的系统
如果--preload-files
对您不起作用,我建议您编写一个重复调用scp的小脚本,将脚本复制到群集节点。有一些实用程序可以做到这一点,但似乎没有一个常见或流行,我再次认为是因为大多数人更喜欢使用分布式文件系统。另一种选择是设置sshfs文件系统。