슬라이드 제목 없음

Download Report

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