使用slurm在集群上使用julia

Apr 1, 2019 00:00 · 524 words · 2 minute read cluster julia Author: Huang weijie

以任务的方式提交julia任务(recommoned)

slurm脚本模板为job.sh

#!/bin/bash 
#SBATCH -J long-time
#SBATCH -p sonmi_2 -N 1 -n 40 

module load julia/1.8.5
echo 'This program is running at'  `hostname`
julia -t 40 ./Operator-j-BLP-v2-applycutoff=1E-6-2023-3-15-V=3-longTime.jl
~      

参数julia -t后面的数字可以julia使用的线程数目(并不是越多越快,具体原因可以参考ITensor文档里面的multithreading一节),数字后紧跟所要运行的.jl文件的文件名!!!注意和matlab不一样,julia要写后缀,否则会出错!!!

将脚本与要执行的.jl文件放在相同文件夹下,运行sbatch ./job.sh即可。

在管理节点使用交互式的模式进行julia运算(only recommend for test)

Step 1

首先使用module load julia/1.8.5 此时,会进入加载julia可执行模块的到路径。

Step 2

julia -t -6 打开repl 模式的julia,可以在这里查看库函数的版本,也可以运行简单的测试程序。

julia 程序输出的slurm不会及时更新问题

建议在运行时间比较长的脚本里面使用println来输出一些量来反馈程序运行进度。 因为在大型运算的脚本中,println的结果会被buffering,也就是被缓存,然后程序结束的时候一次性放出来,所以需要使用flush(stdout),强制julia和repl交流,实时打印出缓存中的内容,然后清空缓存。