1. 융합전공 HPC 서버 정보
1.1 HPC 사용을 위한 기초 정보
본 HPC 서버는 과학지능정보 융합전공 학생들과 관련 학과 교수, 연구원 등이 융합전공 과목 강의 중 실습과 관련 연구에 사용하실 수 있습니다. 계산 자원에 접근하려면 서버에 계정을 생성해야 하고, 이후 SSH를 이용해 서버에 접속해 사용하실 수 있습니다.
SSH로 접속한 리눅스 환경(UI)에서는 프로그램 코드 작성이나 짧은 테스트 작업을 수행하고, GPU 자원 사용을 포함해 계산량이 많은 작업은 Slurm을 이용해 계산 노드 자원을 할당받아 처리합니다. 계산 노드로의 SSH 접속은 Slurm 작업을 제출해 자원을 할당받은 다음에만 할 수 있습니다.
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 계정 생성하기
융합전공 과목 수강생은 실습을 위해 계정을 생성할 수 있습니다.
<USER_ID>는 학번을 기준으로 (ex: s2023123456) 일괄 생성되며,
해당 학기가 종료되면 계정과 홈 디렉토리가 삭제됩니다.
- 1학기 수업 수강생 3월 ~ 8월
- 2학기 수업 수강생 9월 ~ 2월
융합전공 수업을 수강하지 않지만 사용을 희망하는 경우, 아래 신청서를 작성하여 siconv@khu.ac.kr로 보내주시기 바랍니다.
교육용 서버 사용신청서 다운로드 (.docx)
융합전공 참여 학과 교수, 조교 등은 연구용 계정을 신청해 받을 수 있습니다.
관리자에게 별도로 <USER_ID> 계정 생성을 요청할 수 있습니다.
장기 미사용자의 경우 계정과 홈 디렉토리가 삭제될 수 있습니다.
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으로 자원을 할당받은 뒤에만 가능합니다.
<partition>은 sinfo로 확인한 실제 partition 이름으로 바꿔 사용하세요.
3.2 명령어
작업 흐름에 따라 자주 쓰는 명령어입니다. 아래 검색창으로 명령어·옵션을 필터링할 수 있습니다.
| 명령어 | 설명 | 사용 예시 |
|---|---|---|
| sinfo |
사용 가능한 partition과 노드 상태를 확인합니다. 작업 제출 전 partition 이름을 확인할 때 가장 먼저 사용합니다. |
sinfosinfo -ssinfo -p <partition>
|
| srun |
명령어를 계산 노드에서 즉시 실행하고 결과를 터미널에 출력합니다. 짧은 테스트·GPU 확인에 적합하며, 대기 job이 있으면 실행 가능할 때까지 터미널이 블록됩니다. |
srun -p <partition> hostnamesrun -p <partition> -G1 nvidia-smisrun -p <partition> python train.py
|
| sbatch |
셸 스크립트를 batch job으로 제출합니다. stdout/stderr는 지정한 로그 파일로 저장되며, 제출 후 터미널을 계속 사용할 수 있습니다. |
sbatch -J MYJOB -p <partition> script.shsbatch -a 0-9 script.sh
|
| salloc |
계산 노드에 자원만 할당받아 대화형(interactive) 작업을 수행합니다. 할당 후 ssh $SLURM_JOB_NODELIST로 계산 노드에 접속할 수 있습니다.exit로 빠져나오면 자원이 자동 해제됩니다.
|
salloc -p <partition> -G1ssh $SLURM_JOB_NODELIST
|
squeue 상태 코드:
PD 대기 ·
R 실행 중 ·
CG 종료 중 ·
CA 취소됨 ·
F 실패
| 명령어 | 설명 | 사용 예시 |
|---|---|---|
| squeue |
제출된 job 목록과 상태를 확인합니다. 대기(PD) 또는 실행(R) 중인 job을 볼 수 있습니다. |
squeuesqueue -u $USERsqueue -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 $USERscancel -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로 노드와 할당을 순서대로 해제합니다.
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 파일로 저장합니다.
#!/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)
#!/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