我正在研究在大型计算集群的两个不同分区上运行程序的项目。我想使用批处理脚本运行此操作,但是在搜索后,仍然不清楚我是否可以在单个批处理脚本中分配和运行两个不同分区上的程序。下面是诸如此类的事情,我想对于bash错误做多分区作业的批处理脚本?
#!/bin/bash
#SBATCH --partition=<WHAT GOES HERE? I want to perform 100 processes on partition "batch" and 1 process on partition "gpu". I will alternate between the 2 during my jobs execution>
#SBATCH --ntasks=<100 on batch, 1 on gpu>
#SBATCH --mem-per-cpu=2G
#SBATCH --time=4-00:00:00
#SBATCH --exclude=nodeynode[003,016,019,020-023,026-030,004-015,017-018,020,024,031]
#SBATCH --job-name="lorem_ipsum"
filenames=("name1" "name2" "name3")
srun -p gpu python gpu_init.py
wait
for i in {0..100}
do
for name in "${filenames[@]}"
do
srun -p batch pythonexecutable &
done
srun -p gpu python gpu_iter.py
wait
done
道歉,我通常是在Python脚本,但我可以为我在这里不是我的bash脚本中切换Python模块(不同版本)(未示出)。我看到实际上可以在批处理脚本的标题中放入分区列表,但是从我读的内容中,实际上只是告诉调度程序从列表中分配任何可用分区,而不是分配多个分区。
谢谢!