병렬형슈퍼컴퓨터 기본사용법 KISTI 슈퍼컴퓨팅센터 목 표 KISTI 에서현재보유하고있는병렬형슈퍼컴퓨터시스 템및이의사용법을소개함으로써사용자가직접프로 그램의컴파일및실행을할수있도록한다. 1
차례 I. 슈퍼컴퓨터와슈퍼컴퓨팅 4 II. III. IV. IBM 시스템의기본환경 36 컴파일링 / 디버깅 / 프로파일링 59 작업실행 87 V. 참고자료 14 VI. 부록 17 제 I 장 슈퍼컴퓨터와슈퍼컴퓨팅 슈퍼컴퓨터의개념, 성능의발전및분 류에따른특징과구조의변천이해 고성능컴퓨팅및병렬프로그래밍모델 의개념이해 2
슈퍼컴퓨터의개념 범용컴퓨터 : 기술적요인과경제적요인에의해성능한계결정슈퍼컴퓨터 : 기술적요인만이성능한계결정 슈퍼컴퓨터의필요성 빠른컴퓨터 큰용량 정확한해 요구 당대기술로가능한최고성능의컴퓨터개발 슈퍼컴퓨터의정의 당대의기술로가능한최고성능의컴퓨터 당대의범용컴퓨터에비해수십 ~ 수천배혹은그이상의성능발휘 기술의발달로슈퍼컴퓨터와범용컴퓨터의명확한구분이모호해짐 현재의범용컴퓨터가과거의슈퍼컴퓨터성능발휘혹은능가 컴퓨터의계산성능으로당대의순위를따져서구분 : TOP5 List Supercomputing Center 5 슈퍼컴퓨터의성능결정요인 (1/6) Hz (Machine Cycle) 프로세서의동작주기 : 예 Pentium 1.4GHz 반도체기술에의해좌우되며이미기존기술의한계에근접 CPI (Cycles Per Instruction) 명령어당소요사이클수 진보된스칼라프로세서들의목표 : CPI 값을낮추는것 CISC : 수십 ~ 수백 CPI 소요 1세대 RISC : 1 CPI 목표 진보된스칼라프로세서들의 CPI 값감소배경 신기술적용 : 파이프라이닝, 슈퍼스칼라기법 Supercomputing Center 6 3
슈퍼컴퓨터의성능결정요인 (2/6) 파이프라이닝기법 명령어의병렬처리기술 명령어수행과정 : FI DI EI WB FI (Fetch Instruction) : 명령어인출 DI (Decode Instruction) : 명령어복호화 EI (Execute Instruction) : 명령어수행 WB (Write-Back) : 쓰기 시간 FI DI EI WB 참고문헌 : IBM AIX DIY Special Edition FI DI EI WB FI DI FI EI DI WB EI WB Supercomputing Center 7 슈퍼컴퓨터의성능결정요인 (3/6) 슈퍼스칼라기법 파이프라인기능유닛을여러개포함 한사이클당여러개의명령어가동시에처리됨 시간 FI DI EI WB 참고문헌 : IBM AIX DIY Special Edition FI DI EI WB FI DI EI WB FI DI EI WB FI DI EI WB FI DI EI WB FI FI DI DI EI EI WB WB Supercomputing Center 8 4
슈퍼컴퓨터의성능결정요인 (4/6) 관점에따른스칼라, 벡터, 슈퍼스칼라의이해 스칼라 벡터 슈퍼스칼라 물리적관점 크기 크기와방향 --- 수학적관점 a, 3, A=(a1,a2,,an) 여러스칼라를동시에처리 컴퓨터관점 a = 1 + 2 c = a * b DO I = 1, n C(I) = A(I) + B(I) ENDDO f = a*b + c*(d+e) Supercomputing Center 9 슈퍼컴퓨터의성능결정요인 (5/6) Flops 초당수행할수있는부동소수점 (floating-point) 연산회수 단일프로세서에대한이론성능 Flops 계산 : 예 : 5.2 GFlops = 1.3 GHz x 4(2 FPUs x 2 (FMA)) FMA : 각부동소수점연산장치 (FPU) 가사이클당부동소수점곱셈연산과덧셈연산을동시에수행할수있는명령. IBM POWER 계열프로세서의특징 - Hz x 1 (P-III) - Hz x 2 (P-IV: SSE2) 데이터전송능력 계산에필요한데이터를연산장치로공급하는능력 CPU 메모리, 메모리 디스크, 시스템 시스템 : 캐시, 인터리빙, 스트라이핑기법등을적용 Supercomputing Center 1 5
슈퍼컴퓨터의성능결정요인 (6/6) 캐시 (Cache) 컴퓨터의연산성능을향상시키기위해사용되는고속의기억장치 주기억장치에비해프로세서로부터의접근속도가월등히빠름 프로그램에서빈번히사용되는데이터와명령어들을저장 용량및접근속도가다른 Level 1/2/3 등의다단계캐시를사용 인터리빙 (Interleaving) 디스크드라이브혹은메모리를좀더효율적으로사용하기위해여러디스크섹터혹은메모리세그먼트에걸치는데이터를접근시간을고려해서엇갈리게배치하는기법 스트라이핑 (Striping) 디스크에저장된데이터의빠른액세스및디스크장애시신속한데이터가용성을지원하기위해논리적으로연속된데이터를물리적으로여러개의장치에나누어기록하는기법 Supercomputing Center 11 TOP5 List (1/3) 가장빠른컴퓨터의세계 5 위순위 1993 년이후실시 매년 6월과 11 월 Supercomputing Conference 를통해 2회발표 (24년 11 월 24번째 List 발표 ) http://www.top5.org 성능평가기준 : LINPACK 벤치마크 N x N 행렬 A로구성된연립방정식 Ax=b 의해를구하는성능을 Flops(Floating (Floating-point operations per second) 단위로표시 HPL : 분산메모리시스템을위한고성능 LINPACK 벤치마크패키지 http://www.netlib.org/benchmark/hpl www.netlib.org/benchmark/hpl/ 슈퍼컴퓨터시장의동향, 아키텍처및관련기술발전방향에대한중요한지표 Supercomputing Center 12 6
TOP5 (24. 11.) Rank Computer TOP5 List (2/3) Rmax (GFlops) Installation Site Country Year Processors Rpeak (GFlops) Nmax 1 IBM BlueGene 772 IBM/DOE USA 24 32768 9175 933887 2 SGI SGI Altix 1.5G, Voltaire Infiniband 5187 Ames Research Center USA 24 116 696 12924 3 NEC Earth-Simulator 3586 Earth Simulator Center Japan 22 512 496 1752 4 IBM eserver BladeCenter JS52 253 Barcelona Supercomputer Center Spain 24 3564 31363 812592 5 California Intel Itanium2 Lawrence Livermore 1994 Digital Tiger4 1.4GHz National Laboratory USA 24 496 22938 975 : : : : : : : : : : : : : : : : : : : : 5 HP SuperDome 875MHz Hyperplex 85.6 SBC Service Inc USA 24 416 1456. 자료출처 : www.top5.org KISTI IBM 시스템 ( 병렬형슈퍼컴퓨터 ) 1차 (665.6GFlops GFlops) ) + 2 차 (3699.2GFlops GFlops) 4.3TFlops ( 이론성능 ) 규모 KISTI NEC 시스템 ( 벡터형슈퍼컴퓨터 ) 1차 (8GFlops GFlops) ) + 2 차 (16GFlops GFlops) 24GFlops ( 이론성능 ) 규모 Supercomputing Center 13 TOP5 List (3/3) TOP5 (24. 11.) 국내에도입된슈퍼컴퓨터 Manufacturer Rank Manufacturer (GFlops) (GFlops) Rmax Rpeak Computer Installation Site Country Year Processors Nmax 64 IBM xseries Xeon 2.4Ghz 367 KIST Korea 24 124 4915.2 23 86 Cray Inc Cray X1 2188.15 Korea Meteorological Adminitration Korea 24 188 246.4. 155 IBM xseries Xeon 2.8GHz 1762 KISTI Korea 24 512 2867 156 IBM pseries 69 Turbo 1.7Gh 176 KISTI Korea 23 544 2867 4 227 Self-made Pegasus P4 Xeon Cluster 2.2/2.4/2.8 GHz - Giganet - 1283 Seoul National University Korea 24 52 2557. MSWindows 268 HP Integrity Superdome 1.5Ghz 121 TelecomSKT Korea 24 288 1728. 31 HP SuperDome 875MHz / HyperPlex 1138 Zungwon Korea 24 576 216. 365 HP SuperDome 875MHz / HyperPlex 124.3 POSDATA Korea 24 512 1792. 389 HP SuperDome 875MHz / HyperPlex 113 Youngwoo Korea 24 512 1792. 39 HP SuperDome 875MHz / HyperPlex 113 Zungwon Korea 24 512 1792. 472 HP SuperDome 875MHz / HyperPlex 113 Samsung SDS Korea 24 448 897. 자료출처 : www.top5.org Supercomputing Center 14 7
GFlops 1 1 1 5 1 1 143 Fujitsu 124 Intel VPP Paragon TMC 59 (14) (368) CM5 (124) 17 Fujitsu VPP (14) Cray 2 13 13 13 13 13 13 13 KIST/SERI Cray C9 (4) KIST/SERI 1 (16) 1 슈퍼컴퓨터성능의발전 (1/2) Jun-93 Nov-93 Jun-94 세계 1위국내 1위 R max(gflops) Nov-94 Jun-95 Nov-95 Jun-96 ASCI Red (7264) 168 ASCI Red Intel Paragon (9152) 1338 Cray T3E9 KIST/SERI (128) 2121 2379 ASCI Red (9472) Cray T3E9 KIST/SERI (132) Nov-96 Jun-97 Nov-97 Jun-98 Nov-98 Jun-99 Nov-99 Jun- 4938 Earth Simulator NEC Vector (512) 7226 ASCI Red (9632) Nov- Jun-1 Nov-1 Jun-2 Nov-2 3586 3586 ASCI White IBM SP (8192) Hitachi 368 SR2xxx 36.4 22 Hitachi (248) 181 181 212 212 SR2xxx 123 (124) NEC SX-5 69 69 77 82 82 KMA (16/24/28) 111 685.5 IBM p69 KISTI (128) BlueGene (32768) 772 2847 367 367 KIST IBM xseries Cluster (124) 자료출처 : www.top5.org ( ) 안은프로세서수 Jun-3 Nov-3 Jun-4 Nov-4 Supercomputing Center 15 슈퍼컴퓨터성능의발전 (2/2) 1 1127.481TFlops 1 1 1 ~ 5 Sum 7.72TFlops GFlops 1 1 898GFlops Rank 1 43.4GFlops 1 1 1 59GFlops Jun-93 Nov-93 Jun-94 1GFlops Nov-94 Jun-95 Nov-95 Jun-96 Nov-96 Rank 5 Jun-97 Nov-97 Jun-98 Nov-98 Jun-99 Nov-99 Jun- Nov- Jun-1 Nov-1 Jun-2 자료출처 : www.top5.org Nov-2 Jun-3 Nov-3 Jun-4 Nov-4 Supercomputing Center 16 8
슈퍼컴퓨터의구분 현재의모든슈퍼컴퓨터는다수의프로세서를사용 슈퍼컴퓨터를분류하는데는여러다른방법이존재하며, 모든슈퍼컴퓨터를명확하게분류할수있는단일구분방법은없음 프로세서 (CPU) 에의한구분 벡터프로세서, 범용 ( 스칼라 ) 프로세서 메모리접근방식에따른구분 공유메모리시스템, 분산메모리시스템, 분산공유메모리시스템 Flynn 에의한구분 SISD, SIMD, MISD, MIMD Supercomputing Center 17 프로세서에의한구분 (1/2) 스칼라프로세서 범용프로세서, 저가 CISC (Complex Instruction Set Computer) : 한명령어에메모리접근, 수치연산, 기억장치주소계산등다수의저수준연산을수행하는명령어들로동작하는프로세서 Motorola 68x, Intel x86 계열 RISC (Reduced Instruction Set Computer) : CISC 의복잡하고많은명령어들대신빠르게실행될수있는단순한명령어들의조합으로동작하는프로세서 Berkeley RISC, HP-PA, PA, Clipper, i96, AMD 29, MIPS R2, DEC Alpha, PowerPC, IBM POWER 계열 벡터프로세서 벡터데이터의수치연산전용프로세서, 고가 벡터프로세싱 : 한명령어에벡터데이터를동시처리 NEC Vector, Hitachi SR8xxx, Fujitsu VPP, Cray Vector Supercomputing Center 18 9
프로세서에의한구분 (2/2) 프로세서종류및메모리접근방식에따른장단점 Shared Distributed vs. Shared Distributed Vector Excellent Effective Performance Ease of of Use(Auto Parallelization) High Cost,Limited Scalability Wide Application Range Difficult Parallelization (Require High Skills) High Scalability Scalar Limited Scalability Ease of of Use (Auto Parallelization) Difficult Parallelization (Require High Skills) Poor Effective Performance Excellent Cost/Peak Performance :Merits :Demerits Supercomputing Center 19 메모리접근방식에따른구분 (1/4) 공유메모리시스템 (1) UMA (Uniform Memory Access) : 전형적인 SMP (Symmetric Multiprocessor) 시스템 논리적, 물리적공유메모리 단일노드내모든프로세서의메모리접근속도균일 예 : Intel Dual CPU system, Compaq ES4, Sun E1, HP N-classN Node Memory P P P P Supercomputing Center 2 1
메모리접근방식에따른구분 (2/4) (2) NUMA (Non Uniform Memory Access) 혹은 CC-NUMA (Cache Coherent NUMA) UMA 의확장성한계극복하기위한모델 논리적공유메모리, 물리적분산메모리 하드웨어적연결상태에따라메모리접근속도다름 : local vs. remote Compaq GS32, HP Superdome, SGI Origin 3 Single Logical Memory Interconnect Memory Memory Memory P P P P P P P P P Supercomputing Center 21 메모리접근방식에따른구분 (3/4) 분산메모리시스템 MPP (Massively Parallel Processor) Communications Network Node 1 Node 2 Node N P P P M M M Supercomputing Center 22 11
메모리접근방식에따른구분 (4/4) 분산공유메모리시스템 SMP 클러스터 Communications Network SMP Node 1 SMP Node 2 SMP Node N Memory Memory Memory P P P P P P P P P Supercomputing Center 23 Flynn 에의한구분 프로그램의명령어와데이터흐름의관계에따라구분 DATA SISD : 단일명령어가단일데이터처리 SIMD : 단일명령어가다수의데이터처리 MISD : 다수의명령어가단일데이터처리, 실적용예없음 MIMD : 다수의명령어가다수의데이터처리 Single Instruction Single Data SISD INSTRUCTION Multiple Instruction Single Data MISD Single Instruction Multiple Data SIMD Multiple Instruction Multiple Data MIMD Supercomputing Center 24 12
슈퍼컴퓨터구조의변천 (1/3) 처리방식 스칼라프로세싱 벡터프로세싱 ( 메모리 : 메모리 ) 벡터프로세싱 ( 벡터레지스터 ) 공유메모리병렬프로세싱 분산메모리병렬프로세싱 분산공유메모리병렬프로세싱 스칼라프로세서 성능한계 구조 벡터프로세서 메모리처리량에대한병목현상 벡터레지스터 벡터라이징컴파일러 단일프로세서성능한계 멀티프로세서 병렬화컴파일러 메모리처리량에대한병목현상 분산메모리 코딩의어려움 분산공유메모리 스칼라프로세서 벡터프로세서 벡터벡터파이프 벡터프로세서 벡터벡터파이프벡터벡터레지스터 프로세서 프로세서 프로세서 주기억장치 프로세서 주기억장치 SMP SMP 주기억장치 주기억장치 주기억장치 주기억장치 네트워크 네트워크 메인프레임 CDC66/76 CYBER2 CRAY-1 SX-2 VP-2 S81/S82 CRAY-XMP/YMP CRAY-C9/T9 SX-3/SX-4/SX-5 VP2 S38 VPP5 T3E SP-2 CM5 ncube PARAGON SX-4/SX-5 RS6/SP O2K TX7 Supercomputing Center 25 슈퍼컴퓨터구조의변천 (2/3) Processors 자료출처 : www.top5.org 5 SIMD Number of Systems 4 3 2 1 Jun-93 Nov-93 Jun-94 Vector Scalar Nov-94 Jun-95 Nov-95 Jun-96 Nov-96 Jun-97 Nov-97 Jun-98 Nov-98 Jun-99 Nov-99 Jun- Nov- Jun-1 Nov-1 Jun-2 Nov-2 Jun-3 Nov-3 Jun-4 Nov-4 Supercomputing Center 26 13
Number of Systems 5 4 3 2 1 슈퍼컴퓨터구조의변천 (3/3) SIMD Jun-93 Nov-93 Jun-94 CM5 CM2 Y-MP C9 Single Processor SX3 Paragon VP5 Nov-94 Jun-95 Nov-95 Jun-96 Architectures 자료출처 : www.top5.org T3D SMP MPP SP2 Nov-96 Jun-97 Nov-97 Jun-98 Nov-98 Jun-99 Nov-99 Jun- Nov- Jun-1 Nov-1 Jun-2 Nov-2 Jun-3 Cluster-NOW Clustered Sun HPC T3E Constellation Sun HPC ASCI Red Nov-3 Jun-4 Nov-4 Supercomputing Center 27 KISTI 의병렬형슈퍼컴퓨터 IBM pseries 69 SMP Cluster, MIMD CPU 성능 : 1.3, 1.7 GHz CPU 수 : 672 개이론성능 : 4364.8 GFlops 기억용량 : 44 GB 메모리 : 분산공유메모리 HP SMP SMP Cluster, MIMD CPU 성능 : 731, 667, 5 MHz CPU 수 : 8 개이론성능 : 11.9 GFlops 기억용량 : 8 GB 메모리 : 분산공유메모리 Hamel SMP Cluster, MIMD CPU 성능 : 2.8 GHz CPU 수 : 512 개이론성능 : 2.86 TFlops 기억용량 : 3GB/node 메모리 : 분산메모리 Supercomputing Center 28 14
고성능컴퓨팅 (1/3) 고성능컴퓨팅의구성요소 고성능하드웨어 : CPU, 메모리, I/O, 네트워크기술 슈퍼컴퓨터 고성능소프트웨어 : 하드웨어의성능을충분히살릴수있도록설계 고성능소프트웨어의구현 단일프로세서성능최적화 명령어수준의병렬성의극대화 : 파이프라이닝, 슈퍼스칼라, 벡터프로세싱기법 메모리액세스시간의극소화 : 캐쉬메모리사용최적화 다중프로세서를이용한병렬화 루프 / 스레드수준또는프로세스수준의병렬성 공유 / 분산메모리프로그래밍모델 Supercomputing Center 29 벡터컴퓨팅 고성능컴퓨팅 (2/3) 스칼라프로세서 Scalar a1 Scalar b1 벡터프로세서 Vector A(n) Vector B(n) Scalar Arithmetic Logic Unit Vector Arithmetic Logic Unit a1 + b1 Scalar A(n) + B(n) Vector Supercomputing Center 3 15
고성능컴퓨팅 (3/3) 병렬컴퓨팅 Single Processor Memory Processor Multiple Processors Memory P P 1 P 2 P 3 Time A B C D Program A B D C 부프로그램으로분해및병렬실행 Time Supercomputing Center 31 병렬프로그래밍모델 (1/4) 스레드와프로세스 싱글스레드프로세스 멀티스레드프로세스 Process Process Memory Data Memory Data Master Thread Master Thread Worker Thread Supercomputing Center 32 16
병렬프로그래밍모델 (2/4) 공유메모리모델 : OpenMP, POSIX Thread (Pthread) 프로그래밍 공유데이터 (a=1) 프로세스스레드스레드 분산메모리모델 : MPI, PVM 프로그래밍 로컬데이터 (a=1) 메시지전송메시지수신 프로세스 데이터 a 의동기화필요 로컬데이터 (a=2) 메시지수신메시지전송프로세스 Supercomputing Center 33 병렬프로그래밍모델 (3/4) 메모리형태별시스템의특성비교 확장성 가 격 복잡성 시스템별적용모델 구분 공유메모리시스템 (SMP) 분산메모리시스템 (MPP) 분산공유메모리시스템 (SMP 클러스터 ) 공유메모리 < 분산메모리 공유메모리 > 분산메모리 공유메모리 < 분산메모리 특 징 공유메모리병렬프로그래밍모델 멀티스레드, 루프수준의병렬화 메시지패싱 (Message Passing) 프로그래밍모델 하이브리드프로그래밍모델 적용모델 OpenMP ( 표준 ) Pthread ( 표준 ) MPI ( 표준 ) PVM OpenMP + MPI Supercomputing Center 34 17
문제규모계산량모( ( 계량) 병렬프로그래밍모델 (4/4) 데스크탑순차프로그래밍 공유메모리 OpenMP Pthread 분산메모리분산공유메모리 MPI, PVM 하이브리드 하이브리드문시스템규모 (CPU 개수, 메모리크기 ) Supercomputing Center 35 제 II 장 IBM 시스템의기본환경 KISTI IBM 시스템의내용 / 구성및 기본적인사용법이해 설치되어있는도구및프로그램 파악 18
구분 시스템내용 컴퓨팅시스템 [25. 2. 현재 ] 로그인시스템 시스템명 1차 p69 2차 p69 p63 수량 4노드 17 노드 2노드 CPU 프로세서동작주기 (GHz) 전체이론최고성능 (GFlops) 전체개수 ( 개 ) 주기억장치용량 (GB) 1.3 665.6 [166.4/ 노드 ] 128 [32/ 노드 ] 688 [28 1, 16 3] 1.7 3,699.2 [217.6/ 노드 ] 544 [32/ 노드 ] 3,712 [192x1, 256x7] 1. 32 [16/ 노드 ] 8 [4/ 노드 ] 16 [8/ 노드 ] 외장디스크용량 (TB) 98 Supercomputing Center 37 시스템개략구성도 GbE x 1 채널 / 노드 [24. 2. 현재 ] p63 1차 p69 2차 p69 SP SW2 x 2 채널 / 노드 nobela nobel1 nobel3 nobel5 nobel6 nobel7 nobel8 4CPU 8GB nobelb 4CPU 8GB 16CPU 12GB NFS1 GPFS1 24CPU 152GB GPFS3 32CPU 192GB 32CPU 192GB 32CPU 192GB 32CPU 192GB 32CPU 256GB 외부로그인 nobel2 16CPU 12GB nobel4 24CPU 2GB 32CPU 192GB... 32CPU 192GB nobel21 외부사용자네트워크 NFS2 GPFS2 GPFS4 nobel9 nobel2 일반 ( 유료 ) 사용자지원 Grand Challenge 과제 Supercomputing Center 38 19
POWER4 프로세서칩의구조 클럭속도 단일칩당내장 CPU 수 1.3 / 1.7GHz (p69) 1.GHz (p63) 2 개 D I > 1GHz CPU > 1GHz CPU Shared L2 Cache D I L1 캐시 데이터캐시용량 : 32KB 명령캐시용량 : 64KB L3 Controller L3 Directory FABRIC CONTROLLER XBAR SWITCH 캐시구조 L2 캐시 L3 캐시 용량 : 1.44MB 대역폭 : 1GB/s 이상 용량 : 32MB 대역폭 : 1GB/s 이상 L3 Cache Memory Processor local bus I/O Bus Supercomputing Center 39 POWER4 시스템기본구성단위 MCM (Multi-Chip Module) 4개칩 (8개 CPU) 으로구성 IBM p69 : 단위노드당 4개 MCM 장착 32 CPU/ 노드 SCM (Single-Chip Module) 1개칩 (2개 CPU) 으로구성 IBM p63 : 단위노드당 2개 SCM 장착 4 CPU/ 노드 Supercomputing Center 4 2
노드구성 노드 nobela.supercomputing.re.kr re.kr nobelb.supercomputing.re.kr nobel1.supercomputing.re.kr ~ nobel4.supercomputing.re.kr nobel5.supercomputing.re.kr ~ nobel2.supercomputing.re.kr nobel21.supercomputing.re.kr 시스템접속 (1/3) IP 주소 15.183.5.11 15.183 5.12 - - - 용도 로그인노드 a 로그인노드 b 컴퓨팅노드 1 ~ 컴퓨팅노드 4 컴퓨팅노드 5 ~ 컴퓨팅노드 2 컴퓨팅노드 21 비고 외부로그인 (p63) 일반사용자 (1 차 p69) 일반사용자 (2 차 p69) BMT, Grand Challenge (2 차 p69) Supercomputing Center 41 시스템접속 (2/3) 일반접속 : ssh,, rlogin ssh 사용 ( 예 : 사용자계정 h123abc) $ ssh h123abc@nobelb.ksc.re.kr rlogin, rsh r* 명령가능호스트시스템설정 $ rlogin nobel1 $ rsh nobel1 Supercomputing Center 42 21
파일이동 : ftp, sftp,, rcp 사용 ftp 사용 시스템접속 (3/3) $ ftp nobela.supercomputing.re.kr sftp 사용 ( 예 : 사용자계정 h123abc) $ sftp h123abc@nobela.supercomputing.re.kr rcp 사용 : 가능호스트시스템설정 $ rcp sample h123abc@nobel1.supeercomputing.re.kr:/xtmp1/test/ $ rcp sample nobel1:/xtmp1/test/ * 서로다른노드별스크래치간에파일복사가필요할때유용 Supercomputing Center 43 파일시스템 (1/5) 시스템구분 파일시스템 용량 용도 비고 홈디렉토리 /edun /inst /system 1TB 5GB 4GB 교육계사용자 연구 산업계사용자 내부사용자 사용자별디스크사용량제한 (quota) : 3GB 스크래치디렉토리 /xtmp1 /gpfs1 ~ /gpfs4 2TB 각 6.4TB 노드별로컬스크래치 ( 로그인노드 14GB) 컴퓨팅노드 GPFS 공유스크래치 스크래치삭제정책 -작업종료후 1일이상경과파일 /ytmp 4GB 네트워크공유스크래치 (nfs1) Supercomputing Center 44 22
파일시스템 (2/5) 홈디렉토리의사용자별할당량및사용량파악명령 (ksh shell) $ rsh nfs2 quota Disk quotas for user h123abc (uid 456): Filesystem blocks quota limit grace files quota limit grace /edun 346592 3 372 11881 blocks : KB 단위디스크용량제한크기 files : 최대허용파일개수 quota : soft limit limit : hard limit grace : soft limit 초과 hard limit 미만지속가능기간 Supercomputing Center 45 파일시스템 (3/5) 홈디렉토리 NFS (Network File System), 각노드에서 Auto Mount 됨 공유스크래치디렉토리 GPFS (General Parallel File System) 공유 /gpfs1 ~ /gpfs4, nobel1 ~ nobel21 컴퓨팅노드에서공유 I/O 성능이 NFS 방식보다우수, 병렬 I/O 지원 NFS (Network File System) 공유 /ytmp, 모든노드에서 Auto Mount 됨 각노드별스크래치디렉토리 /xtmp1, 각노드의로컬디렉토리 독립적으로운영되며, 순차 I/O 성능이 GPFS 공유스크래치보다우수 Supercomputing Center 46 23
파일시스템 (4/5) 실습예제 Auto Mount 관련 홈디렉토리의 Auto Mount 확인 $ pwd [ 개인홈디렉토리 ] $ vi sample ## Check for the home directory auto-mounting! ## $ ls sample $ rsh nobel1 $ ls sample $ exit $ rsh nobel2 # nobel3, nobel4,, nobel21 각각에대하여도확인 Supercomputing Center 47 파일시스템 (5/5) /ytmp NFS 공유스크래치디렉토리의 Auto Mount 확인 /xtmp1 로컬스크래치디렉토리의독립적인운영 $ pwd [ 개인홈디렉토리 ] $ ls sample $ cp sample /ytmp/[test_dir]/ $ cp sample /xtmp1/[test_dir]/ $ ls /ytmp/[test_dir]/ sample $ ls /xtmp1/[test_dir]/ sample $ rsh nobel1 $ ls /ytmp/[test_dir]/ sample $ ls /xtmp1/[test_dir]/ # /xtmp1 은각노드별로컬디렉토리 ls: xxxx-xxx The file /xtmp1/[test_dir]/ does not exist. $ exit $ rsh nobel2 # nobel3, nobel4,, nobel21 각각에대하여도확인 Supercomputing Center 48 24
사용자작업환경 (1/2) Shell: sh, ksh, csh POSIX [Bourne] Shell: /bin/sh Korn Shell: /bin/ksh /etc/profile $HOME/.profile $HOME/.env C Shell: /bin/csh /etc/csh.cshrc $HOME/.cshrc $HOME/.login 작업환경수정 Terminal Type 변경 $ export TERM=vt1 # sh, ksh일경우 % setenv TERM vt1 # csh일경우 실행경로지정 $ export PATH=$PATH:/usr/lpp/LoadL/full/bin # sh, ksh일경우 % setenv PATH $PATH:/usr/lpp/LoadL/full/bin # csh일경우 환경변수확인 : echo $ 변수명, env 변수명, set Supercomputing Center 49 사용자작업환경 (2/2) 기타 Password 변경 $ yppasswd Default shell 변경 $ yppasswd s 명령라인에디팅모드변경 $ set -o vi # Korn Shell 명령라인 vi 에디팅모드 Backspace Delete 기능지정 $ stty erase [backspace 입력 ] Supercomputing Center 5 25
주요소프트웨어 구분 운영체제 병렬환경지원 배치작업관리 성능분석 프로그래밍언어 수학라이브러리 HPSS 상용소프트웨어 AIX5L V5.1 PE V3.2 컴퓨팅노드 LoadLeveler V3.1 Performance Toolbox V5.1 XL Fortran for AIX V8.1 C for AIX V6. VisualAge C++ Pro for AIX V6. LAPACK, ScaLAPACK ESSL V3.3, PESSL V2.3 IMSL(F9 MP), NAG(F77 SMP) HPSS pftp Client 로그인노드 ABAQUS, LS-DYNA3D, CFX, STAR-CD, FLUENT Gaussian, NCAR Graphics Supercomputing Center 51 PE 소개 (1/2) Parallel Environment Software: Version 3.2 IBM 의 MPI 구현제품 컴파일러스크립트, 라이브러리, 디버거, POE MPI-IO IO 지원 : 병렬파일 I/O MPI 일방통신지원 MPI 공유메모리메시지전달지원 32/64 비트메시지패싱지원 Supercomputing Center 52 26
PE 소개 (2/2) PE 리스트 메시지패싱라이브러리 병렬컴파일스크립트 병렬실행환경 X-윈도우병렬실행분석도구 병렬파일복사유틸리티 병렬디버거 병렬프로파일링도구 병렬성능분석도구 MPI, MPL mpxlf[9 95], mpcc, mpcc, mpxlf[9 95]_r, mpcc_r POE Program Marker Array mcp, mcpscat, mcpgath pdbx xprofiler PCT(Performance Collection Tool) UTE(Unified Trace Environment) PVT(Profile Visualization Tool) Supercomputing Center 53 공개라이브러리 BLAS (Basic Linear Algebra Subprograms) 기본행렬및벡터연산정의 Default Library ( 자동링크 ) 소스코드가공개되어있으나, 각프로세서제작사가고성능버전제공함 http://www.netlib.org/blas 에서공개된소스및문서제공 PBLAS: BLAS 의분산메모리버전 LAPACK (Linear Algebra PACKage) Fortran77 로작성 LINPACK + EISPACK http://www.netlib.org/lapack 에서공개된소스및문서제공 사용법 : 링크시 -llapack 추가 ScaLAPACK : LAPACK 의분산메모리버전 Supercomputing Center 54 27
IBM 시스템라이브러리 ESSL(Engineering and Scientific Subroutine Library) IBM AIX 에최적화된과학계산용라이브러리 LAPACK, BLAS 와호환됨 주요기능 BLAS / Linear L Algebraic Equations / Eigensystem Analysis / Fourier Transforms PESSL(Parallel ESSL) ESSL 의분산메모리버전 ScaLAPACK, PBLAS 와호환됨 사용예 $ xlf -o sample -O -lessl sample.f $ mpxlf -o sample -O -lessl lpessl -lblacs sample.f $ mpxlf_r -o sample -O -lesslsmp lpesslsmp -lblacssmp sample.f Supercomputing Center 55 Wrapper 의적용 : CCI CCI (Call Conversion Interface) wrapper LAPACK ESSL 로대체시사용 IBM 시스템에최적화된성능기대 http://www.netlib.org/lapack/essl 에서제공 주의 : 링크시반드시 LAPACK 이먼저링크되어야함 CCI 적용예 $ xlf -o sample -llapack lessl sample.f $ xlf_r -o sample llapack_r lesslsmp sample.f Supercomputing Center 56 28
상용라이브러리 IMSL(International Mathematical and Statistical Library) http://www.vni.com/index.html 수학및통계학에필요한 1, 여개의함수로구성된상용라이브러리 (F9 MP) 사용법 : 쉘스크립트로컴파일러, 라이브러리등변수설정후사용 $. /applic/vni/ctt4./ctt/bin/cttsetup.sh/ NAG (Numerical Algorithms Group) http://www.nag.co.uk 수학및통계학에필요한 1, 여개의함수로구성된상용 Fortran 라이브러리 사용법 : 링크시 -lnagsmp 추가 Supercomputing Center 57 HPSS HPSS(High Performance Storage System) 의개요 대용량데이터저장관리솔루션 사용법 대규모스토리지환경을위한소프트웨어 계층적스토리지관리및서비스제공 KISTI HPSS: 디스크캐시 (3.6TB), 테이프스토리지 (6TB) 제공 <STEP 1> HPSS 계정신청 : <STEP 2> HPSS 로그인 : <STEP 3> 병렬파일 store : <STEP 4> 병렬파일 retrieval : ykchoi@kisti.re.kr pftp_client core 421 pput pget 보다자세한사용법은부록참조, 데이터는 tar 를사용하여묶어서관리 Supercomputing Center 58 29
제 III 장 컴파일링 / 디버깅 / 프로파일링 순차프로그램및병렬프로그램의 컴파일링 / 디버깅 / 프로파일링방법 습득 개요 컴파일링 고급언어프로그램 기계어프로그램 컴파일링 + 링킹 실행프로그램을생성 디버깅 프로그램내의논리적오류발견및수정작업 컴파일시디버깅옵션추가 디버거이용 프로파일링 프로그램실행중소요되는 CPU 시간을서브루틴별로검토 실행시만들어진데이터파일을프로파일러가분석 컴파일시프로파일링옵션추가 프로파일러이용 Supercomputing Center 6 3
컴파일러소개 언어 Serial OpenMP MPI OpenMP+MPI C cc xlc xlc_r mpcc mpcc_r C++ CC xlc N/A mpcc N/A Fortran77 f77 xlf xlf_r mpxlf mpxlf_r Fortran9 xlf9 xlf9_r mpxlf9 mpxlf9_r Fortran95 xlf95 xlf95_r mpxlf95 mpxlf95_r Supercomputing Center 61 32 비트 / 64 비트모드프로그램 프로그램의비트모드지정 디폴트는 32 비트모드 OBJECT_MODE 환경변수 32/64 컴파일러옵션 -q32/ q32/-q64, 아카이버 (ar) 옵션 -X32/ X32/-X64/ X64/-X32_64, X32_64, 링키지에디터 (ld) 옵션 -b32/ b32/-b64b64 32 비트모드프로그램의한계 32 비트주소표현 : 2^32 = 4 기가 세그먼트당 256MB(x1) 를다루는레지스터 16 개를사용 데이터영역 디폴트는 1개의세그먼트를써서최대 256MB 사용 최대 8개의세그먼트를써서 2GB 까지사용하도록조정가능 256MB 이상의데이터 -bmaxdata:bytes 링크옵션사용 예 : -bmaxdata:x8 Supercomputing Center 62 31
아키텍처최적화컴파일 -qtune=architecture 이진코드의호완성을유지하면서지정한프로세서아키텍처에최적화된오브젝트코드생성 -qarch=architecture 지정한프로세서아키텍처에의존하는프로세서명령어들을사용해서최적화하고자할때사용 KISTI 로그인노드프로세서아키텍처는 RS64-IV 로계산노드와다름 로그인노드에서디버깅을목적으로할경우 qarch=pwr4 사용못함 -qcache 프로세서아키텍처의캐쉬구조를지정해서최적화하는옵션 Supercomputing Center 63 순차프로그램 : 컴파일링 컴파일러 f77, xlf,, xlf9, xlf95, cc, xlc,, CC, xlc 추천하는최적화컴파일옵션 -O3 -qarch=pwr4 -qtune=pwr4 컴파일예 $ xlf -o sample -O3 -qarch=pwr4 -qtune=pwr4 sample.f Supercomputing Center 64 32
순차프로그램 : 디버깅 (1/2) 디버거 dbx: 기본 Unix 행편집기 xldb: GUI 디버거 http://www.uni-karlsruhe.de/~sp/manuals/html/xldb.html 컴파일시옵션 : -g 디버깅예 $ dbx [ 실행파일 ] (dbx) step (dbx) next (dbx) stop in [procedure] (dbx) status (dbx) print [expression] (dbx) rerun (dbx) quit # 소스라인의함수안으로들어가살펴보는기능 # 차례로살펴보는기능 # breakpoint를걸어살펴보는기능 # breakpoints를보는기능 # 값이제대로정의되어있는지살펴보는기능 # 재실행 # dbx 종료 Supercomputing Center 65 순차프로그램 : 디버깅 (2/2) 디버깅예 - 계속 (dbx) continue or c (dbx) step or s (dbx) where (dbx) stop at # breakpoint 혹은프로그램의중단시점까지진행 # 프로시저콜을만나면루틴안으로들어가소스라인단위로진행 # 현재멈추어있는위치정보표시 # 소스라인에 breakpoint 지정 (dbx) line 소스라인1, 소스라인2 # 소스라인 1부터 2까지의리스트출력 (dbx) whatis [variable] # 변수의선언여부및선언상태표시 (dbx) help # dbx 명령어리스트및설명 Supercomputing Center 66 33
순차프로그램 : 프로파일링 (1/2) prof 프로그램 CPU 사용량정보프로파일링지원 컴파일시옵션 : -p 컴파일실행시 mon.out 생성됨 gprof 호출된루틴별 CPU 사용회수및시간 루틴을호출한부모루틴표시 그래프분석기능 컴파일시옵션 : -pg 컴파일실행시 gmon.out 생성됨 Supercomputing Center 67 xprofiler 순차프로그램 : 프로파일링 (2/2) gprof 의 GUI 버전 소스코드행수준프로파일링가능 컴파일시 -pg 옵션사용 소스코드행수준프로파일링시 -pg 옵션에 g 옵션을추가해야함 PE 제품군에속해있으며, MPI 병렬프로그램의프로파일링지원 프로파일링예 $ prof # Monitoring Data 파일로 mon.out이있어야함 $ gprof # Monitoring Data 파일로 gmon.out이있어야함 $ xprofiler # GUI 실행 Supercomputing Center 68 34
OpenMP 병렬프로그램 : 컴파일링 컴파일옵션 -qsmp=omp 멀티스레드라이브러리사용 xlf_r,, xlf9_r, xlf95_r, xlc_r 환경변수지정 OMP_SCHEDULE, OMP_NUM_THREADS, OMP_NESTED, OMP_DYNAMIC 컴파일예 $ xlf_r -o sample_omp -qsmp=omp sample_omp.f Supercomputing Center 69 OpenMP 병렬프로그램 : 디버깅 / 프로파일링 디버거 순차프로그램의디버거가공유메모리프로그램지원 dbx, xldb 컴파일시옵션 : -g 프로파일러 순차프로그램의프로파일러가공유메모리프로그램지원 prof, gprof 컴파일시각각 -p, -pg 옵션사용 xprofiler 컴파일시 -pg 옵션사용 소스코드행수준프로파일링시 -pg 옵션에 g 옵션을추가해야함 Supercomputing Center 7 35
MPI 병렬프로그램 : 컴파일 컴파일 MPI: mpxlf,, mpxlf9, mpxlf95, mpcc, mpcc OpenMP+MPI: mpxlf_r,, mpxlf9_r, mpxlf95_r, mpcc_r 컴파일예 $ mpxlf -o para_sample para_sample.f $ mpxlf_r -o para_omp_sample -qsmp=omp para_omp_sample.f Supercomputing Center 71 MPI 병렬프로그램 : 디버깅 디버거 pdbx 기본병렬디버거 컴파일시 -g 옵션사용 디버깅예 $ pdbx [ 실행파일 ] pdbx(all) step pdbx(all) next pdbx(all) stop in [procedure] pdbx(all) status pdbx(all) print [expression] pdbx(all) rerun pdbx(all) quit # 소스라인의함수안으로들어가살펴보는기능 # 차례로살펴보는기능 # breakpoint 를걸어살펴보는기능 # breakpoints 를보는기능 # 값이제대로정의되어있는지살펴보는기능 # 재실행 # dbx 종료 Supercomputing Center 72 36
MPI 병렬프로그램 : 프로파일링 프로파일러 xprofiler 순차프로그램및병렬프로그램의프로파일링지원 컴파일시 -pg 옵션사용 소스코드행수준프로파일링시 -pg 옵션에 g 옵션을추가해야함 프로파일링예 $ prof # Monitoring Data 파일로 mon.out이있어야함 $ gprof # Monitoring Data 파일로 gmon.out이있어야함 $ xprofiler # GUI 실행 Supercomputing Center 73 컴파일실습예제 (1/6) 순차프로그램 예제디렉토리 : /system/center/consult/exam// system/center/consult/exam/edui/serial/ 예제파일 : hello.f, hello.c $ pwd [ 개인홈디렉토리 ] $ mkdir serial $ cd serial $ ls /system/center/consult/exam/edui/serial hello.c hello.f $ cp /system/center/consult/exam/edui/serial/hello.c. $ cp /system/center/consult/exam/edui/serial/hello.f. $ ls hello.c hello.f Supercomputing Center 74 37
컴파일실습예제 (2/6) $ xlf9 -o hellof hello.f # FORTRAN 컴파일 ** hello === End of Compilation 1 === 151-51 Compilation successful for file hello.f. $ ls hello.c hello.f hellof $./hellof Hello, World $ xlc -o helloc hello.c # C 컴파일 $ ls hello.c hello.f helloc hellof $./helloc hello, world Supercomputing Center 75 컴파일실습예제 (3/6) OpenMP 병렬프로그램 예제디렉토리 : /system/center/consult/exam// system/center/consult/exam/edui/omp/ 예제파일 : hellomp.f, hellomp.c $ pwd [ 개인홈디렉토리 ] $ mkdir omp $ cd omp $ ls /system/center/consult/exam/edui/omp hellomp.c hellomp.f $ cp /system/center/consult/exam/edui/omp/hellomp.c. $ cp /system/center/consult/exam/edui/omp/hellomp.f. $ ls hellomp.c hellomp.f Supercomputing Center 76 38
컴파일실습예제 (4/6) $ xlf9_r -o hellompf -qsmp=omp hellomp.f # FORTRAN 컴파일 ** hello === End of Compilation 1 === 151-51 Compilation successful for file hellomp.f. $ ls hellomp.c hellomp.f hellompf $ export OMP_NUM_THREADS=4 # 사용스레드수지정 $./hellompf Hello, World from thread = 1 Hello, World from thread = 3 $ xlc_r -o hellompc -qsmp=omp hellomp.c # C 컴파일 $ ls hellomp.c hellomp.f hellompc hellompf $./hellompc Hello, World from thread = 3 Hello, World from thread = Supercomputing Center 77 컴파일실습예제 (5/6) MPI 병렬프로그램 예제디렉토리 : /system/center/consult/exam// system/center/consult/exam/edui/mpi/ 예제파일 : hellompi.f, hellompi.c $ pwd [ 개인홈디렉토리 ] $ mkdir mpi $ cd mpi $ ls /system/center/consult/exam/edui/mpi hellompi.c hellompi.f host.list $ cp /system/center/consult/exam/edui/mpi/hellompi.c. $ cp /system/center/consult/exam/edui/mpi/hellompi.f. $ cp /system/center/consult/exam/edui/mpi/host.list. $ ls hellompi.c hellompi.f host.list Supercomputing Center 78 39
컴파일실습예제 (6/6) $ mpxlf9 -o hellompif hellompi.f # FORTRAN 컴파일 ** hello === End of Compilation 1 === 151-51 Compilation successful for file hellompi.f. $ ls hellompi.c hellompi.f hellompif host.list $ [poe ]./hellompif -procs 4 # POE 실행 $ mpcc -o hellompic hellompi.c # C 컴파일 $ ls hellompi.c hellompi.f hellompic hellompif hellompic $ [poe ]./hellompic -procs 4 # POE 실행 Supercomputing Center 79 디버깅실습예제 (1/7) 순차프로그램 예제디렉토리 : /system/center/consult/exam// system/center/consult/exam/edui/debug/ 예제파일 : pi_bug.f $ pwd [ 개인홈디렉토리 ] $ mkdir debug $ cd debug $ ls /system/center/consult/exam/edui/debug/ pi_bug.f # bug를가진소스파일 $ cp /system/center/consult/exam/edui/debug/pi_bug.f. $ ls pi_bug.f $ xlf9 -g -o pi_bug pi_bug.f # -g 옵션추가컴파일 $ ls pi_bug pi_bug.f Supercomputing Center 8 4
디버깅실습예제 (2/7) $./pi_bug # bug 확인 ( 발견 ) Number of steps = 1 and calculated PI = 3.14242598519871 Number of steps = 1 and calculated PI = -.118859592577742E+147 Number of steps = 1 and calculated PI = -.118859592577747E+146 Number of steps = 1 and calculated PI = -.11885959257774E+145 Number of steps = 1 and calculated PI = -.11885959257774E+144 Number of steps = 1 and calculated PI = -.118859592577738E+143 Number of steps = 1 and calculated PI = -.118859592577734E+142 $ dbx pi_bug # debugging 시작 Type 'help' for help. reading symbolic information... (dbx) stop in calc_pi # breakpoint 설정 [1] [1] stop in calc_pi (dbx) stop at 1 # breakpoint 설정 [2] [2] stop at "pi_bug.f":1 Supercomputing Center 81 디버깅실습예제 (3/7) (dbx) trace sum in calc_pi # 변수 trace 설정 [3] trace sum in calc_pi (dbx) status # breakpoint, trace 확인 [1] stop in calc_pi [2] stop at "pi_bug.f":1 [3] trace sum in calc_pi (dbx) cont # breakpoint까지 continue [1] stopped in calc_pi at line 21 in file "pi_bug.f # [1] 번 breakpoint stop 21 step = 1. / num_steps (dbx) c # continue initially (at line 22 in "pi_bug.f"): sum =. after line 24 in "pi_bug.f": sum = 3.9924937655865 after line 24 in "pi_bug.f": sum = 7.925377753663 after line 24 in "pi_bug.f": sum = 11.666711261662 after line 24 in "pi_bug.f": sum = 15.23185647634443 Supercomputing Center 82 41
디버깅실습예제 (4/7) after line 24 in "pi_bug.f": sum = 18.55658897437769 after line 24 in "pi_bug.f": sum = 21.6276624859938 after line 24 in "pi_bug.f": sum = 24.4395573937199 after line 24 in "pi_bug.f": sum = 26.9995573937198 after line 24 in "pi_bug.f": sum = 29.32176313516211 after line 24 in "pi_bug.f": sum = 31.424259851984 [2] stopped in main at line 1 in file "pi_bug.f" 1 print *, 'Number of steps =', num_steps, 'and calculated PI =', pi (dbx) c Number of steps = 1 and calculated PI = 3.14242598519871 [1] stopped in calc_pi at line 21 in file "pi_bug.f" 21 step = 1. / num_steps (dbx) where # 현 stop 위치파악 calc_pi(num_steps = 1, pi = 3.1424259851987), line 21 in "pi_bug.f" main(), line 9 in "pi_bug.f" Supercomputing Center 83 디버깅실습예제 (5/7) (dbx) status [1] stop in calc_pi [2] stop at "pi_bug.f":1 [3] trace sum in calc_pi (dbx) return # subroutine call return stopped in main at line 9 in file "pi_bug.f" 9 call calc_pi(num_steps, pi) (dbx) c [2] stopped in main at line 1 in file "pi_bug.f" 1 print *, 'Number of steps =', num_steps, 'and calculated PI =', pi (dbx) c Number of steps = 1 and calculated PI = -.118859592577742E+147 [1] stopped in calc_pi at line 21 in file "pi_bug.f" 21 step = 1. / num_steps Supercomputing Center 84 42
디버깅실습예제 (6/7) (dbx) status [1] stop in calc_pi [2] stop at "pi_bug.f":1 [3] trace sum in calc_pi (dbx) delete 3 (dbx) status [1] stop in calc_pi [2] stop at "pi_bug.f":1 (dbx) whatis sum real*8 sum (dbx) print sum -1.1885959257774e+148 (dbx) assign sum =. (dbx) print sum. # [3] 번 event 삭제 # 변수 definition 확인 # 변수값출력 # 변수값임시할당 Supercomputing Center 85 디버깅실습예제 (7/7) (dbx) where calc_pi(num_steps = 1, pi = -1.1885959257774e+146), line 21 in "pi_bug.f" main(), line 9 in "pi_bug.f" (dbx) c [2] stopped in main at line 1 in file "pi_bug.f" 1 print *, 'Number of steps =', num_steps, 'and calculated PI =', pi (dbx) n # next ( 문장실행진행 ) Number of steps = 1 and calculated PI = 3.14159273692312269 stopped in main at line 11 in file "pi_bug.f" 11 enddo (dbx) quit # dbx 종료 $ $ xlf9 qinitauto o pi_nobug pi_bug.f # automatic variable init. $./pi_nobug Supercomputing Center 86 43
프로파일링실습예제 (1/2) 순차프로그램 예제디렉토리 : /system/center/consult/exam// system/center/consult/exam/edui/profile/ 예제파일 : md_small.f $ pwd [ 개인홈디렉토리 ] $ mkdir profile $ cd profile $ ls /system/center/consult/exam/edui/profile md_small.f $ cp /system/center/consult/exam/edui/profile/*. $ xlf9 -p -o md_small md_small.f # prof -p 옵션 $./md_small # 실행시간 1~2초 4934.7183291619651. Supercomputing Center 87 프로파일링실습예제 (2/2) $ ls # mon.out 생성확인 md_small md_small.f mon.out $ prof # prof 프로파일링 Name %Time Seconds Cumsecs #Calls msec/call._sin 29.9 4.2 4.2 198396.2._cos 21.6 2.9 6.92 148797.2.compute 21.3 2.87 9.79 51 5.73. mcount 12.8 1.72 11.51.dist 1.6 1.43 12.94 49599.3._sqrt 3.6.48 13.42.cvtloop.1.1 13.43 1498.7.update.1.1 13.44 5.2 $ xlf9 -pg -g -o md_small_pg md_small.f # gprof -pg 옵션 $./md_small_pg # 실행시간 1~2초 $ ls md_small md_small_pg md_small.f mon.outgmon.out $ gprof # gprof 프로파일링 ( 생략 ) Supercomputing Center 88 44
제 IV 장 작업실행 POE 및 LoadLeveler 를사용하는 프로그램및작업의실행방법습득 프로그램실행 POE 를사용 직접 (interactive) 실행 MPI 병렬프로그램의테스트시사용을권장 로그인노드에서실행 다수의동일한순차프로그램 / 유닉스명령어, OpenMP 병렬프로그램을동시에실행하고자할때도 POE 를이용한실행이가능 LoadLeveler 를사용 배치작업실행, 순차및병렬프로그램의실계산수행시에사용 LoadLeveler 명령어들을사용하여작업관리 작업의대기및실행은작업큐의상태에따라 LoadLeveler 가관리함 Gang 스케줄링방식으로설정된 LoadLeveler 에서 MPI 프로그램을실행할경우반드시스레드용컴파일스크립트및라이브러리사용 mpxlf_r,, mpxlf9_r, mpxlf95_r, mpcc_r, mpcc_r Supercomputing Center 9 45
POE 환경변수소개 (1/2) POE 환경변수 형식 : MP_ 변수명 POE 명령옵션으로도지정가능 자주쓰이는 POE 환경변수및명령옵션 MP_PROCS(-procs procs): 작업에사용할태스크혹은프로세스수 MP_HOSTFILE(-hostfile hostfile, -hfile): 작업에사용할호스트들의리스트가적혀있는호스트리스트파일지정 MP_SHARED_MEMORY(-shared_memory) : 동일노드내에서실행되는태스크들간의통신에공유메모리를사용할것인지의여부지정, yes 혹은 no MP_EUIDEVICE(-euidevice euidevice) ) : 태스크들간의통신에사용될장치 (en, csss) 지정. MP_EUILIB=us 인경우고속스위치 (csss) 로간주 MP_EUILIB(-euilib euilib) ) : 통신에사용될통신라이브러리지정, ip 혹은 us. us 는고속스위치를사용할경우만지정가능 그외부록참조 Supercomputing Center 91 POE 환경변수지정예 POE 환경변수소개 (2/2) $ export MP_SHARED_MEMORY=yes $ export MP_PROCS=1 $ export MP_HOSTFILE=./host.list $ poe my_program 명령행옵션지정예 $ poe my_program shared_memory yes -procs 1 -hfile./host.list Supercomputing Center 92 46
POE 를사용한병렬작업실행 SPMD 프로그램작업 [poe] program_name [POE_option_flags] [executable_arguments] $ poe MPI_PROGRAM -procs N -hostfile HOSTFILE $ MPI_PROGRAM -procs N -hostfile HOSTFILE MPMD 프로그램작업 : poe 실행후프로그램순서명시 $ export MP_PGMMODEL=mpmd $ export MP_PROCS=4 $ poe :node1> master 1:node2> worker 2:node3> worker 3:node4> worker Supercomputing Center 93 POE 실습예제 (1/2) MPI 프로그램 예제디렉토리 : /system/center/consult/exam// system/center/consult/exam/edui/mpi/ 예제파일 : hellompi.f, hellompi.c 실행파일 : MPI 컴파일실습시본인디렉토리내에이미만들었음 $ pwd [ 개인홈디렉토리 ] $ ls hellompif hellompic $ cat > host.list # host list file 작성 nobela nobela nobela nobela ^D # Ctrl-D (EOF) 입력 $ Supercomputing Center 94 47
POE 실습예제 (2/2) $ ls hellompif host.list $ $ poe./hellompif -procs 4 -hostfile./host.list # MPI 프로그램을 poe 실행시 poe 생략가능 Hello, World from rank = Hello, World from rank = 2 Hello, World from rank = 1 Hello, World from rank = 3 $ $ poe./hellompic -procs 3 -hostfile./host.list # MPI 프로그램을 poe 실행시 poe 생략가능 Hello, World from rank = Hello, World from rank = 1 Hello, World from rank = 2 Supercomputing Center 95 LoadLeveler 를사용한작업실행 (1/2) 작업관리절차 명령행처리및 xloadl 를사용하여 GUI 환경에서처리작업파일작성 보통쉘스크립트형식으로작성 작업파일의 LoadLeveler 작업지시어들은 #@ 으로시작자주사용되는 LoadLeveler 명령어들 $ llstatus # 노드정보및상황출력 $ llclass # 작업클래스정보및상황출력 $ llq # 큐에있는작업의정보및상황출력 $ llsubmit job_file # 작업파일을사용하여작업제출 $ llhold job_id # 큐에서대기중인작업을중지상태로전환 $ llhold r job_id # 중지상태인작업을대기상태전환 $ llcancel job_id # 작업의취소 그외부록참조 Supercomputing Center 96 48
LoadLeveler 를사용한작업실행 (2/2) LoadLeveler X 윈도우 GUI 프로그램 : xloadl DISPLAY 환경변수설정 : X 클라이언트측 $ export DISPLAY=YOUR_SERVER_IP:. xhost 연결허가 : X 서버측 $ xhost + nobela.supercomputing.re.kr xloadl 실행화면 Supercomputing Center 97 LoadLeveler 클래스구성 (1/2) 사용가능 CPU 개수에따라분류 순차작업용 : 단일 CPU 사용, normal 병렬작업용 : 다중 CPU 사용, p_normal_1.3, p_normal_1.7 Grand Challenge 과제 / BMT 작업용 : grand / bmt 노드당슬롯수 23 년 8월현재설정 클래스 Max Proc Wall Clock Limit 총가용 CPU 수 로그인 일반사용자 컴퓨팅 GC BMT a b 1 2 3 4 5 6 7 8 9 21 normal 1 48 시간 32 16 16 p_normal_1.3 8 48 시간 8 16 16 24 24 p_normal_1.7 96 48 시간 96 32 32 32 grand 32 96 시간 32 32 bmt 416 96 시간 416 32 32 32 노드당총가용 CPU 수 16 16 24 24 32 32 32 32 32 32 32 Supercomputing Center 98 49
LoadLeveler 클래스구성 (2/2) 클래스별특징 normal : 일반적인순차작업실행 p_normal_1.3 : 일반적인병렬작업실행, 1 차 p69 노드 p_normal_1.7 : 일반적인병렬작업실행, 2 차 p69 노드 grand / bmt : Grand challenge 과제 / BMT 작업실행, 2 차 p69 노드 클래스별특성치 Max Proc : 작업실행시할당받을수있는최대프로세서수 Wall Clock Limit : 작업이실행될수있는벽시계기준의제한시간 총슬롯수 : 최대실행가능한총프로세스수 사용자별제한 큐실행 maxjobs = 5, 큐대기 maxidle = 2 큐대기 + 큐실행 maxqueued = 6 Supercomputing Center 99 순차프로그램의 LoadLeveler 작업 예 : /system/center/consult/exam// system/center/consult/exam/edui/serial/hello.cmdedui/serial/hello.cmd job_type = serial 생략가능 #!/bin/ksh #@ job_type = serial #@ class = normal #@ resources = ConsumableCpus(1) #@ wall_clock_limit = 5: #@ queue./hello > hello.log Supercomputing Center 1 5
OpenMP 프로그램의 LoadLeveler 작업 예 : /system/center/consult/exam// system/center/consult/exam/edui/omp/hellomp.cmd #!/bin/ksh #@ job_type=serial #@ class=p_normal_1.7 #@ wall_clock_limit=1: #@ notification=never #@ resources=consumablecpus(5) #@ step_name=hellomp.5 #@ queue export OMP_NUM_THREADS=5./hellompf > hellomp.log Supercomputing Center 11 MPI 프로그램의 LoadLeveler 작업 예 : /system/center/consult/exam// system/center/consult/exam/edui/mpi/hellompi.cmd #!/bin/ksh #@ job_type=parallel #@ notification=complete #@ class=p_normal_1.3 #@ blocking=unlimited #@ wall_clock_limit=1: #@ Network.MPI=csss,shared,US #@ total_tasks=5 #@ resources=consumablecpus(1) #@ queue export MP_SHARED_MEMORY=yes./hellompif > hellompi.log Supercomputing Center 12 51
LoadLeveler 실습예제 (1/3) Serial/OpenMP/MPI 프로그램 예제디렉토리 : 기본디렉토리 (/system/center/consult/exam/edui edui/) 아래 serial/, omp/, mpi/ 예제파일 : job command files *.cmd 이때실행파일이각디렉토리내에있어야함 ( 컴파일작업시모두만들어놓음 ) 예제실행 : MPI 파일이용 Serial, OpenMP 파일도동일하게적용됨 $ pwd [ 개인홈디렉토리 ] $ cp /system/center/consult/exam/edui/serial/hello.cmd serial $ cp /system/center/consult/exam/edui/serial/hellomp.cmd omp $ cp /system/center/consult/exam/edui/serial/hellompi.cmd mpi Supercomputing Center 13 LoadLeveler 실습예제 (2/3) $ cd mpi $ ls hellompi.c hellompi.f host.list hellompif hellompi.cmd hellompic $ $ llstatus Name Schedd InQ Act Startd Run LdAvg Idle Arch OpSys nobel1.supercomputing.re. Avail 1 1 Busy 16 9.58 9 R6 AIX5l nobel1.supercomputing.re Avail Idle.7 612 R6 AIX5l nobel11.supercomputing.re Avail Idle.93 71 R6 AIX5l $ llsubmit hellompi.cmd llsubmit: The job "nobela.supercomputing.re.kr.436" has been submitted. Supercomputing Center 14 52
LoadLeveler 실습예제 (3/3) $ llq Id Owner Submitted ST PRI Class Running On ---------------- -------------- ----------------- ----- ------ ------------------ --------------------- nobela.481. smlee 3/12 11:36 R 5 p_normal_1.7 nobel7 nobela.574. consult 3/16 18:5 ST 5 p_normal_1.3 nobel4 2 job step(s) in queue, waiting, 1 pending, 1 running, held, preempted $ llhold nobela.574. $ llhold -r nobela.574. $ llcancel nobela.574. # llhold 이하는 job이간단한관계로실습이불가능함 # 참고만하십시오. Supercomputing Center 15 제 V 장 참고자료 참고문헌 유용한사이트 53
참고문헌 Finding Documentation on the World Wide Web - http://www.rs6.ibm.com/resource/aix_resource/sp_books - http://www.rs6.ibm.com/support/sp/resctr/index.html Accessing PE Documentation Online - The HTML files and an index that links to them are installed in the /usr/lpp/ppe.html/ directory - Enter "/usr/lpp/ssp/bin/resource_center usr/lpp/ssp/bin/resource_center" - On unix workstation, you should first export DISPLAY to your own workstation - On PC, you may need some X-emulator X like exceed, xmanager,, etc. SP Software Publications - IBM Parallel Environment for AIX: Hitchhiker's Guide, SA22-7424 7424-1 - IBM Parallel Environment for AIX: Messages, GA22-7419 7419-1 - IBM Parallel Environment for AIX: MPI Programming Guide, SA22-7422 7422-1 - IBM Parallel Environment for AIX: MPI Subroutine Reference, SA22-7423 7423-1 - IBM Parallel Environment for AIX: Operation and Use, Volume 1, SA22S A22-7425-1 - IBM Parallel Environment for AIX: Operation and Use, Volume 2, SA22S A22-7426-1 - LoadLeveler Diagnosis and Messages Guide, GA22-7882 7882- - Using and Administering LoadLeveler, SA22-7881 7881- Supercomputing Center 17 유용한사이트 Designing and Building Parallel Programs - http://www.mcs.anl.gov/dbpp OpenMP ARB - http://www.openmp.org Parallel Programming in OpenMP - http://www.mkp.com/books_catalog/catalog.asp?isbn www.mkp.com/books_catalog/catalog.asp?isbn=1-5586-671-8 MPI at Argonne - http://www.mcs.anl.gov/mpi Batch Compiler and Other Tools (VisualAge C++) - http://www-4.ibm.com/software/ad/vacpp/download/pdf/aix/batch.pdf XL Fortran Language Reference - http://www.ibm.com/software/ad/fortran/xlfortran/pdf/v7r1/lr.pdf XL Fortran User s s Guide - http://www.ibm.com/software/ad/fortran/xlfortran/pdf/v7r1/ug.pdf Supercomputing Center 18 54
제 VI 장 부 록 HPSS 사용법예제 주요소프트웨어비교표 Batch 작업관리시스템명령비교 POE 환경변수 LoadLeveler 주요용어 LoadLeveler 작업명령키워드 HPSS 사용법예제 (1/4) HPSS 의사용법은 UNIX 의 FTP 사용법과유사 FTP/HPSS : put/pput pput,, get/pget pget, mput/mpput, mget/mpget STEP 1. HPSS 계정신청 ykchoi@kisti.re.kr STEP 2. HPSS 로그인 $ pftp_client core 421 Name (core:u123abc): u123abc 331 Password required for /.../kisti_cell.hpcnet.ne.kr/u123abc. Password: ftp> Supercomputing Center 11 55
HPSS 사용법예제 (2/4) STEP 3. Parallel File Store pput, mpput ftp> pput file_name ftp> mpput file1 file2 # 단일파일 # 다수파일 ftp> pput 3.out local: 3.out remote: 3.out 2 Command Complete. 2 PORT command successful. 15 Opening BINARY mode data connection for 3.out. 226 Transfer complete. 342635 bytes sent in.8 seconds (4.29 Mbytes/s) Supercomputing Center 111 HPSS 사용법예제 (3/4) STEP 4. Parallel File Retrieval pget, mpget ftp> pget file_name ftp> mpget file1 file2 # 단일파일 # 다수파일 ftp> pget 3.out local: 3.out remote: 3.out 2 PORT command successful. 15 Opening BINARY mode data connection for 3.out (342635 bytes). 226 Transfer complete. 342635 bytes received in 1.62 seconds (25.91 Kbytes/s) Supercomputing Center 112 56
HPSS 사용법예제 (4/4) STEP 5. 기타명령어 del, mdel,, bye ftp> del 3.out 25 DELE command successful. # 단일파일삭제 ftp> prompt Interactive mode off. ftp> mdel *.out 25 DELE command successful. 25 DELE command successful. # 대화 ( 확인 ) 모드끄기 # 다수파일삭제 ftp> bye # HPSS 종료 421 Timeout (9 seconds): closing control connection. Supercomputing Center 113 KISTI 병렬형슈퍼컴퓨터의주요소프트웨어비교표 컴파일러 Fortran C IBM Regatta f77, xlf,, xlf9, xlf95, xlf_r,, xlf9_r, xlf95_r, mpxlf,, mpxlf9, mpxlf95, mpxlf_r,, mpxlf9_r, mpxlf95_r cc, xlc, xlc_r, mpcc, mpcc_r Compaq f77, f9 cc Cray T3E f9 cc 디버거 C++ CC, xlc, mpcc dbx, xldb (GUI) cxx ladebug, totalview (GUI) CC totalview 프로파일러 prof, gprof, xprofiler pat 수학라이브러리 BLAS, LAPACK, ScaLAPACK, ESSL, PESSL, IMSL, NAG BLAS, LAPACK, ScaLAPACK (BLAS, LAPACK 은 CXML 에포함 ) BLAS, LAPACK, ScaLAPACK, IMSL, NAG Supercomputing Center 114 57
Batch 작업관리시스템명령비교 구분 IBM Regatta Compaq Cray T3E 스케줄러 LoadLeveler LSF NQS Status llq bjobs qstst Submit llsubmit bsub qsub Cancel llhold llcancel bstop bkill qdel info llclass bqueues qstat b qstat f f name Supercomputing Center 115 POE 환경변수 (1/4) MP_PROCS(-procs procs): 태스크수 지정하지않을경우기본값 1 CPU 효율을위해서는가용프로세서개수이하로지정 Hybrid(OpenMP+MPI) 프로그램경우 : [ MP_PROCS x OMP_NUM_THREADS ] 또는 [ MP_PROCS x XLSMPOPTS=parthds ] => 가용프로세서개수넘지않게지정 MP_RESD(-resd resd): 노드할당방식 POE 의직접노드할당, 또는 LoadLeveler 의자동할당여부지정 지정하지않을경우기본값 : -no: MP_EUILIB=ip ip, MP_HOSTFILE 에호스트리스트파일지정된경우 -yes: 그외의경우 Supercomputing Center 116 58
POE 환경변수 (2/4) MP_HOSTFILE(-hostfile hostfile, -hfile): POE 의직접노드할당방식 호스트리스트파일명명시 지정하지않을경우기본값 :./host.list MP_RMPOOL(-rmpool rmpool): LoadLeveler 의자동노드선택 지정된풀에서의선택 MP_HOSTFILE=NULL 지정시유효함 MP_EUIDEVICE(-euidevice euidevice): 네트웍인터페이스명지정 메시지패싱통신을위한지정 네트웍인터페이스명 : en, css 등 MP_EUILIB(-euilib euilib): 통신모드지정 ip 또는 us 가능 MP_MSG_API(-msg_api msg_api): 메시지패싱라이브러리설정 MPI, LAPI, MPI LAPI 가능 지정하지않을경우, MPI 로간주 Supercomputing Center 117 POE 환경변수 (3/4) MP_LLFILE(-llfile llfile): LL 작업명령파일명명시 대화형 POE 작업수행시, LoadLeveler 작업명령파일에명시된키워드설정에따라환경변수지정 MP_RESD=yes 지정시유효함 MP_SHARED_MEMORY(-shared_memory): 동일노드내의태스크간메시지패싱통신방식지정 공유메모리사용또는실제네트웍어댑터사용지정 가능한값 : yes, no MP_PGMMODEL(-pgmmodel pgmmodel): 병렬프로그램모델명시 Spmd, mpmd 가능 지정하지않은경우기본값 spmd MP_CMDFILE(-cmdfile cmdfile): 각태스크가수행할프로그램명리스트파일명명시 MP_PGMMODEL=mpmd 인경우필요 Supercomputing Center 118 59
POE 환경변수 (4/4) MP_INFOLEVEL(-infolevel infolevel): 수행상태메시지보고수준지정 기본값 1 그외가능값 : 에러 1 : 경고, 에러 2 : 참고, 경고, 에러 3 : 참고, 경고, 에러및 IBM 지원센터에서참고할진단메시지 4, 5, 6 : 참고, 경고, 에러및 IBM 지원센터에서참고할상위및하위레벨의진단메시지 Supercomputing Center 119 LoadLeveler 주요용어 (1/2) Node 자체의운영체제, CPU 및메모리를가지는독립된시스템으로 LoadLeveler 클러스터를구성하는개별시스템 Cluster 작업부하분산을위해 LoadLeveler 가한묶음으로관리하는노드들의합 Pool 클러스터내의특정노드들을편의상논리적으로모아놓은집합 Class Pool 과같이논리적으로모아놓은노드의집합이며, 가용자원의특성, 케줄링규칙등좀더구체적인조건들을부여한것 Job Step 독립적으로수행되는작업의최소단위 각 Job Step 은순차프로그램이거나, 병렬프로그램임 집 스 Supercomputing Center 12 6
LoadLeveler 주요용어 (2/2) Job 한번에제출하여수행하는 Job Step 들전체를의미하며, 종종하나의 Job Step 의미로도쓰임 Task 하나의작업에속한단일프로세스로서운영체제가부여하는고유프로세스 ID 를가지며, 그자체가다시쓰레딩될수있음 Serial Job 기본작업유형 / 하나의노드에서수행되도록짜여진작업 OpenMP 는 Serial Job 으로간주 Parallel Job 하나또는그이상의노드에서여러개의 Task 로나뉘어수행되도록짜여진작업 ; 즉다중노드및 CPU 작업을말함 LoadLeveler 는 PVM 과 MPI 의 2가지병렬작업을지원함 Supercomputing Center 121 LoadLeveler 작업명령키워드 (1/4) job_type: 작업유형지정 serial, parallel, pvm3 가능 명시하지않을경우 serial 로간주 job_name: 작업이름지정 명시하지않을경우 LoadLeveler 가임의로부여 step_name: 작업파일내에 Job Step 이름지정 명시하지않을경우 LoadLeveler 에의해작업명령파일내의순서대로부여 (, 1, 2, ) input: standard input 지정 output: standard output 지정 error: standard error 지정 initialdir: 초기작업디렉토리지정 Supercomputing Center 122 61
LoadLeveler 작업명령키워드 (2/4) node: Job Step 을위해할당할노드수지정 각 Job Step 마다지정해주어야함 노드수를하나의숫자로지정하거나범위로지정할수있음 지정하지않을경우 1로간주 tasks_per_node 또는 total_tasks 키워드와함께사용 blocking: 노드당태스크분배방법 노드당일정한개수씩태스크분배 한번에분배할태스크개수 양의정수또는 unlimited 가능 tasks_per_node: 노드당태스크수지정 total_tasks: 수행할전체태스크수지정 class: LoadLeveler class 지정 지정하지않을경우 No_Class 라는이름의클래스로간주 Supercomputing Center 123 LoadLeveler 작업명령키워드 (3/4) node_usage: 여러작업수행허용여부지정 해당 Job Step 수행시, 동일노드내에다른 Job 수행허용여부지정 Shared, not_shared 가능 notification: 알림메일을보낼조건지정 always, error, start, never, complete 가능 / complete 주사용 지정하지않을경우 complete 로간주 notify_user: 알림메일을보낼주소지정 지정하지않을경우, 작업제출노드의작업제출자주소로메일이보내짐 resources: consumable resource 종류및요구량지정 requirements: 할당될노드가만족해야할필수요구조건지정 wall_clock_limit: 예상작업소요시간 (Elapsed time) 지정 초단위또는시 : 분 : 초형식으로지정 Supercomputing Center 124 62
LoadLeveler 작업명령키워드 (4/4) network: 통신프로토콜, 네트웍어댑터, 통신특성지정 각 Job Step 마다명시 지정형식 : #@ network.protocol = network_type [, [usage] [, mode [, comm_level] ] ] ] protocol: MPI, LAPI, PVM 가능 network_type: 반드시명시 - 어댑터이름 (en, csss 등 ) 또는인터페이스종류 (Etherchannel, ethernet, switch 등 ) 로나타낼수있음 usage: shared 또는 not_shared 지정 / 지정하지않을경우 shared mode: IP 또는 US - 지정하지않을경우 IP 로간주 - US mode: SP 스위치 network_type 에서만지원됨 comm_level : 태스크간통신량수준명시 - US mode 에서만지원됨 - LOW, AVERAGE, HIGH 가능 Supercomputing Center 125 63