필수 조건
단일 노드 환경에서 SLURM(Simple Linux Utility for Resource Management)을 배포해 CPU와 GPU를 통합 관리하기 위한 요구사항:
- 운영체제: Ubuntu 22.04 또는 CentOS 8
- 권한: root 또는 sudo 사용자
- 필요 패키지:
- 빌드 도구(gcc, make)
- munge(인증용)
- slurmd, slurmctld
- 하드웨어 예시:
- 물리적 소켓: 2개
- 코어: 소켓당 10개(총 40 논리 코어, 하이퍼스레딩 가정)
- GPU: NVIDIA 카드 2대(드라이버 사전 설치)
종속성 및 SLURM 설치
1. munge 설치
# Ubuntu/Debian
sudo apt install munge libmunge-dev -y
# CentOS/RHEL
sudo dnf install munge munge-devel -y
sudo create-munge-key
sudo systemctl enable --now munge
2. SLURM 설치
패키지 관리자 활용(권장):
# Ubuntu/Debian
sudo apt install slurm-wlm slurm-client -y
# CentOS/RHEL
sudo dnf install slurm slurm-slurmd slurm-slurmctld -y
소스 컴파일(고급): 공식 가이드 참조
SLURM 설정(CPU + GPU 통합)
1. 기본 설정 파일(/etc/slurm/slurm.conf)
ClusterName=standalone
SlurmctldHost=localhost
NodeName=node1 CPUs=40 Sockets=2 CoresPerSocket=10 ThreadsPerCore=2
RealMemory=128000 State=UNKNOWN Gres=gpu:2
PartitionName=compute Nodes=node1 Default=YES MaxTime=INFINITE State=UP
설명:
- CPUs=40: 논리 코어 총합(2소켓 × 10코어 × 2스레드)
- RealMemory: MB 단위(예: 128GB=128000)
- Gres=gpu:2: GPU 2대 인식
2. GPU 설정(/etc/slurm/gres.conf)
# GPU 자동 탐지 활성화
AutoDetect=nvml
3. 권한 설정
sudo chown slurm:slurm /etc/slurm/*.conf
sudo chmod 644 /etc/slurm/*.conf
서비스 실행
sudo systemctl enable --now slurmctld slurmd
sinfo -Nl # 노드 상태 확인
scontrol show node node1 # GPU 리소스 출력 확인
GPU 작업 예제
작업 스크립트(gpu_job.sh):
#!/bin/bash
#SBATCH --job-name=gpu-sample
#SBATCH --partition=compute
#SBATCH --gres=gpu:1
#SBATCH --cpus-per-task=4
#SBATCH --mem=8G
nvidia-smi
sleep 20
실행 명령:
sbatch gpu_job.sh
squeue # 작업 상태 모니터링
고급 설정
- 하이퍼스레딩 비활성화: BIOS 설정 또는 ThreadsPerCore=1
- GPU-CPU 연동: --gpu-bind 옵션 활용
- 리소스 격리: cgroup 통합
문제 해결
- 노드 DOWN 상태: slurmd/munge 서비스 점검
- GPU 미인식: nvidia-smi 실행 가능 여부 확인
- 작업 할당 실패: scontrol show node로 GRES 설정 검증