使用 -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 对你来说是可能的,所以默认的集群管理器就足够了。
我认为没有任何方法可以在命令行上定义额外的拓扑和目录参数,所以您的方法是正确的。
因此,我对我的工作进程有一组中等复杂的要求。 我想使用主从拓扑和非默认工作目录。 我也想混合使用本地和远程工作人员。
据我所知,准备 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 对你来说是可能的,所以默认的集群管理器就足够了。
我认为没有任何方法可以在命令行上定义额外的拓扑和目录参数,所以您的方法是正确的。