我正在共享群集上运行一些作业,而且我一直尝试使用多个节点。虽然使用julia -p #processors
适用于一个节点上的核心,但它找不到其他节点。
群集正在使用SGE,我尝试了很多不同的方法来使节点工作,但只有一个工作。在Julia中有一种简单的方法可以用julia -mpi 32
或类似的方式启动Julia吗?
使用
using ClusterManagers
println(nworkers(),nprocs(),Sys.CPU_CORES)
ClusterManagers.addprocs_sge(16)
ClusterManagers.addprocs_sge(15)
println(nworkers(),nprocs(),Sys.CPU_CORES)
不起作用(我已经提交了一份保留2个节点的作业,每个节点在SGE上各有16个核心),作业的输出文件为空,而我得到16个不同的输出文件julia-70755.o8252776.*
{{ 1}}使用以下文字:
(* = 1...16)
使用julia_worker:9009#192.168.17.206
Master process (id 1) could not connect within 60.0 seconds.
exiting.
启动Julia也失败了:
julia --machinefile $PE_HOSTFILE
我被建议使用 MPI.jl 包,但我并不认为它真的支持julia并行语法,就像我使用它一样只需在我希望并行运行的for循环之前编写@sync @parallel(即Metropolis-Montecarlo)。
答案 0 :(得分:2)
IT团队回复我并告诉我SGE不允许无密码ssh,这就是为什么addprocs_sge()
不起作用的原因。然而,他们现在为我可以传递给Julia的工作添加了一个文件,并告诉我用这个脚本运行这个工作:
qlogin -pe mpi_28_tasks_per_node 56
module load julia/0.5.1
julia --machinefile $TMPDIR/machines
计算机文件如下所示:
::::::::::::::
/scratch/8548498.1.u/machines
::::::::::::::
{hostname1}
{hostname1}
...
{hostname2}
{hostname2}
答案 1 :(得分:0)
您可能希望阅读关于并行计算的julia文档,其中有关于集群管理器的部分。另外,请查看支持SGE的ClusterManagers.jl:
julia> using ClusterManagers
julia> ClusterMangers.addprocs_sge(5)