단일 노드에서 SLURM 구축 및 CPU-GPU 통합 관리

필수 조건

단일 노드 환경에서 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 설정 검증

태그: slurm hpc GPU 리소스관리 단일노드

7월 1일 20:28에 게시됨