假设我的电脑上有 4 个 CUDA 设备(0,1,2,3),有 10 个任务要运行,每个任务都是一个脚本,名为
run01.sh
, run02.sh
, ..., run10.sh
.
问题是,每个任务仅使用 1 个 GPU,我想编写一个 bash 脚本来同时运行这 10 个任务,以充分利用 4 个 CUDA 设备。我怎样才能做到?
如果您的 GPU 有足够的 RAM 来同时托管 3 个任务,那么我能想到的最简单的脚本是:
#!/bin/bash
for i in {01..10}
do
CUDA_VISIBLE_DEVICES=$((10#$i % 4)) ./run"$i".sh &
done
wait