[英]Running multiple instances of a python file with two input files using GNU Parallel on an HPC system with SLURM
我嘗試在 HPC 系統上並行運行單個 python 文件 240 次(因為每個單獨的文件運行大約需要 9 分鍾)。 理想情況下,每個 python 文件都應在單個內核上運行。 每個節點有 24 個核心。 python 文件采用兩個輸入文件,每組一個:
CN_ONLY0.pdb
到CN_ONLY239.pdb
I_ONLY0.pdb
到I_ONLY239.pdb
。當我運行以下發布的代碼時:
parallel="parallel --delay .2 \
-j $SLURM_NTASKS \
--joblog runtask.log \
--resume \
--max-args=2"
srun="srun --exclusive -N1 -n1 --cpus-per-task=1 --cpu-bind=cores"
find . -type f \( -name "CN_ONLY*.pdb" -o -name "I_ONLY*.pdb" \) |
sort -t Y -k 2 -g |
TMPDIR=$SLURM_SCRATCH \
$parallel python python_test.py
它正確運行 Python 程序,但不會將程序分發到所有不同的請求 CPU。
有誰知道如何解決這個問題?
當 SLURM 本身通過數組作業(或作業數組)提供該功能時,無需使用 GNU 並行。 只需將--array=1-240
添加到srun
命令,然后提交以下腳本:
#!/bin/sh
id=$(expr ${SLURM_ARRAY_TASK_ID} - 1)
python python_test.py CN_ONLY${id}.pdb I_ONLY${id}.pdb
發生的情況是 SLURM 將啟動此腳本 240 次,並將SLURM_ARRAY_TASK_ID
的值設置為每個不同的值,范圍從 1 到 240。然后從該值中減去一個並使用它來生成名稱腳本 arguments。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.