使用-L标志和addprocs脚本是更强大的-p和--machinefile版本吗?

时间:2016-05-16 09:06:21

标签: julia distributed-computing compiler-flags

所以我对我的工作流程有一套中等复杂的要求。 我想使用主从拓扑和非默认工作目录。 我也想混合本地和远程工作人员。

据我所知,准备documentation--machine-file部分。 它不会让我这样做。

所以我正在查看-L <file参数

  

&gt; julia -h
  ...
   -L, - load立即加载所有处理器
  ...

因此,如果我不使用-p或--machine-file`标志,那么最初只有一个处理器,因此所有处理器只是在唯一的处理器上。< / p>

所以我试了一下

start_workers.jl

addprocs([
          ("cluster_c4_1",:auto),
          ("cluster_c4_2",:auto)
    ],
        dir="/mnt/",
        topology=:master_slave
        )

addprocs(
        dir="/mnt/",
        topology=:master_slave
        )

test.jl

println("*************")
println(workers())
println("-------------")

运行它:

>julia -L start_workers.jl pl.jl 
*************
[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]
-------------

所以它看起来很好,得到了我的20名工人。 我做了什么不合理的事吗?这是最好的方式吗?

1 个答案:

答案 0 :(得分:1)

这正是我在Torque调度程序下将其部署在HPC集群上的方式。事实上,我正在重新编写集群管理器,以便在通过Torque调度系统添加进程时支持更多选项,所以我花了很多时间来研究这个问题。

您可能还想知道有各种ClusterManagers Pkg.add("ClusterManagers")可以在各种环境下扩展addprocs的功能,例如当您需要从调度程序请求资源时。看起来无密码ssh是可行的,因此默认的集群管理器就足够了。

我不相信在命令行上有任何定义额外拓扑和目录参数的方法,因此您的方法是正确的。