HPC 사용 매뉴얼

HPC@SIC KHU

경희대학교 과학지능융합전공 HPC 서버

1. 융합전공 HPC 서버 정보

1.1 HPC 사용을 위한 기초 정보

본 HPC 서버는 과학지능정보 융합전공 학생들과 관련 학과 교수, 연구원 등이 융합전공 과목 강의 중 실습과 관련 연구에 사용하실 수 있습니다. 계산 자원에 접근하려면 서버에 계정을 생성해야 하고, 이후 SSH를 이용해 서버에 접속해 사용하실 수 있습니다.

SSH로 접속한 리눅스 환경(UI)에서는 프로그램 코드 작성이나 짧은 테스트 작업을 수행하고, GPU 자원 사용을 포함해 계산량이 많은 작업은 Slurm을 이용해 계산 노드 자원을 할당받아 처리합니다. 계산 노드로의 SSH 접속은 Slurm 작업을 제출해 자원을 할당받은 다음에만 할 수 있습니다.

2026년 1월 기준 컴퓨팅 자원은 아래와 같습니다.

sichpc

로그인 노드
  • Intel Xeon Silver 4309Y (2.8–3.6 GHz, 32 threads)
  • RAM 64 GB
  • Storage (/home) 74 TB

node01–04

GPU 계산 노드
  • Intel Xeon Silver 4310 (2.1–3.3 GHz, 48 threads)
  • RAM 128 GB
  • Nvidia GeForce RTX 3090 (노드당 2장, 350 W, VRAM 25 GB)

1.2 계정 생성하기

2. 사용방법

2.1 서버 접속하기

터미널에서 아래 명령어로 로그인 노드에 접속합니다.

[LOCAL_ID@localhost ~]$ ssh <USER_ID>@sichpc.khu.ac.kr
[USER_ID@sichpc ~]$

2.2 소프트웨어 사용하기

2.2.1 conda / mamba

해당 페이지에서는 python만을 언급하며, 그 외의 언어(java, R, 등)는 관리자에게 문의바랍니다. 사용자별 패키지 관리를 위해 conda 또는 mamba를 사용합니다.

[USER_ID@sichpc ~]$ mamba activate
(base) [USER_ID@sichpc ~]$

현재 사용할 수 있는 mamba 환경은 아래 명령어로 확인할 수 있습니다.

[USER_ID@sichpc ~]$ mamba info --envs
  Name  Active  Path
────────────────────────────────────────────────────
                /opt/shared/anaconda3
                /opt/shared/anaconda3/envs/default
  base  *       /opt/shared/miniconda3

3. Slurm 사용하기

3.1 개요

SSH로 접속한 로그인 노드(sichpc)에서는 코드 작성이나 짧은 테스트만 수행합니다. GPU를 포함한 계산량이 많은 작업은 Slurm을 통해 계산 노드(node01–04) 자원을 할당받아 실행해야 합니다. 계산 노드에 직접 SSH 접속하려면 Slurm으로 자원을 할당받은 뒤에만 가능합니다.

GPU는 계산 노드에만 설치되어 있으므로 GPU 작업은 Slurm 사용이 필수입니다.
partition 이름은 학기마다 달라집니다. 아래 예시의 <partition>sinfo로 확인한 실제 partition 이름으로 바꿔 사용하세요.

3.2 명령어

작업 흐름에 따라 자주 쓰는 명령어입니다. 아래 검색창으로 명령어·옵션을 필터링할 수 있습니다.

명령어 설명 사용 예시
sinfo 사용 가능한 partition과 노드 상태를 확인합니다.
작업 제출 전 partition 이름을 확인할 때 가장 먼저 사용합니다.
sinfo
sinfo -s
sinfo -p <partition>
srun 명령어를 계산 노드에서 즉시 실행하고 결과를 터미널에 출력합니다.
짧은 테스트·GPU 확인에 적합하며, 대기 job이 있으면 실행 가능할 때까지 터미널이 블록됩니다.
srun -p <partition> hostname
srun -p <partition> -G1 nvidia-smi
srun -p <partition> python train.py
sbatch 셸 스크립트를 batch job으로 제출합니다.
stdout/stderr는 지정한 로그 파일로 저장되며, 제출 후 터미널을 계속 사용할 수 있습니다.
sbatch -J MYJOB -p <partition> script.sh
sbatch -a 0-9 script.sh
salloc 계산 노드에 자원만 할당받아 대화형(interactive) 작업을 수행합니다.
할당 후 ssh $SLURM_JOB_NODELIST로 계산 노드에 접속할 수 있습니다.
exit로 빠져나오면 자원이 자동 해제됩니다.
salloc -p <partition> -G1
ssh $SLURM_JOB_NODELIST

squeue 상태 코드: PD 대기 · R 실행 중 · CG 종료 중 · CA 취소됨 · F 실패

명령어 설명 사용 예시
squeue 제출된 job 목록과 상태를 확인합니다.
대기(PD) 또는 실행(R) 중인 job을 볼 수 있습니다.
squeue
squeue -u $USER
squeue -j <job_id>
scontrol show job 특정 job의 상세 정보를 확인합니다.
대기 중인 이유, 할당 GPU, 시간 제한 등을 파악할 때 사용합니다.
scontrol show job <job_id>
sacct 완료된 job 이력과 종료 코드(ExitCode)를 확인합니다.
batch job이 정상 종료되었는지 확인할 때 사용합니다.
sacct -j <job_id>
sacct -u $USER --format=JobID,JobName,State,ExitCode,Elapsed
scancel 실행 중이거나 대기 중인 job을 취소합니다. scancel <job_id>
scancel -u $USER
scancel -n <job_name>

srun, sbatch, salloc 공통 옵션입니다. sbatch 스크립트 안에서는 #SBATCH 지시자로 동일하게 지정할 수 있습니다.

Option Input Description
-J, --job-name <job_name> job 이름 (squeue, scancel -n 등에서 사용)
-p, --partition <partition> partition(작업 공간) 이름 — sinfo로 확인
-G, --gpus <count> 할당받을 GPU 개수 (노드당 최대 2)
-c, --cpus-per-task <count> task당 CPU 코어 수
--mem <size> 메모리 제한 (예: 16G)
-t, --time HH:MM:SS 최대 실행 시간
-o, --output <pattern> stdout 로그 파일 (예: OUTPUT_%j.log)
-e, --error <pattern> stderr 로그 파일
-a, --array <range> 배열 job 범위 (예: 0-9)
  • partition 확인: sinfo -s
  • GPU 테스트: srun -p <partition> -G1 nvidia-smi
  • batch 제출: sbatch -J MYJOB -p <partition> script.sh
  • 내 job 확인: squeue -u $USER
  • job 상세: scontrol show job <job_id>
  • job 취소: scancel <job_id>
  • 완료 확인: sacct -j <job_id>

3.3 srun 예시

커맨드 라인에서 바로 실행하는 방식입니다. stdout·stderr가 터미널에 출력되며, job이 시작될 때까지 터미널을 사용할 수 없습니다. GPU 동작 확인이나 짧은 테스트에 적합합니다.

[USER_ID@sichpc ~]$ srun -J <jobname> -p <partition> -G1 <executable> [args ...]
# 예: srun -J gputest -p <partition> -G1 nvidia-smi
something may be printed out
[USER_ID@sichpc ~]$

3.4 salloc 예시

GPU 노드에서 대화형으로 작업할 때 사용합니다. 자원 할당 후 계산 노드에 SSH 접속하고, 작업이 끝나면 exit로 노드와 할당을 순서대로 해제합니다.

salloc은 사용을 마친 뒤 직접 할당을 해제해야 합니다. 로그인 노드에서 exit로 salloc 세션을 종료하지 않으면 GPU·CPU 자원이 계속 점유되어 다른 사용자가 해당 자원을 사용할 수 없습니다. 작업이 끝나면 반드시 할당 해제를 해 주세요.
[USER_ID@sichpc ~]$ salloc -p <partition> -G1 -t 01:00:00
salloc: Granted job allocation 12346
[USER_ID@sichpc ~]$ ssh $SLURM_JOB_NODELIST
[USER_ID@node01 ~]$ nvidia-smi
[USER_ID@node01 ~]$ exit          # 계산 노드에서 빠져나오기
[USER_ID@sichpc ~]$ exit          # salloc 할당 해제
salloc: Relinquishing job allocation 12346

3.5 sbatch 예시

셸 스크립트로 job을 제출하는 방식입니다. stdout·stderr는 로그 파일로 저장되며, 제출 후에도 터미널을 계속 사용할 수 있습니다. #SBATCH 지시자로 스크립트 안에 옵션을 미리 지정할 수 있습니다.

아래 예시는 원주율을 계산하는 Python 스크립트를 계산 노드에서 10개(array job) 실행하고, 결과를 OUTPUT_<job_id>_<task_id>.log 파일로 저장합니다.

compute_pi.py 다운로드
#!/usr/bin/env python
import numpy as np
import pandas as pd
import sys, os

def getenv(var, default=''):
    if var not in os.environ: return str(default)
    return os.environ[var]

jobId = int(getenv('SLURM_JOB_ID', 0))
jobSection = int(getenv('SLURM_ARRAY_TASK_ID', 0))
np.random.seed(jobId*1000+jobSection)

n = 100000
rx = np.random.uniform(-1, 1, n)
ry = np.random.uniform(-1, 1, n)
r2 = rx*rx + ry*ry
nIn = (r2<1).sum()

print(nIn, n, nIn/n*4)
script.sh 다운로드
#!/bin/bash

#SBATCH -J MYTESTJOB
#SBATCH -p <partition>
#SBATCH -o OUTPUT_%A_%a.log
#SBATCH -e OUTPUT_%A_%a.err

hostname

#source /opt/sw/anaconda3/etc/profile.d/conda.sh
source /opt/sw/miniconda3/etc/profile.d/conda.sh
mamba activate

python compute_pi.py
[USER_ID@sichpc ~]$ sbatch -a 0-9 script.sh
Submitted batch job 12345
[USER_ID@sichpc ~]$ squeue -u $USER
[USER_ID@sichpc ~]$ sacct -j 12345 --format=JobID,State,ExitCode