일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- nurion
- cuda
- KISTI
- SGE
- 누리온
- GROMACS
- neuron
- HPC
- 가우시안
- G16
- Linux
- Gaussian
- 신바람
- 타키온2
- 슈퍼컴퓨팅
- 뉴론
- 슈퍼컴퓨터
- abaqus
- KNL
- TACHYON2
- 슈퍼컴퓨팅교육
- GPU
- skl
- openfoam
- 국가슈퍼컴퓨팅센터
- sinbaram
- vasp
- ansys
- 5호기
- Kat
- Today
- Total
KISTI 슈퍼컴퓨팅 기술 블로그
공유 노드 정책 변경에 따른 메모리 할당량 설정 안내 본문
■ 뉴론 시스템 노드 정책 변경 안내
정책 변경시점 : 2022년 3월 17일 예방정비 점검(PM) 이후
정책 적용 파티션 : 모든 파티션
변경 내용 : 배타적 노드 할당 정책 -> 공유 노드 정책
※배타적 노드 할당 정책 : 노드 단위 작업 할당 정책으로, 하나의 노드에 하나의 작업만을 할당
※공유 노드 정책 : CPU 단위 할당 정책으로, 유휴 자원(CPU)이 존재하는 노드에 사용자 작업을 할당하는 방식이며, 하나의 노드에 여러 작업이 할당될 수 있음
■ 뉴론 공유 노드 정책에서 메모리 할당량 설정
- 뉴론 시스템 자원 활용의 효율성 및 사용자의 안정적인 작업 수행을 위하여 아래와 같이 메모리 할당량을 자동 조절
memory-per-node = ntasks-per-node * cpus-per-task * (단일 노드 메모리 가용량의 95% / 단일 노드 총 core 수) |
- '--mem' (노드 당 메모리 할당) 옵션을 사용하더라도 노드 당 수행될 프로세스 수(ntasks-per-node)와 프로세스 당 할당될 cpu core 수(cpus-per-task)에 따라 메모리 할당량이 자동 계산
- #SBATCH --exclusive 옵션 사용시에 단일 노드 메모리 가용량의 95%가 작업에 할당되며, 노드를 전용으로 사용할 수 있음,
(단 전용으로 사용 가능한 노드가 확보될 때까지 대기 시간이 길어질 수 있음.)
- GPU 작업 시, 메모리 할당에 대한 안내 및 이해를 돕고자, gpu 사용 개수가 cpu core 수를 초과하는 경우에 아래 안내 메시지 출력되며 작업이 제출되지 않도록 설정되어 있음.
sbatch: error: Job submission failed due to 'CPU_cores_per_node(#cpu core 개수) < GPU_gres_per_node(#gpu 개수)' sbatch: error: if 'CPU_cores_per_node >= GPU_gres_per_node' then job submission is successful! … |
- 메모리 할당량을 설정하지 않으면 메모리 부족으로 작업이 종료될 수 있기 때문에 사용자 작업 방식에 맞게 ntasks-per-node, cpus-per-task 또는 exclusive SBATCH 옵션 입력하여 작업 수행 권함
■ 뉴론 공유 노드 정책에서 GPU 당 CPU core 할당 개수 설정
- GPU 어플리케이션의 안정적인 수행을 위해 노드당 CPU core 개수를 GPU에 비례하여 아래와 같이 기본 할당 (메모리 용량도 자동으로 설정, 참조: 뉴론 공유 노드 정책에서 메모리 할당량 설정)
cpus-per-gpu = node의 총 core 수 / node의 총 GPU 수 * 요청 GPU 수(--gres=gup:) |
- 메모리 요구량 추가로 필요한 경우 기본 할당된 cpus-per-gpu 수 보다 크게 자원을 요청하여 메모리 할당량을 확보할 수 있음. 단, 자동 설정된 cpus-per-gpu 보다 cpu core 요구량을 작게 할당할 경우 기본 할당 개수로 overwrite 됨.
■ 제출 작업의 메모리 사용량 확인 방법 예시
- 사용자는 자신이 제출한 작업이 수행되고 있는 계산노드에 ssh 명령으로 접속하여 메모리 사용량을 확인할 수 있음
1. 작업이 수행중인 계산노드 확인 $ squeue -u $USER JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) job_number cas_v100_ gpu_job username R 0:00 1 gpu99 2. ssh 명령으로 계산노드 접속 $ ssh gpu99 3. 이후 top, nvidia-smi, htop, nvtop 등의 명령으로 자원 사용량에 대해 확인 (htop, nvtop은 module load nvtop htop 후 사용 가능) |
- 메모리 사용량은 작업 수행과정에 따라 일시적으로 증가할 수 있기 때문에 노드에 접속하여 확인한 값보다 여유롭게 설정하는 것을 권장
■ 작업 스크립트 예시
1) 프로그램 실행에 사용할 core 수는 적으나, 메모리 사용량이 큰 경우 노드당 수행될 프로세스 수로 메모리 할당량을 조절하여 프로그램 실행하는 예제
#!/bin/sh #SBATCH -J mem_alloc_job #SBATCH -p cas_v100_4 #SBATCH --nodes=1 #SBATCH --ntasks-per-node=40 #SBATCH -o %x_%j.out #SBATCH -e %x_%j.err #SBATCH --time=01:00:00 #SBATCH --comment xxx #Application별 SBATCH 옵션 이름표 참고 module purge module load intel/18.0.2 mpi/impi-18.0.2 #실행할 프로세스 수를 -n 옵션으로 입력 srun -n 1 ./test.exe |
※ cas_v100_4 1개 노드 모든 core 점유하여 메모리 할당받는 예제
※ 파티션별 총 core 수는 뉴론 지침서 > 스케줄러(SLURM)를 통한 작업 실행 > 가. 큐 구성 > Total CPU core 수 또는 뉴론 시스템 motd 명령으로 확인 가능
2) #SBATCH –exclusive 설정으로 노드를 전용으로 사용하는 예시
#!/bin/sh #SBATCH -J exclusive_test #SBATCH -p cas_v100_4 #SBATCH --nodes=1 #SBATCH --gres=gpu:1 #SBATCH --exclusive #SBATCH -o %x_%j.out #SBATCH -e %x_%j.err #SBATCH --time=01:00:00 #SBATCH --comment xxx #Application별 SBATCH 옵션 이름표 참고 module purge module load python/3.7.1 python test.py |
※ exclusive 옵션으로 노드 메모리 가용량의 95%를 작업에 할당받음
'사용자 지침서 > 뉴론(Neuron) (GPU Cluster System) ' 카테고리의 다른 글
뉴론 SLURM 스케줄러 Fairshare 스케줄링 정책 (0) | 2021.11.12 |
---|---|
뉴론 FAQ (2021.05) (0) | 2021.05.11 |
뉴론 OpenFOAM 사용자 지침서 (0) | 2020.07.09 |
뉴론 Jupyter 사용자 지침서 (0) | 2020.05.28 |
뉴론 딥러닝 프레임워크 병렬화 사용법 (0) | 2019.10.23 |