따라서 저는 결코 시스템 관리자는 아니지만 많은 수의 작업(약 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를 할당합니다.