천둥사용자매뉴얼 서울대학교매니코어프로그래밍연구단매니코어소프트 ( 주 ) 버전 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