본문 바로가기
실용적인프로그래밍

[slurm] slurm, ubuntu22.04에서 설치해보자. with gpu setting

by 인포메틱스 2024. 7. 15.
반응형

오랜만에 포스팅을 합니다.

 

하두 포스팅을 안하다보니, 방문자수도 많이 줄었더라구요.. 이게 사람이 많이 들어오다가 안오게 되면 뭔가 똥줄이 타는 느낌이 들더라구요..

 

1. introduction

 

최근에 slurm을 설치해서 job schedule을 체계적으로 해야하겠다 싶어서 설치해보았습니다. slurm은 오픈소스(다른말로 공짜)입니다. 여러가지 일을 동시에 진행할때, 차례대로 일을 진행시켜주는 아주 고마운 프로그램입니다. 사실 박사과정때 담당 교수님이 설치해준걸 써보기만 했지, 실제 설치까지 해보지는 않았습니다.

 실제 설치해보니.. 정말 힘들더라구요.. 다양하게 시도 하였고, 결과적으로 성공하였습니다. 

ubuntu 22.04에서 slurm-wlm 21.08.05 를 설치를 완료하였고, gpu까지 세팅완료하였습니다.

 

2. 설치해보기

 일단 SELinux를 비활성화 시킵니다. SELinux는  리눅스 보안 아키텍처라고 하는데, 이를 비활성화시키는 이유는 성능, 호환성문제를 최소화시키기 위해서라고 합니다.

 

sudo vi /etc/default/grub 

# grub에서 'GRUB_CMDLINE_LINUX_DEFAULT'로 시작하는 줄을 찾아서 'apparmor=0'을 추가합니다.
GRUB_CMDLINE_LINUX_DEFAULT= "quiet splash apparmor=0"

# 변경 사항을 저장하고 편집기를 종료합니다. 
#GRUB을 업데이트하여 변경 사항을 적용합니다
sudo update-grub

시스템을 재부팅합니다.
sudo reboot

 

 

 slurm을 설치합니다.

sudo apt update -y
sudo apt slurmd slurmctld -y

 

 

/etc/slurm 폴더에 slurm.conf 파일을 만듭니다.

# slurm.conf file generated by configurator.html.
# Put this file on all nodes of your cluster.
# See the slurm.conf man page for more information.
#
ClusterName=localcluster
SlurmctldHost=localhost
MpiDefault=none
ProctrackType=proctrack/linuxproc
ReturnToService=2
SlurmctldPidFile=/var/run/slurmctld.pid
SlurmctldPort=6817
SlurmdPidFile=/var/run/slurmd.pid
SlurmdPort=6818
SlurmdSpoolDir=/var/lib/slurm/slurmd
SlurmUser=slurm
StateSaveLocation=/var/lib/slurm/slurmctld
SwitchType=switch/none
TaskPlugin=task/none
#
# TIMERS
InactiveLimit=0
KillWait=30
MinJobAge=300
SlurmctldTimeout=120
SlurmdTimeout=300
Waittime=0
# SCHEDULING
SchedulerType=sched/backfill
SelectType=select/cons_tres
SelectTypeParameters=CR_Core
#
#AccountingStoragePort=
AccountingStorageType=accounting_storage/none
JobCompType=jobcomp/none
JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/none
SlurmctldDebug=info
SlurmctldLogFile=/var/log/slurm/slurmctld.log
SlurmdDebug=info
SlurmdLogFile=/var/log/slurm/slurmd.log
#
# COMPUTE NODES
NodeName=localhost CPUs=12 RealMemory=30517 State=UNKNOWN
PartitionName=localhost Nodes=ALL Default=YES MaxTime=INFINITE State=UP
## CPUs, RealMemory를 따로 설정해줘야 합니다.

 

 

# NodeName, CPUs, RealMemory 확인
slurmd -C
# RealMemory는 약간 작게 해서 세팅하셔야 합니다. 맞춰서 세팅하니 안되더라구요..

 

그리고 slurm 시작

sudo systemctl start slurmctld && sudo systemctl start slurmd && sudo systemctl start munge

 

잘 세팅이 되었다면 다음과 같이 나옵니다.

 

여기까지 slurm 설치가 완료되었고, gpu의 경우 /etc/slurm 폴더에 gres.conf 파일을 만듭니다. 그리고 아래와 같이 적습니다.

# ll /dev/ |grep nvidia를 쳐서 /dev/nvidia0 이 있는지 확인해야합니다.
# 아래의 경우는 0,1,2,3 이러게 4개의 GPU가 있을 경우입니다.
NodeName = localhost Name=gpu File=/dev/nvidia[0-3]

 

그리고 slurm.conf를 다시 수정해주는데,

# slurm.conf file generated by configurator.html.
# Put this file on all nodes of your cluster.
# See the slurm.conf man page for more information.
#
ClusterName=localcluster
SlurmctldHost=localhost
MpiDefault=none
ProctrackType=proctrack/linuxproc
ReturnToService=2
SlurmctldPidFile=/var/run/slurmctld.pid
SlurmctldPort=6817
SlurmdPidFile=/var/run/slurmd.pid
SlurmdPort=6818
SlurmdSpoolDir=/var/lib/slurm/slurmd
SlurmUser=slurm
StateSaveLocation=/var/lib/slurm/slurmctld
SwitchType=switch/none
TaskPlugin=task/none
#
# TIMERS
InactiveLimit=0
KillWait=30
MinJobAge=300
SlurmctldTimeout=120
SlurmdTimeout=300
Waittime=0
# SCHEDULING
SchedulerType=sched/backfill
SelectType=select/cons_tres
SelectTypeParameters=CR_Core
#
#AccountingStoragePort=
AccountingStorageType=accounting_storage/none
JobCompType=jobcomp/none
JobAcctGatherFrequency=30
JobAcctGatherType=jobacct_gather/none
SlurmctldDebug=info
SlurmctldLogFile=/var/log/slurm/slurmctld.log
SlurmdDebug=info
SlurmdLogFile=/var/log/slurm/slurmd.log
#
#### 추가 #####
GresTypes=gpu
# COMPUTE NODES
NodeName=Cell CPUs=32 Boards=1 SocketsPerBoard=2 CoresPerSocket=8 ThreadsPerCore=2 RealMemory=500000 Gres=gpu:4
PartitionName=Cell Nodes=Cell Default=YES MaxTime=INFINITE State=UP

 

GresTypes=gpu이부분을 추가해주시고, NodeName 부분에 Gres=gpu:4 라고 추가해주시면 됩니다. (gpu가 4개인경우 gpu:4, 한개인경우 gpu:1입니다.)

 

GPU세팅 완료되었는지 확인을 위해 아래와 같이 진행해봅니다.

srun --gpus=gpu:0 nvidia-smi

 

gpu세팅이 잘못될 경우 nvidia-smi는 작동이 안됩니다.

 

3. 팁

팁으로 만약 작동아 안되는 경우면

/var/log/slurm/slurmctld.log, /var/log/slurm/slurmd.log을 보고 어떤에러가 떳는지 보시면 됩니다. 그리고 gres.conf, slurm.conf을 고칠때 마다 scontrol reconfigure를 잘 이용하면 대부분의 오류가 해결이 되었습니다.

728x90
반응형

댓글