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

Is using the -L flag and a addprocs script the more powerful version of -p and --machinefile?

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

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

所以我在看-L <file参数

>julia -h
...
-L, --load Load immediately on all processors
...

所以如果我不使用 -p 或 --machine-file` 标志,那么最初只有一个处理器,所以 所有处理器 只是意味着唯一的处理器。

所以我试了一下

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 个工人。 我做了什么不合理的事吗?这是最好的方法吗?

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

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

我认为没有任何方法可以在命令行上定义额外的拓扑和目录参数,所以您的方法是正确的。