Transcript 슬라이드 제목 없음
Linux Cluster System Dept. Computer science and Engineering Moon Jun Hyun [email protected] Contents • Linux Cluster Architecture – Parallel Computer Architecture – Cluster Architecture – Linux Cluster Architecture • Linux Cluster System Composition – Hardware System Selection – Node Network Configuration Composition – Parallel Configuration Composition • MPI Linux Cluster Programming – Parallel Programming – MPI Programming – MPI Function KWANGJU UNIVERSITY 운영체제론 2 Linux Cluster Architecture • Parallel Computer Architecture • Cluster Architecture • Linux Cluster Architecture KWANGJU UNIVERSITY 운영체제론 3 Parallel Computer Architecture • 병렬 컴퓨터의 정의 – 최소한 2개 이상의 CPU로 구성 – 여러 개의 CPU를 이용한 동시 작업과 동시처리 – 작업 효율 및 작업시간 단축 효과 – CPU마다 독립된 메모리 주소와 프로그램 Counter를 가짐 • Parallel processing computer • Seraial processing computer – 병렬 컴퓨팅을 위해서는 별도의 병렬 프로그래밍을 해야 함 • 병렬화 여부를 컴파일러가 자동으로 결정하지 못함 – 병렬 프로그래밍 : 기본적인 순차처리 프로그래밍 Construct(array, Control structure, Procedure, Resursion)을 가진 여러 대의 컴퓨터 를 대상으로 하는 Programming KWANGJU UNIVERSITY 운영체제론 4 Parallel Computer Architecture(cont.) • 병렬 컴퓨터의 여러 형태 – 병렬화 정도에 따른 분류 : Coarse grained vs Fine grained – Flynn’s 분류 : SISD, SIMD, MIMD, MISD – 메모리 모델에 따른 분류 : Distributed memory, Shared memory, Distributed-share memory – 노드간 물리적 연결 방법에 따른 분류 : Switch, Hardware supported remote momory access by direct memory access, Router chip(or processor), etc – 노드간 연결의 논리적 구조 분류 : Hypercupe, 2-D mesh, 3-D torus, switch, etc – Single system image vs Multiple system image KWANGJU UNIVERSITY 운영체제론 5 Parallel Computer Architecture(cont.) • 병렬 프로그램의 예 – 문제 do i =1, MAX Z(i) = X(i) + Y(i) enddo – Superscalar architecture가 아닌 순차 컴퓨터의 경 우 1. 2. 3. 4. 메모리로부터 X(i)와 Y(i)를 register로 읽어 들인다. X(i)와 Y(i)를 더한다. 더한 결과가 있는 register에서 Z 메모리 위치에 쓴다. 이 과정을 loop의 숫자 만큼 반복한다. KWANGJU UNIVERSITY 운영체제론 6 Parallel Computer Architecture(cont.) – 병렬 컴퓨터의 경우 1. MAX 개의 X(i)와 Y(i)를 N대의 컴퓨터에 골고루 나누어 (MAX/N) 분배한다. 2. MAX/N개의 X(i)와 Y(i)에 대하여 순차처리 컴퓨터의 과정을 N 대의 컴퓨터가 (MAX/N)번 수행한다. 3. 나누어 계산된 Z(i)를 한 군데 모은다. KWANGJU UNIVERSITY 운영체제론 7 Parallel Computer Architecture(cont.) • Amdahl’s law : 병렬화에 따른 최대 성능 개선비 – 한대의 컴퓨터 상에서 코드 중 병렬화가 가능한 부분을 순차 적으로 수행하는데 걸리는 시간 = Ip – 한대의 컴퓨터 상에서 코드 중 병렬화가 안되는 부분을 순차 적으로 수행하는데 걸리는 시간 = Is – 성능 비 = Ip + Is Ip + Is N – 예를 들어 Ip가 90%, Is가 10%일 때, 설사 N이 무한대라고 하 더라도 성능 증가는 단지 (0.9+0.1)/(0.9/N+0.1)=10배에 불과 하다. KWANGJU UNIVERSITY 운영체제론 8 Parallel Computer Architecture(cont.) • Prallel computer에서 병렬화에 수반되는 통신에 의한 system overhead 때문에, 병렬와에 의한 계산 속도는 Is 가 0%인 경우에도 노드의 개수에 단순 비례하지 않 음 • 따라서 계산을 수행함에 있어서 통신이 필요한 부분 (surface)과 한 노드가 담당하는 부분(volume)과의 상 대적인 비율을 낮추어야만 병렬 컴퓨터의 효율이 높다. (surface-to-volume retio) KWANGJU UNIVERSITY 운영체제론 9 Cluster Architecture • Prallel Computer Architecture – MPP(Massively Parallel Processing) : CRAY T3-E – SMP(Symmetric Multi-Processing) : Pentium II, III CPU • Cluseter Architecture – MPP architecture – Loosely-coupled parallel architecture • 컴퓨터 노드가 한대의 독립적인 컴퓨터로 작동할 수 있는 성질 을 계속 유지하는 것 – Distrubuted computer architecture • Dynamic load balancing, high availability – 독립적인 운영체계(OS)를 지니는 여러 대의 컴퓨터에 여러 개의 task를 효율적으로 분배하고 관리하는 것 KWANGJU UNIVERSITY 운영체제론 10 Cluster Architecture(cont.) • Parallel Computer vs Cluster Computer – Prallel computer • 통신에 따른 Latency, Bandwith – Cluster computer • Job scheduleing, Resource allocation • Beowulf Cluster – High performance computing platform • 최근의 경향 – High performance computing – High availiability system – Data base server – Web server KWANGJU UNIVERSITY 운영체제론 11 Linux Cluster • Cluster의 각 노드 운영체제로 Linux를 사용하는 Cluster • Open source인 Linux 운영체계는 사용자가 off-the-shelf componets를 가지고 직접 필요에 맞게 Cluster를 제작 가 능 • 다양한 CPU와 Hradware 지원 • 일반성(generality) : Linux 발전에 따른 효과를 지속적으 로 Cluster에 적용 가능 • 효율성(efficiency) : 사용자가 각자의 필요성에 적합한 Cluster 제작 가능 • 대량 생산되는 PC와 Network 장비로 인한 저렴한 비용 KWANGJU UNIVERSITY 운영체제론 12 Linux Cluster(cont.) • Architecture potability – 하드웨어와의 연관성이 적음 – Upgrade의 용이성 • Software potability – De facto standard화한 message passing paradigm implementation에 따른 프로그램의 호환성 증가됨 • Scalability – 확장성이 높은 Architecture – Avalon의 경우 140대의 Alpha PC + Fast Ethernet 사용 • 개발의 용이성 – 운영체계와 Compiler 개발, Network component 개발 등에 관 한 부담을 덜어주고 응용 프로그램 개발에만 치중할 수 해 줌 KWANGJU UNIVERSITY 운영체제론 13 Linux Cluster System Composition • Hardware System Selection • Node Network Configuration Composition • Parallel Configuration Composition KWANGJU UNIVERSITY 운영체제론 14 Hardware System Selection • 선택시 고려사항 – 문제의 계산량 – 문제의 병렬화 경우 통신의 양과 형태 – 문제의 크기(필요한 메모리의 양) – 문제의 I/O(필요한 하드 디스크 공간과 I/O 형태) • 노드 CPU – Inter vs Alpha (or other) – Single CPU vs SMP – 병렬 컴퓨터는 동기화(Synchronization) 때문에 가장 느린 노 드 컴퓨터의 속도가 전체 속도를 결정한다. KWANGJU UNIVERSITY 운영체제론 15 Hardware System Selection(cont.) • 노드간 연결과 관련된 하드웨어 사항 – Fast Ethernet + 100 Mbps Switch – Myrinet NIC + Myrinet Switch – Gigabit Ethernet + Gigabit Switch – SCI + SCI Switch – ATM Card + ATM Switch (?) – PLIP (?) • Hard disk system 선택 – Big disk + diskless – Disk on every nodes – Local disk and I/O disk KWANGJU UNIVERSITY 운영체제론 16 Hardware System Selection(cont.) • Serial console or not • 소비전력과 열 • 노드간 연결의 논리적 구조와 관련된 사항 – Switch 구조의 경우 논리적 구조 선택이 상당히 자유롭다. – Multi-level switch, Channel bonding – Multiple networks • Hard disk system의 논리적 구조 – Share noting(Distributed file system) – Share something(Local partition + NFS partition) – Share everything(Diskless + NFS) KWANGJU UNIVERSITY 운영체제론 17 Node Network Configuration Composition • Single access point vs Multiple access points • NIS • rsh KWANGJU UNIVERSITY 운영체제론 18 Parallel Configuration Composition • Linux Cluster에서 현재 사용가능한 병렬환경 – Message passing • LAM(Local Area Multi-computer) – 메시지의 Size에 따라 매커니즘이 다름. – 작은 Size에 적합 • MPICH(MPI-Chameleon) – 큰 Size에 적합 • PVM(Prallel Virtual Machine) • KMPI(Kool MPI) KWANGJU UNIVERSITY 운영체제론 19 MPI Linux Cluster Programming • Parallel Programming • MPI Programming • MPI Function • MPI Programming의 고려 사항 • 간단한 MPI Programming 예제 KWANGJU UNIVERSITY 운영체제론 20 Parallel Programming • 병렬 프로그래밍 모델 – PRAM (Parallel Random Access Machine) Model – QSM (Queued Share Momory) Model – DMM (Distributed Memory Model) – Postal Model (Explicit massage passing Model) – BSP (Bulk Synchronous Parallel) – HMM (Hierachial Memory Model) – more KWANGJU UNIVERSITY 운영체제론 21 Parallel Programming(cont.) • Message passing – 정보를 Local 메모리 상에 존재하는 경우와 다른 컴퓨터의 메 모리 상에 존재하는 경우로 구분하고, 병렬 프로그램 상에서 non-local 정보가 필요할 때, message를 주고 받아서 해결 – 분산 메모리에 적합 – 두개의 노드 또는 다수의 노드가 협력 – PVM (Parallel Virtual Machine) – MPI (Massage Passing Interface) – BSP (Bulk Synchronus Parallel) KWANGJU UNIVERSITY 운영체제론 22 Parallel Programming(cont.) • Data Parallel – 데이터의 구조를 미리 분배하는 형태로 선언한 후, 이렇게 선 언한 정보가 Local 정보인지 non-local 정보인지 필요에 따라 서 컴파일러와 하드웨어가 해결 – 공유 메모리에 형태에 적합 – Lock-unlock mechanism – Open_MP – HPF – F90 • In-between – Linda KWANGJU UNIVERSITY 운영체제론 23 MPI Programming • 소개 – 1994년 MPI forum에 의해 표준화 됨 – MPI forum : 이전에 병렬 컴퓨터를 위해서 프로그램을 작성하 고 수행하던 여러가지 방법에 대한 일관된 표준을 마련하기 위해 결성된 단체 – Message passing paradigm을 이용하는 컴퓨터를 프로그램 하고 사용하는 표준을 제정 – 슈퍼컴퓨터 industry의 de facto 표준 역할 – 병렬 컴퓨터 하드웨어와 독립적으로 병렬 프로그램을 작성하 고 유지 가능 – 공유 메모리 방식의 병렬 컴퓨터 Architecture에서도 Open_MP라는 업계 공동의 표준을 마련하는 계기가 됨 KWANGJU UNIVERSITY 운영체제론 24 MPI Programming(cont.) • 목적 – 메시지 패싱 형태의 병렬 프로그램 호환성(Portability) – 효율성(Effichiency)은 계속 유지 – 자유로운 기능성(Functionality) • 특징 – Message passing standard – Portability – Based on previous message passing libraries – Program interface – Allow efficient communication – Allow heterogeneous environment – C and Fortran 77 binding – language independent semantics KWANGJU UNIVERSITY 운영체제론 25 MPI Function • Task management – MPI_Init() – MPI_Barrier() – MPI_Wtime(), MPI_Wtick() – MPI_Finalize() • Communicator – MPI_Comm_create() – MPI_Comm_rank() – MPI_Comm_size() KWANGJU UNIVERSITY 운영체제론 26 MPI Function(cont.) • Topology management – MPI_Cart_create() – MPI_Cart_coords() – MPI_Cart_get() – MPI_Cart_rank() • Communication – Blocked send-receive : MPI_Send(), MPI_Recv(), MPI_Sendrecv() – Non-blocked send-receive : MPI_Isend(), MPI_Irecv(), MPI_Wait() – Collective communication : MPI_Reduce(), MPI_Allreduce(), MPI_Bcast(), MPI_Scatter(), MPI_Gather() KWANGJU UNIVERSITY 운영체제론 27 MPI Function(cont.) • Derived Data type – MPI_Type_commit() – MPI_Type_size() – MPI_Type_struct() • Process group KWANGJU UNIVERSITY 운영체제론 28 MPI Programming의 고려 사항 • Load balance or domain decompostion • Surface-to-Volume ratio • Deadlock and racing condition • 병렬화하려는 문제의 순차 처리 프로그램이 존재하지 않는 경우 – 문제 분석 병렬화가 가능한 알고리즘 선택 – 선택한 알고리즘으로 순차 처리 프로그램 작성(순차처리 프 로그램으로 작성된 template이 있는 경우 debugging에 유리) – 순차처리 프로그램 작성시 병렬화를 염두에 두고, 병렬화할 경우에 message passing이 필요한 부분을 국소화할 수 있도 록 프로그램 작성 KWANGJU UNIVERSITY 운영체제론 29 MPI Programming의 고려 사항 • 병렬화하려는 문제의 순차 처리 프로그램이 존재하는 경우 – 코드 분석 병렬화가 가능한 알고리즘인지 아닌지 확인 – 가장 많은 시간이 걸리는 부분부터 병렬화 시작 (ever dimiinishing returns) – Message passing이 필요한 부분을 선별하고 국소화 – 필요하면 순차처리 프로그램을 개선 또는 재작성 – 병렬화 KWANGJU UNIVERSITY 운영체제론 30 간단한 MPI Programming 예제 #include <stdio.h> #include </usr/local/lam-CFC/h/mpi.h> #define N 1000000 main (int argc, char** argv) { int i, node, numtask, subN, iroot; float A[N]; double sum, sumt; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &node); MPI_Comm_size (MPI_COMM_WORLD, &numtask); subN = N/numtask; KWANGJU UNIVERSITY 운영체제론 31 간단한 MPI Programming 예제 for (i = 0; i < subN; i++) A[i] = (float)(i + 1 + node*subN); sum = 0.0; sumt = 0.0; iroot = 0; for (i = 0; i < subN; i++) sum = sum + A[i]; MPI_Reduce(&sum, &sumt, 1, MPI_DOUBLE, MPI_SUM, iroot, MPI_COMM_WORLD); printf(“total sum = %f\n”, sumt); MPI_Finalize(); } KWANGJU UNIVERSITY 운영체제론 32