我有以下名为 SLURM 的作业脚本gzip2zipslurm.sh
:
#!/bin/bash
#SBATCH --mem 70G
#SBATCH --ntasks 4
echo "Task 1"
srun -n1 java -Xmx10g -jar tar2zip-1.0.0-jar-with-dependencies.jar articles.A-B.xml.tar.gz &
echo "Task 2"
srun -n1 java -Xmx10g -jar tar2zip-1.0.0-jar-with-dependencies.jar articles.C-H.xml.tar.gz &
echo "Task 3"
srun -n1 java -Xmx10g -jar tar2zip-1.0.0-jar-with-dependencies.jar articles.I-N.xml.tar.gz &
echo "Task 4"
srun -n1 java -Xmx10g -jar tar2zip-1.0.0-jar-with-dependencies.jar articles.O-Z.xml.tar.gz &
echo "Waiting for job steps to end"
wait
echo "Script complete"
我将它提交给 SLURM 由sbatch gzip2zipslurm.sh
. 当我这样做时,SLURM 日志文件的输出是
Task 1
Task 2
Task 3
Task 4
Waiting for job steps to end
tar2zip
程序读取给定文件并将其tar.gz
重新打包为ZIP
文件。
问题:只有一个 CPU(空闲节点上可用的 16 个 CPU)在做任何工作。我top
可以看到所有 5 个srun
命令都已启动(我猜 4 个用于我的任务,1 个隐含用于 sbatch 作业)但只有一个 Java 进程。我也可以在正在处理的文件上看到它,只写了一个。
我如何管理所有 4 个任务实际上是并行执行的?
感谢您的任何提示!