如何在Bash中为多进程分配专属CPU并行运行NGSadmix?
问题:NGSadmix并行任务的CPU核分配优化
我有一个支持并行运行的程序NGSadmix(通过-P参数启用),希望同时运行该程序的3轮迭代(1至3),每轮包含10个不同的命令。我计划使用72个CPU核心,将其划分为3组,每组24核,让每个NGSadmix命令使用24核进行计算。
当前使用的命令如下:
SLURM_CPUS_PER_TASK=72 TASKCPU=$(($SLURM_CPUS_PER_TASK/3)) parallel -j $SLURM_CPUS_PER_TASK "NGSadmix -likes myfile.gz -P 1 -K {2} -outfiles out_{2}_it{1}.m -minMaf 0.05" ::: {1..3} ::: {1..10}
上述命令会并行运行72个进程,但每个NGSadmix程序仅使用1核(-P 1)。我不确定将-P 1替换为-P $TASKCPU是否可行,因为parallel进程已占用全部72核。
以下是我期望的核分配示意图:
3 different iterations that will run 10 different commands 24 cpus NGSadmix_iter1 process 1..10 / (main) / 72 cpus-- 24 cpus NGSadmix_iter2 process 1..10 \ \ 24 cpus NGSadmix_iter3 process 1..10
更新
来自@Cobra_Fast的测试代码:
# test parallel DIVTASK=2 TASKCPU=4 cd ~/Desktop mkdir -p testpar cd testpar parallel -j ${DIVTASK} "echo ${TASKCPU} > test_iter.{1}_k.{2}.txt | sleep 5" ::: {1..4} ::: {1..10}
内容的提问来源于stack exchange,提问作者M. Beausoleil
相关产品推荐
相关产品推荐

