차례 제 1 장 개요 2 제 2 장 시스템구성 4 제 3 장 사용자환경 6 1 로그인노드접속 파일시스템 제 4 장 프로그래밍환경 8 1 컴

Similar documents
천둥사용자매뉴얼 서울대학교매니코어프로그래밍연구단매니코어소프트 ( 주 ) 버전 년 4월 22일

PowerPoint 프레젠테이션

Microsoft Word - 3부A windows 환경 IVF + visual studio.doc

ISP and CodeVisionAVR C Compiler.hwp

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

Windows 8에서 BioStar 1 설치하기

Install stm32cubemx and st-link utility

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

Microsoft Word - PLC제어응용-2차시.doc

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

Microsoft Word - zfs-storage-family_ko.doc

PowerPoint 프레젠테이션

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

PowerPoint 프레젠테이션

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

목 차 1. 드라이버 설치 설치환경 드라이버 설치 시 주의사항 USB 드라이버 파일 Windows XP에서 설치 Windows Vista / Windows 7에서 설치 Windows

APOGEE Insight_KR_Base_3P11

Contributors: Myung Su Seok and SeokJae Yoo Last Update: 09/25/ Introduction 2015년 8월현재전자기학분야에서가장많이쓰이고있는 simulation software는다음과같은알고리즘을사용하고있다.

Studuino소프트웨어 설치

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

슬라이드 1

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

Microsoft PowerPoint - 권장 사양

작성자 : 기술지원부 김 삼 수

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

Microsoft Word - Armjtag_문서1.doc

슬라이드 1

Tcl의 문법

슬라이드 1

표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1

SBR-100S User Manual

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

Dell과 함께라면 가능합니다. 처음 도입하는 서버 또는 두 번째로 도입하는 서버이거나 네트워크를 확장시키거나 관리 기능을 강화하는 등의 모든 요구 사항을 Dell은 지원할 수 있습니다. Dell은 특성이 각기 다른 모든 조직과 회사마다 서로 다른 시점에 서로 다른 요

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

Splentec V-WORM Quick Installation Guide Version: 1.0 Contact Information 올리브텍 주소 : 경기도성남시분당구구미로 11 ( 포인트타운 701호 ) URL: E-M

Microsoft Word - src.doc

PowerPoint 프레젠테이션

Keil Flexlm 라이선스 설명서

슬라이드 1

ODS-FM1

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

Microsoft PowerPoint - AME_InstallRoutine_ver8.ppt

<4D F736F F D20C5EBC7D5C7D8BCAEBDC3BDBAC5DB5F D2BC0C720424D54B0E1B0FABAB8B0EDBCAD2E646F63>

PowerPoint 프레젠테이션

Adobe Flash 취약점 분석 (CVE )

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

PowerPoint 프레젠테이션

Mango220 Android How to compile and Transfer image to Target

PowerPoint 프레젠테이션

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

..,. Job Flow,. PC,.., (Drag & Drop),.,. PC,, Windows PC Mac,.,.,. NAS(Network Attached Storage),,,., Amazon Web Services*.,, (redundancy), SSL.,. * A

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

슬라이드 1

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

CONTENTS 목차 1. 전원 및 설치시 주의사항 2 2. 시스템 사용시 바른 자세 4 3. 시스템 구성품 확인 5 슬림형 케이스1 6 슬림형 케이스2 7 타워형 케이스1 8 타워형 케이스2 9 일체형 케이스1 10 망분리형 케이스 시스템 시작 및 종료

ICAS CADWorx SPLM License 평가판설치가이드

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

Microsoft Word - CAE 클러스터 환경 구축-ABAQUS.doc

Microsoft PowerPoint - chap01-C언어개요.pptx

Integ

EEAP - Proposal Template

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

ArcGIS Desktop 9.2 Install Guide

PowerPoint 프레젠테이션

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

슬라이드 1

untitled

3.Bladesystem

PowerPoint 프레젠테이션

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

1. efolder 시스템구성 A. DB B. apache - mod-perl - PHP C. SphinxSearch ( 검색서비스 ) D. File Storage 2. efolder 설치순서 A. DB (MySQL) B. efolder Service - efolder

[ 컴퓨터시스템 ] 3 주차 1 차시. 디렉토리사이의이동 3 주차 1 차시디렉토리사이의이동 학습목표 1. pwd 명령을사용하여현재디렉토리를확인할수있다. 2. cd 명령을사용하여다른디렉토리로이동할수있다. 3. ls 명령을사용하여디렉토리내의파일목록을옵션에따라다양하게확인할수

PowerPoint Presentation

IRISCard Anywhere 5

Microsoft PowerPoint - Infiniband 20Gb 40Gb Switch HCA (??_1).ppt [Compatibility Mode]

gcloud storage 사용자가이드 1 / 17

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta

아래 항목은 최신( ) 이미지를 모두 제대로 설치하였을 때를 가정한다

PowerPoint 프레젠테이션

Microsoft PowerPoint - eSlim SV [ ]

server name>/arcgis/rest/services server name>/<web adaptor name>/rest/services ArcGIS 10.1 for Server System requirements - 지

SBR-100S User Manual

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

안전을 위한 주의사항 제품을 올바르게 사용하여 위험이나 재산상의 피해를 미리 막기 위한 내용이므로 반드시 지켜 주시기 바랍니다. 2 경고 설치 관련 지시사항을 위반했을 때 심각한 상해가 발생하거나 사망에 이를 가능성이 있는 경우 설치하기 전에 반드시 본 기기의 전원을

View Licenses and Services (customer)

기존에 Windchill Program 이 설치된 Home Directory 를 선택해준다. 프로그램설치후설치내역을확인해보면 Adobe Acrobat 6.0 Support 내역을확인할수 있다.

NTD36HD Manual

PowerPoint 프레젠테이션

tiawPlot ac 사용방법

vRealize Automation용 VMware Remote Console - VMware

Secure Programming Lecture1 : Introduction

Sena Technologies, Inc. HelloDevice Super 1.1.0

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

PowerPoint Template

Transcription:

천둥사용자매뉴얼 서울대학교매니코어프로그래밍연구단매니코어소프트 ( 주 ) 버전 1.5 2017년 8월 10일

차례 제 1 장 개요 2 제 2 장 시스템구성 4 제 3 장 사용자환경 6 1 로그인노드접속................................ 6 2 파일시스템................................... 7 제 4 장 프로그래밍환경 8 1 컴파일러..................................... 8 2 병렬프로그래밍모델.............................. 8 2.1 SnuCL 사용................................ 10 3 라이브러리.................................... 10 4 개발도구..................................... 11 제 5 장 thor를사용한프로그램실행 13 1 개요........................................ 13 2 작업추가..................................... 14 3 작업확인..................................... 16 4 작업삭제..................................... 18 5 쿼터확인..................................... 19 6 참고........................................ 19 제 6 장 thor 웹인터페이스 20 1

제 7 장 천둥소프트웨어설치안내 25 1 개요........................................ 25 2 Caffe 설치.................................... 26 3 TensorFlow 설치................................. 26 2

제 1 장 개요 천둥은계산노드 52대, 스토리지노드 3대, 로그인노드 2대로이루어진이종클러스터 (heterogeneous cluster) 입니다. 천둥의각계산노드에는 8코어 CPU 2개와 GPU 4대가함께장착되어있습니다. OpenCL (Open Computing Language) 이나 CUDA로 GPU에서범용계산을수행하는프로그램을작성하고천둥에서실행할수있습니다. 나아가 MPI (Message Passing Interface) 나 SnuCL을사용하여여러노드에서병렬로실행되는프로그램을작성할수있습니다. ( 물론 CPU만을사용하는프로그램도실행가능합니다.) 천둥의계산노드 52대의자원을모두활용하면최대 CPU 832코어와 GPU 208대, 메인메모리 6656 GB를동시에사용할수있습니다. 이들의이론최대성능치 (theoretical peak) 는배정도 (double precision) 부동소수점연산기준 148 TFLOPS, 단정도 (single precision) 기준 1269 TFLOPS에이릅니다. 사용자는로그인노드에접속한다음천둥에설치된클러스터관리소프트웨어인 thor 1 를사용해계산노드에서프로그램을실행할수있습니다. 로그인노드와계산노드는모두스토리지노드가제공하는 144 TB 규모의 Lustre 파일시스템을공유하고있습니다. 따라서로그인노드에서프로그램을작성하고데이터를저장하면, 계산노드에서바로그프로그램을실행하고데이터를불러올수있습니다. thor를사용하지않고계산노드에직접접근하는것은불가능합니다. 로그인노드와계산노드는각각다음의용도로사용할수있습니다. 로그인노드 프로그램작성및컴파일 1) 토르 (thor) 는북유럽신화에나오는천둥의신이름입니다. 3

계산량이적은간단한프로그램실행 : 로그인노드에서는 CPU 시간이 10 분이넘어가는프로그램은자동으로종료됩니다. 인터넷연결이필요한파일업로드 다운로드등의작업 : 계산노드는인터넷에연결되어있지않습니다. 계산노드 계산량이많은프로그램실행 GPU를범용계산에사용하는프로그램실행 : 로그인노드에서는 GPU를사용할수없습니다. 여러노드를동시에사용하는프로그램실행본매뉴얼은다음과같이구성됩니다. 2장에서는천둥의구성과사양을설명합니다. 3장에서는사용자계정으로천둥의로그인노드에접속하고파일시스템을사용하는방법등기본적인사용자환경을안내합니다. 4장은작성한프로그램을컴파일하고라이브러리와링크하는방법을설명합니다. 5장에서는 thor를사용해계산노드에서프로그램을실행하는방법을, 6장에서는 thor의웹인터페이스를사용해사용자정보를확인하는방법을설명합니다. 마지막으로 7장은천둥소프트웨어관련규정과주요소프트웨어설치법을안내합니다. 본매뉴얼에나와있지않은사항은천둥홈페이지의사용안내를참고하시거나메일로문의해주시기바랍니다. 4

제 2 장 시스템구성 그림 2.1 은천둥의시스템구성을나타냅니다. 각노드의사양은표 2.1 에정리되어있 습니다. Ethernet switches c00 c12 c24 c36 sm c01 c13 c25 c38 so0 c02 c14 c26 c39 so1 c03 c15 c27 c40 master thor.snu.ac.kr login0 chundoong0.snu.ac.kr c10 c22 c34 c50 login1 chundoong1.snu.ac.kr c11 c23 c35 c51 login2 N/A IB switch IB switch IB switch IB switch IB switch Level 1 switches IB switch IB switch Level 2 switches InfiniBand 4x QDR (40Gb/s) interconnection network 그림 2.1: 천둥의시스템구성. c00 c51는계산노드, sm, so0 so1은스토리지노드, login0 login1은로그인노드입니다. 모든노드는 InfiniBand 4x QDR 네트워크와 Gigabit Ethernet 네트워크로연결되어있습니다. login0 login1은서울대학교학내망을통해인터넷에연결되어있습니다. 5

표 2.1: 천둥노드사양 항목 내용 계산노드 (c00 c51) CPU 2 Intel Xeon E5-2650 (Sandy Bridge-EP, 8-core 2.00GHz) GPU 4 AMD Radeon R9 Nano (c00 c07, 8 노드 ) 4 AMD Radeon HD 7970 (c08 c31, 24 노드 ) 4 AMD Radeon R9 290X (c32 c35, 4 노드 ) 4 NVIDIA GeForce GTX 1080 (c36 c51, 16 노드 ) 메인메모리 128GB (DDR3 1,600MHz) InfiniBand Single-port Mellanox InfiniBand QDR HCA 운영체제 CentOS Linux release 7.2 스토리지노드 (sm, so0 so1) sm: MDS (metadata server); so0 so1: OSS (object storage server) CPU 2 Intel Xeon E5-2620 v3 (Haswell, 6-core 2.40GHz) 메인메모리 sm: 128GB (DDR4 2,133MHz) so0 so1: 256GB (DDR4 2,133MHz) 하드디스크 sm: 16 300GB (ST SAS3, 15,000RPM) so0 so1: 16 6TB (ST SATA3, 7,200RPM) RAID sm: RAID 10 so0 so1: RAID 6 InfiniBand 2 Dual-port Mellanox InfiniBand QDR HCA 운영체제 CentOS Linux release 7.2 파일시스템 Lustre 2.8 로그인노드 (login0 login1) CPU 2 Intel Xeon E5-2650 (Sandy Bridge-EP, 8-core 2.00GHz) 메인메모리 128GB (DDR3 1,333MHz) InfiniBand Single-port Mellanox InfiniBand QDR HCA 운영체제 CentOS Linux release 7.2 6

제 3 장 사용자환경 로그인노드에는 CentOS Linux release 7.2이설치되어있으므로기본적인사용방법은일반적인리눅스서버와동일합니다. 여기서는천둥사용을위해사용자가특별히알아야할내용을위주로설명합니다. 리눅스쉘의일반적인사용법에대해서는별도로다루지않으니관련서적혹은웹사이트를참고하십시오. 1 로그인노드접속 홈페이지에서계정신청후발급받은아이디와패스워드를사용해 SSH로로그인할수있습니다. 로그인노드정보는표 3.1을참고하십시오. 윈도사용자는 PuTTY나 Xshell 등의무료 SSH 클라이언트 ( 단 Xshell은개인및학교사용자한정 ) 를사용해접속하실수있습니다. 리눅스사용자는터미널에서 ssh 명령을사용합니다. 포트는 22번혹은 2222번을중하나를사용하실수있습니다. 표 3.1: 로그인노드목록이름도메인 IP 주소 SSH 포트 login0 chundoong0.snu.ac.kr 147.46.219.141 22, 2222 login1 chundoong1.snu.ac.kr 147.46.219.242 22, 2222 계정발급후처음로그인을하셨다면 passwd 명령을사용해패스워드를바꿔주시기바랍니다. 보안을위해패스워드는가급적알파벳대문자, 소문자, 숫자, 특수문자가조합된의미없는문자열로설정해주시기바랍니다. 모든사용자계정은기본값으로 bash 쉘을사용하도록설정되어있습니다. 본매뉴얼도 bash 쉘을기준으로하여천둥사용법을설명합니다. 7

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 (66 TB) 스크래치 /scratch /scratch/user id 2 TB 7 일이상사용하지않은 디렉터리 (66 TB) 파일은임의로삭제가능 현재자신이사용중인용량은다음과같이확인할수있습니다. [ user _ id@login0 ~]$ lfs quota -u user _id / home [ user _ id@login0 ~]$ lfs quota -u user _id / scratch 로그인노드에 SFTP로접속해홈디렉터리나스크래치디렉터리에파일을업로드 다운로드할수있습니다. 윈도사용자는 WinSCP나 FileZilla 등의무료 SFTP 클라이언트를사용해접속하실수있습니다. 리눅스사용자는터미널에서 scp 명령을사용합니다. 8

제 4 장 프로그래밍환경 1 컴파일러 천둥에설치된컴파일러는표 4.1 과같습니다. 표 4.1: 천둥의컴파일러목록컴파일명령컴파일러버전 C C++ Fortran CUDA GCC 4.8.5 gcc g++ gfortran nvcc 8.0.61 nvcc 2 병렬프로그래밍모델 병렬프로그래밍모델은병렬프로그램이어떻게작성되어야하는지규정하고이를뒷받침하는실행시스템 (runtime system) 과라이브러리를제공합니다. CPU 코어하나에서실행되는프로그램을작성할때는별도의프로그래밍모델이필요치않습니다. 하지만프로그램을 (1) 여러 CPU 코어에서병렬로실행하거나, (2) GPU에서실행하거나, (3) 여러노드에서병렬로실행할때는이에맞는병렬프로그래밍모델이필요합니다. 표 4.2는현재천둥에서사용할수있는병렬프로그래밍모델을정리한것입니다. 표 4.3 과표 4.4는각병렬프로그래밍모델을사용한프로그램을컴파일하는방법을요약한것입니다. 9

표 4.2: 천둥에서사용가능한병렬프로그래밍모델 프로그래밍 병렬화단계 언어지원 모델 CPU 코어 AMD GPU Nvidia GPU 노드 C/C++ Fortran Pthreads OpenMP OpenCL CUDA MPI SnuCL 표 4.3: C/C++ 병렬프로그래밍모델사용프로그래밍모델컴파일러헤더파일컴파일옵션 Pthreads gcc/g++ pthread.h -pthread OpenMP gcc/g++ omp.h -fopenmp OpenCL gcc/g++ CL/cl.h -lopencl CUDA nvcc MPI mpicc/mpic++ mpi.h SnuCL mpicc/mpic++ CL/opencl.h 2.1 절참고 표 4.4: Fortran 병렬프로그래밍모델사용프로그래밍모델컴파일러헤더파일컴파일옵션 OpenMP gfortran -fopenmp MPI mpif77/mpif90 mpif.h 10

2.1 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 export PATH = $SNUCLROOT / bin : $PATH LD_ LIBRARY _ PATH = $SNUCLROOT / lib : $LD _ LIBRARY _ PATH 다음과같은형식으로 Makefile 을작성한다음 make 명령을실행하면프로그램이컴 파일됩니다. 여기서 <program name> 과 <source files> 에는컴파일결과생성될실행 파일의이름과소스코드파일리스트가들어갑니다. EXECUTABLE : = < program name > CCFILES : = < source files > cluster := 1 include $( SNUCLROOT )/ common.mk 3 라이브러리 천둥에는이종클러스터용프로그램개발에필요한여러가지라이브러리가준비되어 있습니다. 천둥에설치된라이브러리목록은표 4.5 와같습니다. 각라이브러리의자세한사용 법은해당라이브러리의매뉴얼을참고하시기바랍니다. 라이브러리사용을위해서는다음설정이필요합니다. $LD LIBRARY PATH 환경변수에라이브러리파일경로를추가합니다. 예를들어 cublas 를사용하고자하는경 ~/.bashrc 파일에다음의내용을추가한다음 쉘을새로시작하거나 source ~/.bashrc 명령을실행해줍니다. export LD_ LIBRARY _ PATH =\ $LD _ LIBRARY _ PATH :/ usr / local / cuda / lib64 11

표 4.5: 천둥에설치된라이브러리목록라이브러리버전링크옵션라이브러리위치 Linear algebra ATLAS 3.10 -latlas /usr/lib64/atlas/ cublas 8.0.61 -lcublas /usr/local/cuda/lib64/ FFT cufft 8.0.61 -lfftw /usr/local/cuda/lib64/ 딥러닝프리미티브 5.0.5 -lcudnn /usr/local/cuda/cudnn-5.0/lib64/ cudnn 5.1.10 -lcudnn /usr/local/cuda/cudnn-5.1/lib64/ 6.0.21 -lcudnn /usr/local/cuda/cudnn-6.0/lib64/ OpenCV 2.4.5 -lopencv core protobuf 8.0.0 -lprotobuf snappy 1.1.4 -lsnappy 기타 /usr/local/cuda/lib64/ 로도접근가능합니다. 프로그램을컴파일할때 -I 옵션으로헤더파일경로를, -L 옵션으로라이브러리파일경로를지정합니다. 예를들어 cublas를사용할경우다음과같이옵션을추가합니다 : -I/usr/local/cuda/include -L/usr/local/cuda/lib64 라이브러리위치가적혀있지않은라이브러리 ( 예 : OpenCV) 는기본경로에설치된라이브러리입니다. 이경우는별도로 texttt$ld LIBRARY PATH 환경변수및 -L 컴파일옵션을설정하지않아도됩니다. 프로그램을컴파일할때 -l 옵션으로라이브러리파일을링크합니다. 표 4.5를참고하시기바랍니다. 4 개발도구 천둥에는표 4.6 과같이프로그램개발에필요한여러가지소프트웨어가설치되어 있습니다. 각소프트웨어의자세한사용법은해당소프트웨어의매뉴얼을참고하시기 바랍니다. 12

표 4.6: 천둥에설치된개발도구목록개발도구버전실행명령 컴파일러및인터프리터 Java 1.8.0 65 javac Perl 5.16.3 perl Python 2.7.5 python 프로파일러 AMD CodeXL 2.2 CodeXLGpuProfiler NVIDIA CUDA command line profiler 8.0.61 nvprof 버전관리 git 1.8.3.1 git Subversion 1.6.23 svn 텍스트처리 Bison 2.7 bison Flex 2.5.37 flex Lex 2.5.37 lex Yacc 1.9 yacc /opt/codexl/ 를 $PATH 환경변수에추가한다음사용할수있습니다. 13

제 5 장 thor 를사용한프로그램실행 1 개요 프로그램이노드에장착된계산자원을최대한활용하고다른사용자의프로그램으로인한성능저하가발생하지않도록, thor는천둥의각노드에서한번에하나의프로그램만을실행시킵니다. 사용자가프로그램실행을요청하면 thor는이를작업큐에추가하고, 빈노드 ( 즉, 프로그램이실행되지않고있는노드 ) 가생길때마다먼저추가된작업부터순차적으로할당해실행시킵니다. 그림 5.1은 thor를사용한작업추가와할당과정을나타냅니다. c00 c01 c02 c03 c04 c05 작업할당 작업큐 작업추가 c50 c51 그림 5.1: thor 를사용해계산노드에서프로그램을실행시키는과정. 14

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의경우 compute node 개수를의미합니다. 이경우노드중한대가 host node와 compute node의역할을동시에수행합니다. --slots [num slots]: mode로 mpi를사용하는경우, 각노드에서몇개의 MPI 프로세스를실행할지를결정합니다. 지정하지않을경우기본값은 1입니다. --device [cpu gpu/nano gpu/290x gpu/1080]: 프로그램이 CPU만사용할지 (cpu) CPU와 GPU를모두사용할지 (gpu/nano, gpu/7970, gpu/290x, gpu/1080) 결정합니다. 이옵션을 cpu로주면 OpenCL 프로그램에서 GPU를사용할수없게됩니다. 이옵션에따라쿼터가다른비율로차감됩니다. NVIDIA GPU를사용한프로그램 ( 예 : CUDA 프로그램, Caffe 등 ) 을사용하고자하는경우, gpu/1080 옵션을사용하여야합니다. 지정하지않을경우기본값은 cpu입니다. --base-dir [here home]: 프로그램내에서상대경로로파일에접근할때어느디렉터리를기준으로할지결정합니다. here로주면현재 thorq를실행하는디렉터리를, home으로주면 /home/user id 디렉터리를기준으로합니다. 15

예를들어 thorq 를 /home/user id/test 디렉터리에서실행하였고프로그램내에 서 foo.txt 파일에접근하는경우, 이옵션을 here 로주면 /home/user id/test/foo.txt 파일을, home 으로주면 /home/user id/foo.txt 파일을읽어오게됩니다. 지정하지않을경우기본값은 here 입니다. --timeout [second unlimited]: 프로그램이지정된시간내에끝나지않을경우 강제종료하게만듭니다. 값은초단위로지정합니다. unlimited 옵션을사용할 경우프로그램이종료될때까지쿼터가소진됩니다. 옵션을지정하지않을경우 기본제한시간은 3 일 (259200 초 ) 입니다. CPU, 혹은 AMD GPU 를사용하고자하는경우제한시간을원하는만큼늘릴 수있습니다. 그러나 NVIDIA GPU 를사용하시는경우제한시간을늘릴수없습 니다. NVIDIA GPU 를사용하여 3 일이상걸리는작업을수행하고자하는경우 천둥관리자메일 (chundoong@snu.ac.kr) 로별도로문의해주시기바랍니다. --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 /7970 -- timeout 100 -- name thorq _ test bin /a. out 10 20 30 Enqueue a new job : Name : thorq _ test 16

Mode : mpi Number of nodes : 10 Device : cpu Base directory : here Timeout : 100 Task : / home / user _id/bin /a. out 10 20 30 Path : / home / user _id Command string : thorq -- add -- mode mpi -- nodes 10 -- device gpu /7970 -- timeout 100 -- name thorq _ test bin /a. out 10 20 30 ========================================= Task 229 is enqueued. thor에의해프로그램실행이완료되면, thorq --add 명령을실행했던디렉터리에 (name).stdout, (name).stderr 파일이생성됩니다. 이파일은프로그램이 stdout( 표준출력 ) 과 stderr( 표준에러 ) 로출력한내용을저장하고있습니다. (name) 은 --name 옵션을사용해지정한이름이며, 이름을지정하지않은경우작업의일련번호가 task 229 와같은형식으로들어갑니다. 3 작업확인 thorq --stat 명령을사용하면특정작업이현재작업큐에서대기중인지 (Enqueued), 계산노드에할당되어실행중인지 (Running), 혹은실행이완료되었는지 (Finished) 확인할수있습니다. 다음은작업큐에서대기중인 229 번작업의상태를확인하는예 입니다. [ user _ id@login0 ~]$ thorq -- stat 229 ================================================================== ID : 229 Name : thorq _ test Status : Enqueued Enqueued : 2013-03 -22 17:25:25 Executed : Finished : Assigned nodes : Device : CPU & GPU ( AMD Radeon HD 7970) # of nodes : 10 Command string : thorq -- add -- mode mpi -- nodes 10 -- device gpu /7970 -- timeout 100 -- name thorq _ test bin /a. out 10 20 30 ================================================================== 17

다음은 229 번작업의실행이완료된후에 thorq --stat 명령을사용한예입니다. 이경우 Finished 뒤에작업이어떻게완료되었는지를나타내는메시지가출력됩니다. [ user _ id@login0 ~]$ thorq -- stat 229 ================================================================== ID : 229 Name : thorq _ test Status : Finished ( success ) Enqueued : 2013-03 -22 17:25:25 Executed : 2013-03 -22 17:25:35 Finished : 2013-03 -22 17:25:50 Executed time : 15. 090000 s Assigned nodes : c16, c17, c18, c19, c20, c21, c22, c23, c24, c25 Device : CPU & GPU ( AMD Radeon HD 7970) # of nodes : 10 Command string : thorq -- add -- mode mpi -- nodes 10 -- device gpu /7970 -- timeout 100 -- name thorq _ test bin /a. out 10 20 30 ================================================================== Finished 뒤에나오는메시지는다음중하나입니다. success: 프로그램실행이끝나작업이완료되었음을나타냅니다. 이것이프로그램이 에러없이 끝났음을의미하는것은아닙니다. 예를들어프로그램이잘못된결과값을출력하고끝나거나, segmentation fault 등의에러가발생하여끝난것일수도있습니다. killed by user: 사용자가뒤에서설명할 thorq --kill 명령을사용해작업을강제종료하였음을의미합니다. timeout: 프로그램실행중에 thorq --add 명령에서설정한 timeout만큼의시간이지나작업을강제종료하였음을의미합니다. not enough quota: 사용자의쿼터가모자라작업을실행시키지못했음을의미합니다. not enough nodes: thorq --add 명령에서지정한노드수가현재서비스중인노드수보다많아작업을실행시키지못했음을의미합니다. 18

killed by system: 기타천둥시스템혹은 thor 프로그램에문제가있어작업이 종료되었음을나타냅니다. 이경우기존에작업이실행중이었더라도따로쿼터를 차감하지않습니다. 작업을다시실행해보시거나메일로자세한원인을문의해 주시기바랍니다. thorq --stat-all 명령을사용하면현재작업큐에서대기중이거나 (Enqueued) 계 산노드에할당되어실행중인 (Running) 모든작업목록을표시합니다. 이전에 thorq --add 명령으로추가한작업이이리스트에나타나지않는다면해당작업은이미완료된 것입니다. 다음은 thorq --stat-all 명령을사용한예입니다. [ user _ id@login0 ~]$ thorq --stat - all Job 229 ( thorq _ test ): Running Job 230 ( second _ test ): Running Job 234 ( task _ 234) : Enqueued Job 240 ( task _ 240) : Enqueued ( end of the list ) 4 작업삭제 thorq --kill 명령을사용하면작업큐에서대기중인작업을삭제하거나, 혹은계산 노드에서실행중이던작업을강제종료할수있습니다. 다음은 229 번작업을삭제하는 예입니다. 작업삭제에는최대 10 초정도의시간이소요될수있으니금방완료되지 않더라도잠시만기다려주십시오. [ user _ id@login0 ~]$ thorq -- kill 229 Job 229 is killed. thorq --kill-all 명령을사용하면작업큐에서대기중이거나계산노드에서실 행중인모든작업을강제종료할수있습니다. 작업삭제에는오랜시간이소요될수 있으니금방완료되지않더라도잠시만기다려주십시오. [ user _ id@login0 ~]$ thorq --kill - all Job 230 is killed. Job 234 is killed. Job 240 is killed. ( end of the list ) 19

5 쿼터확인 thorq --quota 명령을사용하면현재사용자의쿼터가얼마나남아있는지확인할수 있습니다. 단, 쿼터는작업실행이완료된후차감되므로현재계산노드에서실행중인 작업의쿼터사용량은반영이되어있지않습니다. [ user _ id@login0 ~]$ thorq -- quota Quota : 300000 6 참고 계산노드에서실행되는프로그램은 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 20

제 6 장 thor 웹인터페이스 thor는웹으로사용자정보를확인할수있는인터페이스를제공합니다. 웹브라우저에서 http://thor.snu.ac.kr/ ( 서울대학교학내 ) 혹은 http://thor.snu.ac.kr:8080/ ( 학외 ) 로접속하면그림 6.1과같이로그인화면이나타납니다. 천둥아이디와패스워드를입력하면로그인할수있습니다. 그림 6.1: thor 웹인터페이스의로그인화면. 로그인에성공하면그림 6.2 와같은화면이나타납니다. 사용자의최근작업과쿼터 사용및충전내역을확인할수있으며, 좌측상단의버튼을클릭하여그림?? 과같이 21

전체작업내역을확인하거나그림 6.4 와같이쿼터변경내역을확인할수있습니다.. 끝으로, 우측상단의 로그아웃 버튼을클릭하여웹인터페이스에서로그아웃할수 있습니다. 22

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

그림 6.3: thor 웹인터페이스의작업내역확인화면. 24

그림 6.4: thor 웹인터페이스의쿼터내역확인화면. 25

제 7 장 천둥소프트웨어설치안내 1 개요 천둥에서기본적으로제공하지않는응용소프트웨어및라이브러리는사용자의홈디렉토리에설치하여사용합니다. 설치시어려움을겪으실경우, 다음의내용을천둥관리자메일 (chundoong@aces.snu.ac.kr) 로보내주시기바랍니다. 소프트웨어의이름및버전 소프트웨어를소개하는웹사이트의 URL 소스코드혹은설치파일을다운로드하는방법 ( 다운로드가불가능한경우파일첨부 ) 소프트웨어의이름및버전다음과같은경우에는소프트웨어설치가불가능할수있으니양해해주시기바랍니다. 상용소프트웨어의경우구입한곳에서미리라이센스규정을확인해주시기바랍니다. 천둥 1.5 시스템에설치할수없거나, 설치하더라도정상적인사용이불가능한경우 ( 예 : Windows 시스템에서만정상적으로구동되는프로그램의경우 ) 상용소프트웨어로사용자가라이센스를보유하고있지않은경우 상용소프트웨어로사용자가라이센스를보유하고있으나, 라이센스규정상천둥 1.5에설치가불가능한경우 ( 예 : non-commercial 라이센스여서천둥 1.5와같이사용료를받는서버에는설치가불가능한경우 ) 26

기타내부방침에따라설치가불가능할경우천둥에서는딥러닝을위한프리미티브라이브러리 (CUDA, cublas, cudnn) 가설치되어있으며, 이를사용하는딥러닝라이브러리 (Caffe, TensorFlow) 를설치할수있도록지원하고있습니다. 2 Caffe 설치 천둥에는 Caffe 설치를위해필요한라이브러리들이미리설치되어있으며, 사용자홈디렉토리에서 Caffe를빌드하기위한스크립트를제공합니다. 우선아래명령으로설치를위한필요파일을준비합니다. source / opt / caffe _ prerequisites / prepare _ caffe _ prerequisites.sh 이후 Caffe git repository 에서소스코드를복사합니다. git clone https :// github. com / BVLC / caffe. git 미리준비된 Configuration 파일을 Caffe 소스디렉토리에복사합니다. cd caffe cp / opt / caffe _ prerequisites / Makefile. config. 이때 cudnn을사용하고자하는경우 Makefile.config를 vim 등의에디터로연후, 5 번째줄의 USE CUDNN := 1 앞의 # 을지워주석을해제합니다. 이후아래명령으로소스코드를빌드합니다. make -j8 3 TensorFlow 설치 우선사용자의홈디렉토리에사용자계정을위한 pip(python Package Index) 를설치합니다. wget https :// bootstrap. pypa.io/get - pip.py python get - pip.py -- user 27

pip 를사용하여 TensorFlow 를설치합니다.. local / bin / pip install -- user tensorflow - gpu 28