簡體   English   中英

在 slurm 中運行並行作業

[英]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_cpusbatch中,只有--mem 所以srun命令仍然會分配所有內存並阻塞后續步驟。 對我來說,關鍵是srun命令中指定--mem_per_cpu (或--mem )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM