23
() 0.31 201385

코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

천둥 사용자 매뉴얼

서울대학교 매니코어 프로그래밍 연구단

매니코어소프트(주)

버전 0.31

2013년 8월 5일

Page 2: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

차 례

제 1 장 개요 2

제 2 장 시스템 구성 4

제 3 장 사용자 환경 6

1 로그인 노드 접속 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 파일 시스템 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3 응용 소프트웨어 사용 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

제 4장 프로그래밍 환경 9

1 컴파일러 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2 병렬 프로그래밍 모델 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.1 MPI 사용 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2 SnuCL 사용 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

3 라이브러리 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4 개발 도구 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

제 5장 thor를 사용한 프로그램 실행 15

1 개요 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2 작업 추가 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3 작업 확인 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4 작업 삭제 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

5 참고 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

제 6장 thor 웹 인터페이스 20

1

Page 3: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

제1장

개요

천둥은 계산 노드 56대, 스토리지 노드 4대, 로그인 노드 1대로 이루어진 이종 클러스터

(heterogeneous cluster)입니다. 천둥의 각 계산 노드에는 8코어 CPU 2개와 GPU 4대가

함께 장착되어 있습니다. OpenCL (Open Computing Language)로 GPU에서 범용 계산

을수행하는프로그램을작성하고천둥에서실행할수있습니다.나아가 MPI (Message

Passing Interface)나 SnuCL을 사용하여 여러 노드에서 병렬로 실행되는 프로그램을

작성할 수 있습니다. (물론 CPU만을 사용하는 프로그램도 실행 가능합니다.) 천둥의

계산 노드 56대 중 48대가 일반 사용자에게 공개되어 있어, 최대 CPU 768코어와 GPU

192대, 메인 메모리 6144 GB를 동시에 사용할 수 있습니다. 이들의 이론 최대성능치

(theoretical peak, Rpeak)는 194 TFLOPS에 이릅니다.

사용자는 로그인 노드에 접속한 다음 천둥에 설치된 클러스터 관리 소프트웨어인

thor1를 사용해 계산 노드에서 프로그램을 실행할 수 있습니다. 로그인 노드와 계산

노드는 모두 스토리지 노드가 제공하는 88 TB 규모의 Lustre 파일 시스템을 공유하고

있습니다. 따라서 로그인 노드에서 프로그램을 작성하고 데이터를 저장하면, 계산 노

드에서 바로 그 프로그램을 실행하고 데이터를 불러올 수 있습니다. thor를 사용하지

않고 계산 노드에 직접 접근하는 것은 불가능합니다. 로그인 노드와 계산 노드는 각각

다음의 용도로 사용할 수 있습니다.

• 로그인 노드

– 프로그램 작성 및 컴파일

– 계산량이 적은 간단한 프로그램 실행: 로그인 노드에서는 CPU 시간이 10

분이 넘어가는 프로그램은 자동으로 종료됩니다.

1) 토르(thor)는 북유럽 신화에 나오는 천둥의 신 이름입니다.

2

Page 4: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

– 인터넷 연결이 필요한 파일 업로드·다운로드 등의 작업: 계산 노드는 인터넷

에 연결되어 있지 않습니다.

• 계산 노드

– 계산량이 많은 프로그램 실행

– GPU를 범용 계산에 사용하는 프로그램 실행: 로그인 노드에서는 GPU를

사용할 수 없습니다.

– 여러 노드를 동시에 사용하는 프로그램 실행

본매뉴얼은다음과같이구성됩니다. 2장에서는천둥의구성과사양을설명합니다.

3장에서는 사용자 계정으로 천둥의 로그인 노드에 접속하고 파일 시스템을 사용하는

방법 등 기본적인 사용자 환경을 안내합니다. 4장은 작성한 프로그램을 컴파일하고

라이브러리와 링크하는 방법을 설명합니다. 5장에서는 thor를 사용해 계산 노드에서

프로그램을실행하는방법을, 6장에서는 thor의웹인터페이스를사용해사용자정보를

확인하는 방법을 설명합니다.

3

Page 5: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

제2장

시스템 구성

그림 2.1은 천둥의 시스템 구성을 나타냅니다. 각 노드의 사양은 표 2.1에 정리되어 있

습니다.

Ethernet switches

IB switch IB switch IB switch IB switch

IB switch IB switch

IB switch

c00

c01

c02

c03

c14

c15

c16

c17

c18

c19

c30

c31

c32

c33

c34

c35

c46

c47

c48

c55

s0

s1

s2

s3

login0

login1

master 147.46.219.87

147.46.219.141

N/A

Level 1 switches

Level 2 switches

InfiniBand 4x QDR (40Gb/s) interconnection network

그림 2.1: 천둥의 시스템 구성. c00∼c55는 계산 노드, s0∼s3은 스토리지 노드, login0

은 로그인 노드입니다. 모든 노드는 InfiniBand 4x QDR 네트워크와 Gigabit Ethernet

네트워크로 연결되어 있습니다. login0은 서울대학교 학내망을 통해 인터넷에 연결되어

있습니다.

4

Page 6: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

표 2.1: 천둥 노드 사양

항목 내용

계산 노드 (c00∼c55)

CPU 2 × Intel Xeon E5-2650 (Sandy Bridge-EP, 8-core 2.00GHz)

GPU 4 × AMD Radeon HD 7970

메인 메모리 128GB (DDR3 1,600MHz)

InfiniBand Single-port Mellanox InfiniBand QDR HCA

운영체제 Red Hat Enterprise Linux 6.3

이론 최대성능치 노드 당 4.044 TFLOPS

스토리지 노드 (s0∼s3)

s0: MDS (metadata server); s1∼s3: OSS (object storage server)

CPU 2 × Intel Xeon E5-2620 (Sandy Bridge-EP, 6-core 2.00GHz)

메인 메모리 128GB (DDR3 1,333MHz)

하드 디스크 s0: 16 × 300GB (SA-SCSI, 15,000RPM)

s1∼s3: 16 × 2TB (SATA3, 7,200RPM)

RAID s0: RAID 10 (4G cache RAM)

s1∼s3: RAID 6 (4G cache RAM)

InfiniBand 2 × Dual-port Mellanox InfiniBand QDR HCA

운영체제 Red Hat Enterprise Linux 6.3

파일 시스템 Lustre 2.3

로그인 노드 (login0)

CPU 2 × Intel Xeon E5-2620 (Sandy Bridge-EP, 6-core 2.00GHz)

메인 메모리 64GB (DDR3 1,333MHz)

InfiniBand Single-port Mellanox InfiniBand QDR HCA

운영체제 Red Hat Enterprise Linux 6.3

5

Page 7: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

제3장

사용자 환경

로그인 노드에는 Red Hat Enterprise Linux 6.3이 설치되어 있으므로 기본적인 사용 방

법은일반적인리눅스서버와동일합니다.여기서는천둥사용을위해사용자가특별히

알아야할내용을위주로설명합니다.리눅스쉘의일반적인사용법에대해서는별도로

다루지 않으니 관련 서적 혹은 웹 사이트를 참고하십시오.

1 로그인 노드 접속

홈페이지에서 계정 신청 후 발급받은 아이디와 패스워드를 사용해 SSH로 로그인할

수 있습니다. 로그인 노드 정보는 3.1을 참고하십시오. 윈도 사용자는 PuTTY나 Xshell

(개인,학교사용자한정)등의무료 SSH클라이언트를사용해접속하실수있습니다.리

눅스 사용자는 터미널에서 ssh 명령을 사용합니다. 서울대학교 학내에서는 22번 포트,

학외에서는 2222번 포트를 사용해 주십시오.

표 3.1: 로그인 노드 목록

이름 도메인 IP 주소 SSH 포트

login0 chundoong0.snu.ac.kr 147.46.219.141 22(학내), 2222(학외)

login1 (준비 중)

계정 발급 후 처음 로그인을 하셨다면 passwd 명령을 사용해 패스워드를 바꿔 주시

기 바랍니다. 보안을 위해 패스워드는 가급적 알파벳 대문자, 소문자, 숫자, 특수문자가

조합된 의미 없는 문자열로 설정해 주시기 바랍니다.

모든 사용자 계정은 기본값으로 bash 쉘을 사용하도록 설정되어 있습니다. 본 매뉴

얼도 bash 쉘을 기준으로 하여 천둥 사용법을 설명합니다.

6

Page 8: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

2 파일 시스템

로그인노드와계산노드는 Lustre파일시스템을통해 /home과 /scratch를공유하고있

습니다.사용자는자신의홈디렉터리 /home/user id와스크래치디렉터리 /scratch/user id

를사용할수있습니다.홈디렉터리는 1인당최대 64 GB까지사용할수있습니다.스크

래치 디렉터리는 1인당 최대 2 TB까지 사용 가능하되, 7일 이상 사용하지 않은 파일은

임의로 삭제될 수 있습니다. 통상 홈 디렉터리는 사용자 프로그램이나 설정 파일 등 오

래보존해야할파일을저장하는용도로,스크래치디렉터리는프로그램실행에필요한

대용량 데이터를 임시로 저장하는 용도로 사용합니다. 이상의 내용을 요약하면 표 3.2

와 같습니다.

표 3.2: 파일 시스템

분류 파티션 사용자 디렉터리 용량 제한 비고

홈 디렉터리 /home /home/user id 64 GB

(44 TB)

스크래치 /scratch /scratch/user id 2 TB 7일 이상 사용하지 않은

디렉터리 (44 TB) 파일은 임의로 삭제 가능

현재 자신이 사용 중인 용량은 다음과 같이 확인할 수 있습니다.

[user_id@login0 ~]$ lfs quota -u user_id /home

[user_id@login0 ~]$ lfs quota -u user_id /scratch

로그인 노드에 SFTP로 접속해 홈 디렉터리나 스크래치 디렉터리에 파일을 업로드·다운로드할 수 있습니다. 윈도 사용자는 WinSCP나 FileZilla 등의 무료 SFTP 클라이

언트를 사용해 접속하실 수 있습니다. 리눅스 사용자는 터미널에서 scp 명령을 사용합

니다.

3 응용 소프트웨어 사용

천둥에는 표 3.3과 같이 과학 연산을 위한 응용 소프트웨어가 설치되어 있습니다. 각

소프트웨어의 자세한 사용법은 해당 소프트웨어의 매뉴얼을 참고하시기 바랍니다.

7

Page 9: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

표 3.3: 천둥에 설치된 응용 소프트웨어 목록

소프트웨어 버전 설치 경로

DDSCAT 7.2.2 /opt/software/DDSCAT

FDS-SMV FDS 5.5.3, SMV 5.6 /opt/software/FDS

Gromacs 4.6 /opt/software/gromacs

Harminv 1.3.1 /opt/software/harminv

Meep 1.2 /opt/software/meep

NAMD 2.9 /opt/software/NAMD

OpenFOAM CentFOAM 2.2.x /opt/software/openfoam

8

Page 10: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

제4장

프로그래밍 환경

1 컴파일러

천둥에 설치된 컴파일러는 표 4.1과 같습니다.

표 4.1: 천둥의 컴파일러 목록

컴파일러 버전컴파일 명령

C C++ Fortran

GCC 4.4.6 gcc g++ gfortran

LLVM + Clang 3.2 clang clang++

Intel Compiler (준비 중)

2 병렬 프로그래밍 모델

병렬 프로그래밍 모델은 병렬 프로그램이 어떻게 작성되어야 하는지 규정하고 이를

뒷받침하는 실행 시스템(runtime system)과 라이브러리를 제공합니다. CPU 코어 하나

에서실행되는프로그램을작성할때는별도의프로그래밍모델이필요치않습니다.하

지만프로그램을 (1)여러 CPU코어에서병렬로실행하거나, (2) GPU에서실행하거나,

(3) 여러 노드에서 병렬로 실행할 때는 이에 맞는 병렬 프로그래밍 모델이 필요합니다.

표 4.2는현재천둥에서사용할수있는병렬프로그래밍모델을정리한것입니다.표 4.3

은각병렬프로그래밍모델을사용한프로그램을컴파일하는방법을요약한것입니다.

9

Page 11: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

표 4.2: 천둥에서 사용 가능한 병렬 프로그래밍 모델

프로그래밍 병렬화 단계 언어 지원 컴파일러 지원

모델 CPU 코어 GPU 노드 C/C++ Fortran GCC LLVM

Pthreads ⃝ ⃝ ⃝ ⃝OpenMP ⃝ ⃝ ⃝ ⃝OpenCL ⃝ ⃝ ⃝ ⃝ ⃝MPI ⃝ ⃝ ⃝ ⃝ ⃝

SnuCL ⃝ ⃝ ⃝ ⃝ ⃝

표 4.3: 병렬 프로그래밍 모델 사용

프로그래밍 C/C++ Fortran

모델 헤더 파일 컴파일 옵션 헤더 파일 컴파일 옵션

Pthreads pthread.h -pthread

OpenMP omp.h -fopenmp -fopenmp

OpenCL CL/opencl.h -lOpenCL

MPI mpi.h 2.1절 참고 mpif.h 2.1절 참고

SnuCL CL/opencl.h 2.2절 참고

2.1 MPI 사용

천둥에는 MVAPICH2 1.9b와 Open MPI 1.6.4의 2가지 MPI 구현이 설치되어 있으며,

각각은다시 GCC 4.4.6를사용하는버전과 LLVM 3.2를사용하는버전으로나뉘어져있

습니다. mpi-selector-menu 명령을 사용하면 이 중에서 어느 버전을 사용할지 선택할

수 있습니다. 다음은 MVAPICH2 1.9b의 GCC 4.4.6 버전을 선택하는 예입니다.

[user_id@login0 ~]$ mpi -selector -menu

Current system default: openmpi -1.6.4 _gcc -4.4.6

Current user default: <none >

"u" and "s" modifiers can be added to numeric and "U"

commands to specify "user" or "system -wide".

1. mvapich2 -1.9 b_gcc -4.4.6

2. mvapich2 -1.9 b_llvm -3.2

3. openmpi -1.6.4 _gcc -4.4.6

4. openmpi -1.6.4 _llvm -3.2

U. Unset default

Q. Quit

Selection (1-4[us], U[us], Q): 1u

10

Page 12: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

Current system default: openmpi -1.6.4 _gcc -4.4.6

Current user default: mvapich2 -1.9 b_gcc -4.4.6

"u" and "s" modifiers can be added to numeric and "U"

commands to specify "user" or "system -wide".

1. mvapich2 -1.9 b_gcc -4.4.6

2. mvapich2 -1.9 b_llvm -3.2

3. openmpi -1.6.4 _gcc -4.4.6

4. openmpi -1.6.4 _llvm -3.2

U. Unset default

Q. Quit

Selection (1-6[us], U[us], Q): q

WARNING: Changes made to mpi -selector defaults will not be

visible until

you start a new shell!

실행 후에는 쉘을 새로 시작해야(SSH 접속을 종료했다가 다시 로그인해야) 선택한

내용이 반영됩니다. 사용자가 아무 것도 선택하지 않으면 기본적으로 Open MPI 1.6.4

의 GCC 4.4.6 버전이 사용됩니다.

MPI를 사용한 프로그램은 mpicc, mpic++, mpif90 명령을 사용해 컴파일합니다.

2.2 SnuCL 사용

SnuCL은서울대학교매니코어프로그래밍연구단에서개발한프로그래밍모델로,여러

노드에 속한 CPU와 GPU가 모두 단일 시스템에 장착된 것처럼 가정하고 OpenCL 프

로그램을 작성할 수 있게 해 줍니다. 자세한 설명은 http://aces.snu.ac.kr/Center_

for_Manycore_Programming/SnuCL.html을 참고하십시오.

SnuCL을 사용하기 위해서는 우선 ~/.bashrc 파일에 다음의 두 줄을 추가한 다음,

쉘을 새로 시작하거나 source ~/.bashrc 명령을 실행해 추가한 내용을 반영합니다.

$PATH를 설정할 때 $SNUCLROOT/bin이 $PATH보다 먼저 나와야 함을 유의하십시오.

export PATH=$SNUCLROOT/bin:$PATH

export LD_LIBRARY_PATH=$SNUCLROOT/lib:$LD_LIBRARY_PATH

다음과같은형식으로 Makefile을작성한다음 make명령을실행하면프로그램이컴

파일됩니다. 여기서 <program name>과 <source files>에는 컴파일 결과 생성될 실행

파일의 이름과 소스 코드 파일 리스트가 들어갑니다.

11

Page 13: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

EXECUTABLE := <program name >

CCFILES := <source files >

cluster := 1

include $(SNUCLROOT)/common.mk

SnuCL은 노드 간 통신을 위해 내부적으로 mpi-selector-menu 명령으로 선택한

MPI 버전을 사용합니다. 가급적 Open MPI 1.6.4의 GCC 4.4.6 버전을 사용하시기를

권장합니다. SnuCL의 OpenCL 커널 컴파일러와 충돌이 일어날 수 있어 LLVM 버전은

사용할 수 없습니다.

3 라이브러리

천둥에는 이종 클러스터용 프로그램 개발에 필요한 여러 가지 라이브러리가 준비되

어 있습니다. 라이브러리는 표 4.4와 같이 각 컴파일러마다 별도로 설치되어 있으므로,

사용할 컴파일러에 맞는 버전을 선택하십시오.

표 4.4: 라이브러리 설치 경로

컴파일러 항목 경로

GCC 4.4.6 헤더 파일 /opt/library/gcc-4.4.6/include

라이브러리 파일 /opt/library/gcc-4.4.6/lib

LLVM 3.2 헤더 파일 /opt/library/llvm-3.2/include

라이브러리 파일 /opt/library/llvm-3.2/lib

라이브러리 사용을 위해서는 다음 설정이 필요합니다.

• $LD LIBRARY PATH 환경 변수에 라이브러리 파일 경로를 추가합니다. 예를 들어

GCC 4.4.6을사용할경우 ~/.bashrc파일에다음의내용을추가한다음쉘을새로

시작하거나 source ~/.bashrc 명령을 실행해 줍니다.

export LD_LIBRARY_PATH =\

$LD_LIBRARY_PATH :/opt/library/gcc -4.4.6/ lib

• 프로그램을 컴파일할 때 -I 옵션으로 헤더 파일 경로를, -L 옵션으로 라이브러리

파일경로를지정합니다.예를들어 GCC 4.4.6을사용할경우다음과같이옵션을

추가합니다: -I/opt/library/gcc-4.4.6/include -L/opt/library/gcc-4.4.6/lib

12

Page 14: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

• 프로그램을 컴파일할 때 -l 옵션으로 라이브러리 파일을 링크합니다. 표 4.5를

참고하시기 바랍니다.

천둥에 설치된 라이브러리 목록은 표 4.5와 같습니다. 각 라이브러리의 자세한 사용

법은 해당 라이브러리의 매뉴얼을 참고하시기 바랍니다.

표 4.5: 천둥에 설치된 라이브러리 목록

라이브러리 버전 링크 옵션컴파일러 지원

GCC LLVM

Linear algebra

ACML 5.3.0 -lacml ⃝ ⃝-lacml mp ⃝ ⃝

APPML 1.8.291 -lclAmdFft.Runtime ⃝ ⃝-lclAmdBlas ⃝ ⃝

ATLAS 3.10.1 -latlas ⃝ ⃝LAPACK 3.4.2 -llapack ⃝ ⃝OpenBLAS 0.2.6 -lopenblas ⃝ ⃝ScaLAPACK 2.0.2 -lscalapack ⃝ ⃝

FFT

FFTW2 2.1.5 -lfftw ⃝ ⃝FFTW3 3.3.3 -lfftw3 ⃝ ⃝

-lfftw3f ⃝ ⃝

수학 함수

GMP 5.1.1 -lgmp ⃝ ⃝GSL 1.9 -lgsl ⃝

MPFR 3.1.1 -lmpfr ⃝ ⃝

기타

HDF4 4.2.9 -ldf -lmfhdf ⃝ ⃝HDF5 5-1.8.10 -lhdf5 ⃝ ⃝

NetCDF 4.2.1.1 -lnetcdf ⃝ ⃝NetCDF-CXX 4.2 -lnetcdf c++4 ⃝ ⃝

NetCDF-Fortran 4.2 -lnetcdff ⃝ ⃝

13

Page 15: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

4 개발 도구

천둥에는 표 4.6과 같이 프로그램 개발에 필요한 여러 가지 소프트웨어가 설치되어

있습니다. 각 소프트웨어의 자세한 사용법은 해당 소프트웨어의 매뉴얼을 참고하시기

바랍니다.

표 4.6: 천둥에 설치된 개발 도구 목록

개발 도구 버전 실행 명령

컴파일러 및 인터프리터

Java 1.6.0 24 javac

Perl 5.10.1 perl

Python 2.6.6 python

프로파일러

AMD APP Profilera 2.5 sprofile

taub 2.22.1

버전 관리

CVS 1.11.23 cvs

git 1.7.1 git

Mercurial 2.5.2 hg

Subversion 1.6.11 svn

텍스트 처리

ANTLR 2.7.7 antlr

Bison 2.4.1 bison

Flex 2.5.35 flex

Lex 2.5.35 lex

Yacc 1.9 yacc

a /opt/AMDAPP/AMDAPPProfiler-2.5/x86 64

를 $PATH 환경 변수에 추가한 다음 사용할 수

있습니다.

b 각 컴파일러마다 별도로 설치되어 있습니다.

설치경로는 /opt/library/(compiler)/tau

의 꼴입니다. (예: GCC 4.4.6 버전의 경우

/opt/library/gcc-4.4.6/tau.)

14

Page 16: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

제5장

thor를 사용한 프로그램 실행

1 개요

프로그램이 노드에 장착된 계산 자원을 최대한 활용하고 다른 사용자의 프로그램으로

인한 성능 저하가 발생하지 않도록, thor는 천둥의 각 노드에서 한 번에 하나의 프로

그램만을 실행시킵니다. 사용자가 프로그램 실행을 요청하면 thor는 이를 작업 큐에

추가하고, 빈 노드(즉, 프로그램이 실행되지 않고 있는 노드)가 생길 때마다 먼저 추가

된 작업부터 순차적으로 할당해 실행시킵니다. 그림 5.1은 thor를 사용한 작업 추가와

할당 과정을 나타냅니다.

c00

c01

c02

c03

c04

c05

c46

c47

작업 큐

작업 추가 작업 할당

그림 5.1: thor를 사용해 계산 노드에서 프로그램을 실행시키는 과정.

15

Page 17: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

2 작업 추가

thorq --add명령을사용해작업큐에새로운작업을추가할수있습니다.다음과같은

형태로 실행합니다.

[user_id@login0 ~]$ thorq --add --mode [mode] [options]

executable_file [arg1 arg2 ...]

[mode]에는 실행시킬 프로그램의 종류에 따라 다음의 세 가지 중 하나가 들어갑

니다.

• single: 단일 노드를 위해 작성된 프로그램을 실행합니다.

• mpi: MPI를사용해작성된프로그램을여러노드혹은프로세스에서실행합니다.

• snucl: SnuCL을 사용해 작성된 프로그램을 여러 노드에서 실행합니다.

[options]에는 다음과 같은 옵션이 들어갈 수 있습니다. 옵션 사이는 공백으로 구

분됩니다.

• --nodes [num nodes]: mode로 mpi나 snucl을사용하는경우,프로그램을몇개의

노드에서 실행할지를 지정합니다. snucl의 경우 이는 host node와 compute node

를 모두 합한 개수를 의미합니다. 예를 들어 host node와 compute node 4대에서

프로그램을 실행하려면 노드 개수를 5로 설정합니다.

• --slots [num slots]: mode로 mpi를 사용하는 경우, 각 노드에서 몇 개의 MPI

프로세스를 실행할지를 결정합니다. 지정하지 않을 경우 기본값은 1입니다. 이

옵션은 Open MPI를 선택한 경우에만 사용할 수 있습니다.

• --device [cpu|gpu]:프로그램이 CPU만사용할지(cpu) CPU와 GPU를모두사

용할지(gpu) 결정합니다. 이 옵션을 cpu로 주면 OpenCL 프로그램에서 GPU를

사용할수없게됩니다.이옵션에따라쿼터가다른비율로차감됩니다.지정하지

않을 경우 기본값은 cpu입니다.

• --base-dir [home|here]: 프로그램 내에서 상대 경로로 파일에 접근할 때 어느

디렉터리를기준으로할지결정합니다. home으로주면 /home/user id디렉터리를

기준으로하며, here로주면현재 thorq를실행하는디렉터리를기준으로합니다.

16

Page 18: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

예를들어 thorq를 /home/user id/test디렉터리에서실행하였고프로그램내에

서 foo.txt파일에접근하는경우,이옵션을 home으로주면 /home/user id/foo.txt

파일을, here로 주면 /home/user id/test/foo.txt 파일을 읽어 오게 됩니다.

지정하지 않을 경우 기본값은 home입니다.

• --timeout [seconds]:프로그램이지정된시간내에끝나지않을경우강제종료

하게만듭니다.이옵션을사용하면프로그램에버그가있어무한루프에빠지더라

도쿼터가무한히차감되는것을방지할수있습니다.값은초단위로지정합니다.

지정하지 않을 경우 프로그램은 쿼터가 모두 소진될 때까지 계속 실행됩니다.

• --name [job name]: 현재 추가하는 작업을 식별할 수 있는 이름을 지정합니다.

지정하지 않으면 작업에 부여된 일련번호가 이름으로 사용됩니다.

executable file은 실행 파일의 이름이며, 그 뒤에는 실행 시 주어질 인자가 들어

갑니다. MPI나 SnuCL를사용하는경우, executable file에는 mpirun, snuclrun등의

스크립트가 아닌 실행 파일 이름을 바로 지정합니다. thor가 내부적으로 mpirun 혹은

snuclrun 스크립트를 사용해 프로그램을 실행시킬 것입니다. 다음은

• bin/a.out이라는 파일에 10 20 30을 인자로 줘서 실행시키며

• MPI를 사용해 실행하고

• 노드 10대에서 CPU와 GPU를 모두 사용하고

• 실행 후 100초가 지난 다음 프로그램을 강제 종료하며

• 작업의 이름을 thorq test라고 지정하는

경우의 예시를 나타냅니다. 성공적으로 작업이 추가된 경우 해당 작업에 부여된

일련번호(예시의 경우 229번)가 출력됩니다.

[user_id@login0 ~]$ thorq --add --mode mpi --nodes 10 --device gpu

--timeout 100 --name thorq_test bin/a.out 10 20 30

========== Enqueue Information ==========

Job Name: thorq_test

Mode: MPI

Number of Nodes: 10

Device Type: CPU & GPU

Timeout: 100 seconds

Task: /home/user_id/bin/a.out 10 20 30

Command: thorq --add --mode mpi --nodes 10 --device gpu --timeout

100 --name thorq_test bin/a.out 10 20 30

Path: /home/user_id

17

Page 19: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

=========================================

Task 229 is enqueued

thor에 의해 프로그램 실행이 완료되면, thorq --add 명령을 실행했던 디렉터리

에 (job name).stdout, (job name).stderr파일이생성됩니다.이파일은프로그램이

stdout(표준출력)과 stderr(표준에러)로출력한내용을저장하고있습니다. (job name)

은 --name 옵션을 사용해 지정한 이름이며, 이름을 지정하지 않은 경우 작업의 일련번

호가 task 229와 같은 형식으로 들어갑니다.

3 작업 확인

thorq --stat명령을사용하면특정작업이현재작업큐에서대기중인지(Enqueued),

계산 노드에 할당되어 실행 중인지(Running), 혹은 실행이 완료되었는지(Finished) 확

인할 수 있습니다. 다음은 229번 작업의 상태를 확인하는 예입니다.

[user_id@login0 ~]$ thorq --stat 229

==================================================================

Task ID : 229

Task Name : thorq_test

Status : Enqueued

Enqueued : 2013 -03 -22 17:25:25

Executed : 0000 -00 -00 00:00:00

Finished : 0000 -00 -00 00:00:00

Deleted : Not deleted

Nodes Used :

Device : GPU

Command Str.: thorq --add --mode mpi --nodes 10 --device gpu

--timeout 100 --name thorq_test bin/a.out 10 20 30

==================================================================

4 작업 삭제

thorq --kill 명령을 사용하면 작업 큐에서 대기 중인 작업을 삭제하거나, 혹은 계산

노드에서 실행 중이던 작업을 강제 종료할 수 있습니다. 다음은 229번 작업을 삭제하는

예입니다. 작업 삭제에는 최대 10초 정도의 시간이 소요될 수 있으니 금방 완료되지

않더라도 잠시만 기다려 주십시오.

18

Page 20: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

[user_id@login0 ~]$ thorq --kill 229

Task 229 is killed

5 참고

• 계산 노드에서 실행되는 프로그램은 stdin(표준 입력)을 사용할 수 없습니다. 파

일혹은프로그램인자를사용해데이터를입력받으시기바랍니다.로그인노드와

계산 노드는 /home과 /scratch를 공유하고 있으므로 여기에 저장된 파일은 프로

그램이 읽고 쓸 수 있습니다.

• 여러작업에동일한이름을부여한경우,나중에실행된작업의 .stdout, .stderr

파일이 이전에 실행된 작업의 결과를 덮어쓸 수 있으니 유의하십시오.

• 계산 노드에서 프로그램 실행 전에 환경변수를 설정해야 한다면 ~/.bashrc 파

일에 export문을 추가하십시오. 예를 들어 프로그램이 표 4.5의 라이브러리를 사

용하는 경우, ~/.bashrc 파일에 $LD LIBRARY PATH 환경 변수를 설정하는 코드를

추가해 두어야 합니다.

• ~/.bashrc 파일에서 아래의 세 줄은 삭제하지 마십시오. 이를 삭제할 시 thorq

로 작업을 추가하면 ‘mpirun: command not found’ 에러가 발생하고 프로그램이

실행되지 않습니다.

if [ -f /etc/bashrc ]; then

. /etc/bashrc

fi

• MPI나 SnuCL로작성된프로그램을컴파일할때와실행시킬때동일한 MPI버전

이 선택되어 있어야 합니다. 예를 들어 프로그램을 컴파일할 때 Open MPI 1.6.4

의 GCC 4.4.6 버전을 선택해 있었다면, 실행할 때에도 이 버전을 선택해 두어야

합니다.

19

Page 21: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

제6장

thor 웹 인터페이스

thor는 웹으로 사용자 정보를 확인할 수 있는 인터페이스를 제공합니다. 웹 브라우저

에서 http://147.46.219.87/ (서울대학교 학내) 혹은 http://147.46.219.87:8080/

(학외) 로 접속하면 그림 6.1과 같이 로그인 화면이 나타납니다. 천둥 아이디와 패스워

드를 입력하면 로그인할 수 있습니다.

그림 6.1: thor 웹 인터페이스의 로그인 화면.

로그인에 성공하면 그림 6.2와 같은 화면이 나타납니다. 현재 사용자의 잔여 쿼터

를 확인할 수 있으며, 왼쪽의 메뉴를 클릭하여 그림 6.3과 같이 패스워드를 수정하거나

그림 6.4와같이작업큐에삽입된작업,실행중인작업,완료된작업을확인할수있습니

다. 끝으로, 그림 6.5와 같이 우측 상단의 사용자 아이디를 클릭하여 웹 인터페이스에서

로그아웃할 수 있습니다.

20

Page 22: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

그림 6.2: thor 웹 인터페이스의 메인 화면.

그림 6.3: thor 웹 인터페이스의 패스워드 수정 화면.

21

Page 23: 코어 프로그래밍 연구단 코어소프트 주 버전 0.31 2013년 8월 5일chundoong.snu.ac.kr/files/chundoong_user_manual_0.31.pdf · 제1장 개요 천둥은계산 노드56대,

그림 6.4: thor 웹 인터페이스의 작업 확인 화면.

그림 6.5: thor 웹 인터페이스에서 로그아웃하는 화면.

22