2017-05-13 112 views
0

我必須使用sbatch在集羣上運行多個模擬。在一個文件夾,我必須要運行的Python腳本和文件與sbatch使用:如何使用不同的節點向SLURM提交作業?

#!/bin/bash -l 
#SBATCH --time=04:00:00 
#SBATCH --nodes=32 
#SBATCH --ntasks-per-core=1 
#SBATCH --ntasks-per-node=36 
#SBATCH --cpus-per-task=1 
#SBATCH --partition=normal 
#SBATCH --constraint=mc 

module load Python 

source /scratch/.../env/bin/activate 

srun python3 script.py 

deactivate 

我所要做的就是運行相同的Python腳本,但使用不同的值--nodes。我怎樣才能做到這一點?此外,我想創建一個文件夾,用於保存slurm文件的每個運行(輸出),命名爲「nodes_xy」。

回答

1

假設你的腳本名爲submit.sh,您可以從腳本刪除--nodes並運行:

for i in 2 4 8 16 32 64; do sbatch --nodes $i --output nodes_$i.txt, submit.sh; done 

這將提交submit.sh腳本有兩個額外的參數,--nodes--output,第一個控制使用的節點數,第二個用於指定輸出文件的名稱,對於每個值2,4,8等等。請注意,所有輸出文件都將位於當前目錄中,您將需要開發單行有點,如果你真的需要在不同的目錄中。

如果最大允許運行時間允許的情況下,你可以在一個工作像這樣的東西執行所有的運行:

#!/bin/bash -l 
#SBATCH --time=04:00:00 
#SBATCH --nodes=32 
#SBATCH --ntasks-per-core=1 
#SBATCH --ntasks-per-node=36 
#SBATCH --cpus-per-task=1 
#SBATCH --partition=normal 
#SBATCH --constraint=mc 

module load Python 

source /scratch/.../env/bin/activate 

for i in 2 4 8 16 32 64; 
do 
srun --nodes $i python3 script.py > nodes_$i 
done 

deactivate 
相關問題