동일한 GPU에서 여러 SLURM 작업 실행

동일한 GPU에서 여러 SLURM 작업 실행

따라서 저는 결코 시스템 관리자는 아니지만 많은 수의 작업(약 5000개)을 시작하려면 기존 SLURM 설치를 사용해야 합니다.

클러스터는 GPU 10개(각 GPU의 메모리는 8GB)와 CPU 56개를 갖춘 노드 1개로 구성됩니다.

sbatch <file>각 작업은 내가 실행 한 후 sview무슨 일이 일어나고 있는지 확인하는 데 사용하는 배치 스크립트입니다.

이러한 작업은 GPU에서 실행되어야 하지만 GPU 메모리 요구 사항이 상당히 낮기 때문에(약 2GB) 단일 GPU에 3개를 넣을 수 있다고 생각했습니다.

나는 동일한 GPU에서 3개의 작업을 동시에 실행하는 방법을 찾으려고 머리를 썼지만 문서가 너무 커서 완전히 길을 잃은 느낌이 들었습니다.

내가 이것을 올바르게 사용하고 있는지 잘 모르겠습니다.

작업은 다음과 같습니다.

#!/bin/bash
#SBATCH --time=00:10:00                 
#SBATCH -p n1                        
#SBATCH --nodes=1                       
#SBATCH --ntasks=1                      
#SBATCH --cpus-per-task=[nb_cpu]               
#SBATCH --mem-per-gpu=1                        
#SBATCH --job-name=[job_name]           
#SBATCH --mail-user=[list_mail]  
#SBATCH --mail-type=NONE                 
#SBATCH --gid=dl
#SBATCH --output=[folder]/%x.log    

echo "Current GPU: $CUDA_VISIBLE_DEVICES"
# a bunch of initialization
module load opencv/4.5.4 deeplearning
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/raid1/CLUSTER/LIB/custom_libs/
export OPENCV_LOG_LEVEL=DEBUG
export OPENCV_VIDEOIO_DEBUG=1
run_dl --nn-dir=/home/dl/networks --root-dir=[root_dir] [file]
if [ $? -eq 0 ]
then
    mkdir -p [folder]/done
    echo [id] > [folder]/done/[job_name]
else
    mkdir -p [folder]/fail
    echo [id] > [folder]/fail/[job_name]
fi

이러한 작업은 스크립트에 의해 생성되며 필요에 따라 쉽게 수정할 수 있습니다. 나는 올바른 방향을 사용하고 있는가 sbatch? 나는 헤매고 있다.

답변1

22.05 이상에서 사용 가능한 gres:GPU 대신 "샤딩된" GRES(gres:shard)를 사용해야 합니다.

https://slurm.schedmd.com/gres.html#Sharding

이를 통해 초과 구독된 코어 및 RAM 리소스와 마찬가지로 다양한 작업이 GPU를 공유할 수 있습니다. 기존 gres:gpu는 메모리 사용량에 관계없이 작업에만 GPU를 할당합니다.

관련 정보