以下のようにして、1つのジョブの中で複数のプログラムを別々のCPU/GPUで走らせることができます。
以下ではa.outがCPU0-6+GPU0, b.outがCPU7-13+GPU1, c.outがCPU14-20+GPU2, d.outがCPU21-27+GPU3を使います。
#!/bin/sh
#$ -cwd
#$ -V
#$ -l f_node=1
#$ -l h_rt=00:30:00
a[0]=./a.out
a[1]=./b.out
a[2]=./c.out
a[3]=./d.out
for i in $(seq 0 3)
do
export CUDA_VISIBLE_DEVICES=$i
numactl -C $((i*7))-$((i*7+6)) ${a[$i]} &
done
wait