Patch to SGE 2011.p1, Son of Grid Engine 8.18, to enable multiple GPU scheduling.
It schedules GPUs to jobs, or processes for MPI jobs(in file "environment" on work nodes).
Recompile the source needed. Also, you need to set a consumable, named "ngpus". And assign value of it to each node.
When submit GPU job, run:
>qsub -l ngpus=1 ...
This also works for parallel jobs.
>qsub -pe openmpi 4 -l ngpus=1 ...
Here, "-l ngpus=1" request 1 GPU for 1 process.
It supports multiple GPU scheduling on nodes as well. For example, if node001 has 4 GPUs installed. JobA uses GPU0, JobB uses GPU2, and then JobC requestes 2 GPUs, it can dispatch GPU1 and GPU3 to JobC, and set the environment for the job on node001:
CUDA_VISIBLE_DEVICES=1,3
For non-GPU jobs, it is set to empty.
No loadsensor needed.
Developed on CentOS 6.2, Kernel 2.6.32-220.2.1.el6.x86_64
This patch is only tested partially on a small simulating environment. NO Guarantee!
Features
- internally build-in supports multi GPU scheduling
- SGE
- Grid Engine
- No loadsensor needed