Skip to content

cpnr/computing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

92 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Computing KHU-HEP/CPNR

๊ฒฝํฌ๋Œ€ ์ž…์ž์‹คํ—˜์—ฐ๊ตฌ์‹ค/์ค‘์„ฑ๋ฏธ์ž์ •๋ฐ€์—ฐ๊ตฌ์„ผํ„ฐ ์ปดํ“จํŒ…๊ณผ ๊ด€๋ จ๋œ ๊ฐ์ข… ์ด์Šˆ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ค‘ ๋ฌธ์ œ๋‚˜ ์ œ์•ˆ์‚ฌํ•ญ์ด ์žˆ๋‹ค๋ฉด ๋ณธ repository์˜ issue๋ฅผ ๋งŒ๋“ค์–ด ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ปดํ“จํŒ… ์ž์› ์‚ฌ์šฉ์„ ์œ„ํ•œ ๊ธฐ๋ณธ ์ •๋ณด

๋ณธ ์„œ๋ฒ„๋Š” ๊ฒฝํฌ๋Œ€ ์ž…์ž์‹คํ—˜์—ฐ๊ตฌ์‹ค์—์„œ ๊ตฌ์ถ•, ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ค‘์„ฑ๋ฏธ์ž์ •๋ฐ€์—ฐ๊ตฌ์„ผํ„ฐ, ํ•œ๊ตญCMS์—ฐ๊ตฌํŒ€์„ ํฌํ•จํ•œ ๊ด€๋ จ ์—ฐ๊ตฌ์ž๋ถ„๋“ค์ด ์ปดํ“จํŒ… ์ž์›์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์šด์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋กœ๊ทธ์ธ ๋…ธ๋“œ๋Š” CPU 256 threads, Memory 384GB ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค.
  • ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ƒ˜ํ”Œ ์ƒ์„ฑ, ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ๋ถ„์„๊ณผ ๊ฐ™์€ ์ž‘์—… slurm ๋ฐฐ์น˜ ํ™˜๊ฒฝ์„ ์ด์šฉํ•ด ์ฃผ์„ธ์š”.
  • ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์€ KISTI ์„œ์šธ ํ™๋ฆ‰๋ถ„์›์˜ Kreonet(1G)๋ง์„ ํ†ตํ•ด ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
  • ์ค‘์„ฑ๋ฏธ์ž์ •๋ฐ€์—ฐ๊ตฌ์„ผํ„ฐ ์ด์šฉ์ž์˜ ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์€ /store/cpnr์„ ์ด์šฉํ•ด ์ฃผ์„ธ์š”.
  • ์ปดํ“จํŒ… ์ž์›์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋Š” [์—ฌ๊ธฐ]์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ„์ • ์ƒ์„ฑํ•˜๊ธฐ

๊ฒฝํฌ๋Œ€ ๊ณ ์ •ํ™˜ ๊ต์ˆ˜์—๊ฒŒ ์ด๋ฉ”์ผ๋กœ ๊ณ„์ • ์ƒ์„ฑ ์š”์ฒญ ํ•ด ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ •๋ณด๋ฅผ ํ•จ๊ป˜ ์•Œ๋ ค์ฃผ์„ธ์š”.

  • ์ด๋ฆ„, ์†Œ์†๊ธฐ๊ด€
  • ํฌ๋งํ•˜๋Š” ๋กœ๊ทธ์ธ ์•„์ด๋””

๊ณ„์ • ์ƒ์„ฑ ํ›„ ์‚ฌ์šฉ ๊ด€๋ จ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์•ˆ๋‚ด ํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

์„œ๋ฒ„ ์ ‘์†ํ•˜๊ธฐ

์„œ๋ฒ„ ์ ‘์†์„ ์œ„ํ•ด ssh๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์˜ <USER_ID>๋ถ€๋ถ„์€ ๊ณ„์ • ์‹ ์ฒญํ–ˆ๋˜ ๋กœ๊ทธ์ธ ์•„์ด๋””์ž…๋‹ˆ๋‹ค.

$ ssh hep.khu.ac.kr -p 2222 -l <USER_ID>

์ ‘์†ํ•˜๋ฉด ์•„๋ž˜ ์˜ˆ์‹œ์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

...
Last login: Sun Mar 31 13:59:58 2024 from 194.12.146.87
<USER_ID>@lugia:~$ 

์†Œํ”„ํŠธ์›จ์–ด ์‚ฌ์šฉํ•˜๊ธฐ

anaconda ํ™˜๊ฒฝ ์‚ฌ์šฉํ•˜๊ธฐ

๋ฐ์ดํ„ฐ ๋ถ„์„์„ ์œ„ํ•œ ํ™˜๊ฒฝ์œผ๋กœ anaconda๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. anaconda๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด ๊ธฐ๋ณธ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋‚ด์šฉ์„ ~/.bashrc์— ์ถ”๊ฐ€ํ•˜์‹œ๋ฉด ๋กœ๊ทธ์ธํ•  ๋•Œ ์ž๋™์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

source /store/sw/anaconda3/etc/profile.d/conda.sh

python์ด๋‚˜ root๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” anaconda ํ™˜๊ฒฝ์„ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

conda activate ds4hep

ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ฐœ์ธ๋ณ„ ํ™˜๊ฒฝ์„ ์„ค์น˜ํ•ด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ์˜ <MY_ENVIRONMENT> ๋ถ€๋ถ„์„ ๋ณธ์ธ์ด ์›ํ•˜๋Š” ๋Œ€๋กœ ๋ฐ”๊ฟ” ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ ์ค‘ conda install ๋ถ€๋ถ„๋„ ๋ณธ์ธ์ด ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์„ ์ฐพ์•„ ๋ฐ”๊ฟ” ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

conda create -p ~/<MY_ENVIRONMENT>
conda activate <MY_ENVIRONMENT>
conda install -c conda-forge root
conda install -c conda-forge uproot matplotlib scipy numpy yaml
conda install -c conda-forge jupyter-notebook

๊ณต์šฉ์œผ๋กœ ์‚ฌ์šฉํ• ๋งŒํ•œ ํŒจํ‚ค์ง€๋“ค์ด ์žˆ์œผ๋ฉด ๊ด€๋ฆฌ์ž (๊ณ ์ •ํ™˜ ๊ต์ˆ˜)์—๊ฒŒ ์•Œ๋ ค์ฃผ์‹œ๊ฑฐ๋‚˜, [github issue]๋ฅผ ์ƒ์„ฑํ•ด ์ฃผ์„ธ์š”.

apptiainer/singularity ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ ์‚ฌ์šฉํ•˜๊ธฐ

๋‹ค๋ฅธ Linux๋ฐฐํฌํŒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, anaconda์— ํ™˜๊ฒฝ์ด ์ œ๊ณต๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ผ์ข…์˜ ๊ฐ€์ƒํ™” ํ™˜๊ฒฝ์ธ singularity๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. singularity imageํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ผ๋ฐ˜ ์œ ์ €๊ฐ€ ๊ฐ€์ƒํ™” ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, docker ํ™˜๊ฒฝ์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™€์„œ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ pythia8์˜ dockerํ™˜๊ฒฝ์„ ๊ฐ€์ ธ์™€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

apptainer run docker://mcnetschool/tutorial:pythia-1.0.0

๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋‘” singularity imageํŒŒ์ผ๋“ค์„ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. -B ์˜ต์…˜์„ ์ด์šฉํ•ด ์‹œ์Šคํ…œ ๋‚ด์˜ ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ฐ€์ƒํ™˜๊ฒฝ ๋‚ด์—์„œ์˜ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋ณด์ผ ์ˆ˜ ์žˆ๋„๋ก ๋ฐ”์ธ๋”ฉ ํ•ฉ๋‹ˆ๋‹ค.

apptainer run -B /store/sw/hep/geant4-data:/hep-sw/geant4/share/Geant4-9.6.4/data /store/sw/singularity/geant4/geant4-9.6.4.sif

slurm์„ ์ด์šฉํ•ด ์ž์›์„ ํ• ๋‹น๋ฐ›์•„ ์‚ฌ์šฉํ•˜๊ธฐ

๊ฐ„๋‹จํ•œ ์ž‘์—…์€ ssh์ ‘์† ์งํ›„ ๋กœ๊ทธ์ธ ํ™˜๊ฒฝ์—์„œ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ณ„์‚ฐ๋Ÿ‰์ด๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์€ ์ž‘์—…์€ slurm์„ ์ด์šฉํ•ด ๊ณ„์‚ฐ ๋…ธ๋“œ๋กœ ์ž‘์—…์„ ์ œ์ถœํ•ด ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ž์„ธํ•œ ๋‚ด์šฉ์€ slurm ๊ณต์‹ ๋ฌธ์„œ [Slurm Quick Start]๋‚˜, [๊ณต์‹ ๋งค๋‰ด์–ผ]์„ ์ฐธ๊ณ  ํ•ด ์ฃผ์„ธ์š”.
  • slurm์‚ฌ์šฉ์ค‘ ๋ฌธ์ œ๊ฐ€ ์žˆ์œผ๋ฉด ๊ด€๋ฆฌ์ž (๊ณ ์ •ํ™˜ ๊ต์ˆ˜)์—๊ฒŒ ์•Œ๋ ค์ฃผ์‹œ๊ฑฐ๋‚˜, [github issue]๋ฅผ ์ƒ์„ฑํ•ด ์ฃผ์„ธ์š”.

์•„๋ž˜ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์‹คํ–‰์šฉ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ ํ›„ sbatch ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•ด ์ž‘์—…์„ ์ œ์ถœํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. (๊ณต์‹ ๋งค๋‰ด์–ผ ๋“ฑ์„ ์ฐธ๊ณ ํ•ด ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋“ค์„ ์ด์šฉํ•˜์…”๋„ ๋ฉ๋‹ˆ๋‹ค)

  • ์—ฐ๊ตฌ ์ˆ˜ํ–‰์„ ์œ„ํ•œ ๋ฉ”์ธ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ (์˜ˆ์‹œ: pi๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š” 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)
  • ์‹คํ–‰์šฉ bash script ์ž‘์„ฑ (์˜ˆ์‹œ: run.sh)
#SBATCH -J MYTESTJOB
#SBATCH -p normal
#SBATCH -o OUTPUT_%A_%a.log
#SBATCH -e OUTPUT_%A_%a.err

hostname

source /store/sw/anaconda3/etc/profile.d/conda.sh
conda activate ds4hep

python compute_pi.py
  • ๋กœ๊ทธ์ธ ํ™˜๊ฒฝ์—์„œ job submitํ•˜๊ธฐ (์˜ˆ์‹œ: slurm์˜ array ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด ํ•œ๋ฒˆ์— 10๊ฐœ job์„ ์ œ์ถœ)
sbatch -a [0-9] run.sh

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published