[英]Running parallel jobs in slurm
我想知道是否可以詢問有關並行運行 slurm 作業的問題。(請注意,我是 slurm 和 linux 的新手,兩天前才開始使用它......)
根據下圖中的說明(來源: https ://hpc.nmsu.edu/discovery/slurm/serial-parallel-jobs/),
我設計了以下 bash 腳本
#!/bin/bash
#SBATCH --job-name fmriGLM #job name을 다르게 하기 위해서
#SBATCH --nodes=1
#SBATCH -t 16:00:00 # Time for running job
#SBATCH -o /scratch/connectome/dyhan316/fmri_preprocessing/FINAL_loop_over_all/output_fmri_glm.o%j #%j : job id 가 [>
#SBATCH -e /scratch/connectome/dyhan316/fmri_preprocessing/FINAL_loop_over_all/error_fmri_glm.e%j
pwd; hostname; date
#SBATCH --ntasks=30
#SBATCH --mem-per-cpu=3000MB
#SBATCH --cpus-per-task=1
for num in {0..29}
do
srun --ntasks=1 python FINAL_ARGPARSE_RUN.py --n_division 30 --start_num ${num} &
done
wait
的,我運行sbatch如下: sbatch test_bash
但是,當我查看輸出時,很明顯 bash 腳本中只有一個sruns
正在執行......誰能告訴我哪里出了問題以及如何解決它?
**更新:當我查看錯誤文件時,我得到以下信息: srun: Job 43969 step creation temporarily disabled, retrying
。 我搜索了互聯網,它說這可能是由於沒有指定內存,因此沒有足夠的內存來做第二份工作。但我認為我在做--mem_per_cpu=300MB
時已經指定了內存?
**更新:我已嘗試按照此處所述更改代碼: 為什么我的 slurm 作業步驟未並行啟動? ,但是..仍然沒有用
**潛在相關信息:我們的節點大約有 96 個核心,與說一個節點有 4 個核心或其他東西的教程相比,這似乎很奇怪
謝謝!!
嘗試將--exclusive
添加到srun
命令行:
srun --exclusive --ntasks=1 python FINAL_ARGPARSE_RUN.py --n_division 30 --start_num ${num} &
這將指示srun
使用子分配並按您的預期工作。
請注意, --exclusive
選項在此上下文中的含義與與sbatch
使用時的含義不同。
另請注意,不同版本的 Slurm 有不同的規范方式來執行此操作,但使用--exclusive
應該適用於大多數版本。
即使您已經解決了您的問題,結果證明是其他問題,並且您已經在您的sbatch
腳本中指定--mem_per_cpu=300MB
,但我想在我的情況下補充一點,我的 Slurm 設置不允許--mem_per_cpu
在sbatch
中,只有--mem
。 所以srun
命令仍然會分配所有內存並阻塞后續步驟。 對我來說,關鍵是在srun
命令中指定--mem_per_cpu
(或--mem
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.