1. 융합전공 HPC 서버 정보

1.1 HPC 사용을 위한 기초 정보

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

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

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

  • sichpc (로그인 노드)
    • CPU: Intel Xeon Silver 4309Y (2.8-3.6GHz, 32 threads)
    • RAM: 64GB
    • Storage (/home): 74TB
  • node01-04 (GPU 계산노드)
    • CPU: Intel Xeon Silver 4310 (2.1-3.3GHz, 48 threads)
    • RAM: 128GB
    • GPU: Nvidia GeForce RTX 3090 (노드 당 2장씩, 350W, VRAM 25GB)

1.2 계정 생성하기

실습용 계정 (수강생)

융합전공 과목 수강생은 실습을 위해 계정을 생성할 수 있습니다.
<USER_ID>는 학번을 기준으로(ex: s2023123456) 일괄 생성합니다.
수업 진행 학기만 사용하고, 계정과 홈디렉토리는 삭제됩니다.

연구용 계정 (연구원 등)

융합전공 참여 학과에 대해 교수, 조교 등은 연구용 계정을 신청해 받을 수 있습니다.
관리자에게 별도로 <USER_ID> 계정을 생성하도록 요청할 수 있습니다.
장기 미사용자의 경우 계정과 홈디렉토리가 삭제될 수 있습니다.

2. 사용방법

2.1. 서버 접속하기

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

2.2 소프트웨어 사용하기

2.2.1 anaconda/python

기본적으로 시스템에 설치된 python도 있지만, 최신 패키지를 사용하기 위해 anaconda를 사용합니다.

[USER_ID@sichpc ~]$ conda activate
(base) [USER_ID@sichpc ~]$
현재 사용할 수 있는 conda환경은 아래 명령어로 확인할 수 있습니다.
[USER_ID@sichpc ~]$ conda info --envs
# conda environments:
#
                         /home/convergence2023/jhgoh/myenv
base                     /opt/sw/anaconda3
torch201_cu118           /opt/sw/anaconda3/envs/torch201_cu118

2.3. Slurm 이용해서 자원 할당받기

간단한 작업은 ssh접속 직후 화면에서 할 수 있지만, 계산량이 많은 작업을 위해서는 slurm을 이용해 계산 노드 자원을 할당받아 작업을 제출해 사용해야 합니다.
특히 GPU는 계산 노드에만 설치되어 있기 때문에 slurm사용이 필수적입니다.

작업 제출과 확인, 제어를 위한 주요 명령어는 아래와 같습니다.

명령어 설명 사용예시
srun 명령어를 계산노드에서 실행하면서 표준출력으로 바로 결과를 표시함.
계산노드들에 다른 대기작업이 가득 차 있으면 실행 가능할때까지 기다림.
srun -p 2023Fall hostname
srun -p 2023Fall -G1 nvidia-smi
srun -p 2023Fall ./batch.sh ARG1 ARG2
sbatch 계산노드에서 실행하기 위해 별도로 작성한 셸스크립트를 매개변수로 받아 제출.
출력 결과는 별도의 로그 파일로 저장함.
sbatch -J JOBNAME -p 2023Fall ./script.sh ARG1 ARG2
squeue 제출되어 있는 job들의 내역과 상태를 표시함.
현재 실행중이거나 대기중인 작업들을 확인할 수 있음.
squeue
squeue -l
sinfo 사용 가능한 partition의 목록을 표시함.
sinfo
scancel 제출 된 작업 중 작업을 종료하거나 대기중인 작업을 취소함. scancel 12345
salloc 계산노드에 자원할당만 받음.
자원 할당 받은 후 ssh로 해당 노드에 접속해 interactive작업 수행할 수 있음.
작업 후 UI머신에서 exit 명령어로 빠져나오면 자동으로 해당 자원을 해제함.
salloc -p 2023Fall; ssh $SLURM_JOB_NODELIST
salloc -p 2023Fall; srun ./batch.sh

Slurm에 Job을 제출할때 유용한 옵션들입니다.

Option Input Description
-J, --job-name <job_name> job의 이름
-p, --partition <partition_name> partition(작업공간)의 이름
-o, --output <filename_pattern> stdout을 저장할 파일 이름
-e, --error <filname_pattern> stderr를 저장할 파일 이름

3. Slurm 사용 예시

3.1. srun

명령어를 커맨드 라인으로 입력하여 제출하는 방식입니다.
stdout 및 stderr가 화면에 나타나는 특징이 있습니다.
대기중인 job이 존재할 때 제출하면, job이 시작되기 전까지 다른 작업을 진행할 수 없습니다.

[USER_ID@sichpc ~]$ srun -J <jobname> -p <partition_names> <executable> [args ...]
something may be printed out
[USER_ID@sichpc ~]$

3.2. sbatch

명령어를 셸스크립트로 작성하여 제출하는 방식입니다.

  • stdout 및 stderr가 화면에 나타나지 않습니다.
  • 대기중인 job이 존재할 때 제출하면, job을 대기시켜놓고 다른 작업을 진행할 수 있습니다.
  • #SBATCH 로 sbatch 명령어에 넘겨줄 기본값들을 지정할 수 있습니다.
아래 예시를 이용하면 원주율을 계산하는 python 스크립트를 계산노드에서 10개 실행해 출력 결과를 OUTPUT_1_1.log, OUTPUT_1_2.log, ... OUTPUT_1_9.log로 저장할 수 있습니다.

A. python script 예시: (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)
B. 실행용 bash script 예시: (script.sh)
#!/bin/bash

#SBATCH -J MYTESTJOB
#SBATCH -p 24SPRING
#SBATCH -o OUTPUT_%A_%a.log
#SBATCH -e OUTPUT_%A_%a.err

hostname

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

python compute_pi.py
C. UI머신에서 job submit하기
[USER_ID@sichpc ~]$ sbatch -a [0-9] script.sh
[USER_ID@sichpc ~]$ squeue