Posted
Filed under Computer/HPC

박광기

(기상연구소 예보연구실)

1. 서 론

1940년대에 범용 컴퓨터의 급속한 발전을 계기로 1980년대 개인용 컴퓨터의 출현으로 소형이며 컴퓨터의 보급이 늘어나면서 1991년도 리누스 토발츠가 연구해낸 멀티태스팅이 지원되는 미니 유닉스 시스템 소스의 인터넷 배포로 수많은 프로그래머의 계속적인 보강에 의해 현재의 리눅스 시스템이 출현하였다.

컴퓨터 하드웨어 산업의 발전 속도에 맞게 이에 영향을 받은 많은 컴퓨팅 파워의 발전이 급속하게 이뤄졌다. 이러한 컴퓨팅 파워의 만족을 위해 급속히 발전된 개인용 컴퓨터의 하드웨어를 사용하여 고성능을 내기위해 1994년 미국 NASA의 계약사인 CESDIS에서 최초의 Beowulf클러스터를 제작 하였다.

소스가 공개된 유닉스 구조의 리눅스가 저가의 고성능 개인용 컴퓨터와 발달된 통신 기술의 네트워크에 다양한 개발에 적합하여 이를 이용한 클러스터 연구가 활발하게 되었다.

적은 비용으로 성능을 높일 수 있는 클러스터 연구에 사용되는 다양한 기법들의 소개로 기상모델의 적용과 더불어 앞으로 기상연구에 도움이 되고자 소개하려한다.

2. Cluster

Cluster라함은 “무리”,“집단”을 의미한다. 컴퓨터에 넘어오면서 개인용 컴퓨터 무리를 소프트웨어적으로 하나의 시스템처럼 묶어 하나의 문제의 계산을 이 컴퓨터 집단이 처리하도록 하는 것을 의미한다.

현재 Cluster는 크게 HA Cluster(High Available Cluster)와 HPC(High Performance Computing) Cluster로 나눌 수 있으며 본 연구에서는 고성능을 내기위한 연구이므로 HPC관련 클러스터에 중점으로 설명을 해나갈 것이다.

3. HPC Cluster

HPC Cluster를 연구하기위해 다양한 프로젝트 들이 존재하나 초석이 된 것은 Beowulf 프로젝트일 것이다. 본 장에서는 HPC 클러스를 위한 공통되는 기술적인 부분을 소개하려 한다. 병렬 컴퓨팅은 분산메모리 방식과 공유메모리 방식으로 크게 두 부류로 나눌 수 있다.

Cluster에 병렬 프로그램을 run시키기 위해서는 프로그램을 병렬 Library를 이용하여 coding 해줘야한다. 현재 병렬 컴퓨팅 연구에 사용되는 병렬 Library는 병렬 표준 Library인 MPI(Message Passing Interface)를 따르고 있으며 리눅스 클러스터에서는 MPI의 일환으로 MPICH와 LAM을 주로 사용하고 있으며 MPI 프로그래밍은 프로그래머가 일을 하나하나 분석하여 메시지의 전송 및 동기화 등과 같은 일련의 문제를 고려하여 프로그램을 작성해야 한다. 이는 모델 개발자에게 과도한 프로그래밍 부담을 준다는 단점이 있지만 프로그램의 성능을 최대로 이끌어 낼 수 있다는 장점이 있다.

이와 같은 병렬 방식을 분산메모리 방식이라 하며 이러한 HPC Cluster는 가능한 같은 기종으로 구성하여 최대의 performance를 내기위해 사용한다. 그러나 이기종 간에 HPC Cluster를 구성하기위해 사용되는 기법으로 PVM(Parallel Virtual Machine)를 사용하기도 한다. 본장에서 PVM기법은 앞으로 거론하지 않기로 한다.

공유메모리 방식의 병렬 Library로는 OpenMP가 잠정적으로 표준화가 되어 있다. 최근들어 하드웨어의 발전으로 인해 Dual CPU이상의 컴퓨터들이 나오고 있다. 이러한 컴퓨터를 SMP (Symmetric Multi-Processing) 장비라하며 공유메모리 방식의 병렬화가 가능한 장비이다.

OpenMP는 기존의 HPF(High Performance Fortan)에 대한 대안으로 제안된 것으로서 사용자가 순차적 프로그램 소스에 몇 개의 컴파일러 directive만을 추가함으로써 병렬프로그래밍이 간단해지며, 병렬화가 필요한곳에서 여러 thread로 분산되어 공유메모리를 참조하도록 컴파일이 된다.

최근 Cluster는 SMP장비를 이용한 Cluster구성을 많이 하므로 각각의 장점을 활용하여 공유메모리 방식과 분산메모리 방식을 절충한 Hybrid(혼합형 병렬화) 기법을 많이 사용하기도 한다(Fig. 1). 혼합형 병렬화 기법이 클러스터 성능에 주는 영향은 네트워크와 클러스터 항목에서 추가적인 설명을 하기로 한다.

4. 네트워크와 클러스터

클러스터 발전방향에 네트워크 장비의 발전은 많은 영향력을 주었다. 그러나 초고속 네트웍크는 가격대 성능비를 내기위해 사용하는 클러스터에 범용적으로 사용하기에는 부담스러운 면이 있게 된다. 이러한 부분을 해결하기위한 전세계의 클러스터 개발자 및 컴퓨터 산업 관련자들이 범용 장비를 이용한 초고속화를 위한 연구가 이뤄져 다양한 방법들이 나왔고 또한 실용화 된 것도 있다.

Channel bonding 기법은 물리적인 Fast Ethernet 네트워크 2개 이상을 소프트웨어적으로 논리네트워크 하나로 만들어 사용하는 것으로 네트워크 대역폭을 물리적인 네트워크 대역폭 합의 약 85~95%가량 늘릴 수 있다. Channel bonding에 의한 네트워크 대역폭의 향상 효과는 대체로 15~20%의 성능을 향상시키는 것으로 나타났다.

그러나 Gigabit Network을 UTP Category 5를 이용한 Dumi S/W HUB를 이용한 Gigabit Channel bonding에서는 1byte ~ 8Mbyte사이의 패킷 크기에서의 네트웍 퍼포먼스에는 큰 효과를 주지 못한다. 이유는 Gigabit 하나로도 충분한데 bond 모듈을 거쳐 좀더 많은 일을 해야 하기에 나타나는 증상 같다. 또한 본 연구에는 Disk-less Cluster만 사용하였다. Fig. 2참조)

Fig. 3에서 Channel bondig과 Fast Ethernet사이의 성능 비교를 위해 MM5 모델을 이용하여 테스트하였다.

그러나 3개 이상의 물리적인 네트워크 장비를 channel bonding시키는 것은 가격대 성능비에 적합하지 않아 잘 사용하지 않는다. 또한 M-via 기법은 네트워크 통신을 위해 CPU가 over head를 내는 것을 줄이고자 고안된 기법으로 고가의 초고속 네트워크 하드웨어에 장착된 방법을 소프트웨어적으로 해결한 것이다. 이 방법을 이용하게 되면 네트워크 over head를 줄이며 초고속 네트워크 통신을 할 수가 있다. Fig. 4의 상단 그림은 TCP/IP기반과 M-VIA기반의 네트워크 대역폭을 벤치마크한 표이다. 하단 그림은 MPI를 TCP/IP기반과 M-VIA기반하에서 각각 성능 비교를 한 것으로 약 10%정도 TCP/IP기반보다 성능이 좋음을 보여주고 있다(Fig. 4).

이렇게 네트워크 성능에 따라 클러스터 성능을 좌우하는데 큰 영향력이 있다는 것을 알게 되면서 이부분의 성능 개선을 위한 많은 노력을 하고 있다.

한 예로 혼합형 병렬화의 효율을 살펴보면 단일 네트워크에서는 119%, channel bonding에서는 123%의 성능향상을 보이는 것으로 나타났다. 즉 혼합형 병렬화의 효과는 대체로 19~23%의 성능향상을 가져오는 것으로 나타났다. 하지만 channel bonding과 혼합형 병렬화에 의한 효과를 종합하면 141%의 성능 향상을 보여 클러스터의 계산 성능이 획기적으로 개선된 것을 알 수 있다.

본 연구에서 다른 초고속 네트워크(Gigabit Fiber, Myrinet, Infini band)를 중점으로 설명하지 않은 이유는 저가의 범용 장비를 이용한 클러스터링 소개를 통하여 많은 클러스터연구에 활성화에 초석이 되고자 고가의 장비 소개는 빼기로 한다.

참고 문헌

김영태, 이용희, 최준태, 오재호, 2002: 초고속 네트워크를 이용한 PC 클러스터의 구현과 성능평가, 한국정보과학회논문집: 시스템 및 이론, 29, 57-64.

박광기, 이용희, 조천호, 2003: 중규모 기상모델운영을 위한 클러스터상에서의 혼합형 병렬화기법 개발, 한국기상학회보 대기 : 제 13권 1호 574-575

SPCC Univ of Seoul : http://spcc.uos.ac.kr/

예전에 내가 기상연구소에 다닐때 썼던 글중의 하나이다.  내 홈페이지 (http://www.cep.kr) 에 올렸던것인데...  너무나 가려져있는 홈페이지인것 같아 이렇게 테더툴에 생각난김에 꺼내어 본다. 출처역시 내 홈페이지구나... ㅋㅋ
좀더 자세한것은 아래의 파일을 다운 받아 보시면 그림도 나옵니다.

[DN=1100532101.pdf]paper download[/DN]


2007/07/28 00:28 2007/07/28 00:28
[로그인][오픈아이디란?]
Posted
Filed under Computer/HPC

중규모 기상모델운영을 위한 클러스터상에서의 혼합형 병렬화 기법 개발

박광기 / 이용희 / 조천호

기상연구소 예보연구실


1. 서 론

1940년대에 세계 최초로 범용 컴퓨터가 개발된 이후, 오늘날에 이르러서는 컴퓨터 계산 성능의 급진적인 발달로 인하여 개인용 컴퓨터의 성능이 10여년 전의 슈퍼컴퓨터의 성능을 능가하 는 계산 처리 능력을 갖추게 되었으며, 아울러 통신 기술의 발달로 네트워크를 통하여 초고속으로 자료교환이 가능하게 되었다. 따라서 고속 네트워크를 이용한 “개인용 컴퓨터의 클러스터”를 통한 분산처리 시스템이 발달하게 되었으며, 이러한 분산 처리 시스템의 운영은 저가의 하드웨어를 이용한 초고속 환경을 제공할 수 있으므로 기상모델의 병렬 프로그램의 연구 및 운영에 있어서 최적의 환경을 제공하게 되었다(김영태 등, 2002)

전 세계적으로 보았을 때 클러스터의 연구는 대부분 표준화된 라이브러리인 MPI(Message Passing Interface)를 사용하고 있기 때문에 클러스터링의 기술적인 접근은 거의 일치한다. 그러나 아직까지 분산 병렬처리의 사용에 대한 가시적인 결과가 나오지 않은 상태이다. 이는 분산 시스템의 구현에 앞서 병렬 프로그램의 개발과 구성이 어렵기 때문이라고 분석된다.

이 연구에서는 클러스터 상에서 최소의 비용으로 네트워크 환경을 최적화할 수 있는 혼합형 병렬화 기법을 소개하고 이를 기상모델에 적용하여 그 성능을 평가하고자 한다.

2. 혼합형 병렬화 기법

병렬 컴퓨팅은 크게 나누어 분산메모리 방식과 공유메모리 방식으로 구분할 수 있다. 병렬 프로그래밍 접근법을 메시지 패싱(massage passing)이라고 하며, 병렬 프로그램을 작성하기 위해 가장 잘 개발된 일반적인 방법이다. 우리는 분산메모리 방식의 병렬 컴퓨팅에 빠른 속도로 메시지 패싱의 표준화가 되는 MPI (Message Passing Interface) 표준을 따를 것이다. 공유 메모리 방식의 병렬 컴퓨터 환경에서는 OpenMP가 그 잠정적인 표준화가 이루어져 있다. MPI 프로그래밍은 프로그래머가 일을 하나하나 분석하여 메시지의 전송 및 동기화 등과 같은 일련의 문제를 고려하여 프로그램을 작성해야 한다. 이는 모델 개발자에게 과도한 프로그래밍 부담을 준다는 단점이 있지만 프로그램의 성능을 최대로 이끌어 낼 수 있다는 장점이 있다. 반면에 OpenMP는 기존의 HPF (High Performance Fortran)에 대한 대안으로 제안된 것으로서 사용자가 순차 프로그램에 몇 개의 컴파일러 directive만을 추가함으로써 공유메모리를 참조하는 thread를 생성하도록 하는 병렬 기법이다.

혼합형 병렬화(hybrid parallelization)는 MPI와 OpenMP의 장점을 모두 활용하여 프로그래밍 함으로써 대칭형 CPU를 사용하는 SMP(Symmetric Multi-Processing) 노드들로 구성된 클러스터 시스템의 성능을 최대한 활용할 수 있게 해준다. 즉, 노드내부에서의 병렬화는 OpenMP를 통해 구현하고, 노드간의 병렬화는 MPI를 이용하는 방법이 있다(Fig. 1).

이 연구에서는 OpenMP의 장점인 쉬운 프로그래밍과 MPI의 장점인 고성능 컴퓨팅 및 복합성을 띈 혼합형 병렬 기법을 클러스터에 적용시켜 성능을 살펴보았다.

3. 혼합형 병렬화의 성능 분석

3.1 혼합형 병렬화를 위한 네트워크 구성

네트워크의 기술 발전은 클러스터의 발전 방향에 큰 영향을 주었다. 우리가 범용으로 사용하는 클러스터는 주로 Fast Ethernet을 통한 네트워크으로 구현된다. 그러나 분산메모리 병렬 처리방식에는 Fast Ethernet의 단일 네트워크만으로는 네트워크 통신부하의 문제점을 안고 있다. 이러한 네트워크 통신부하를 해결하기 위해 두 개 이상의 Fast Ethernet 네트워크를 논리적으로 묶어 네트워크 대역폭을 넓힌 Channel bonding을 사용하였다(http://www.beowulf.org).NetPIPE (http://www.scl.ameslab.gov)로 네트워크 통신 속도만 비교해 본 결과 단일 네트워크보다 두 개의 Fast Ethernet을 묶은 Channel bonding에서 2배의 네트워크 속도를 보인다.

또한 MPI를 사용한 계산에 있어 네트워크 부하를 최소화하기 위해 diskless 클러스터에서 NFS-ROOT로 사용되는 네트워크를 계산전용 네트워크와 분리하여 클러스터링 기본통신이 계산에 필요한 네트워크에 영향을 주지 않게 하였다. 성능 평가에 사용한 클러스터는 8노드의 SMP 클러스터이므로 한 노드에 2개의 CPU가 장착되어 총 16개의 CPU가 장착되었다.

3.2 혼합형 병렬화의 성능 평가

Fig.2에는 클러스터에서 MM5를 통한 MPI 및 혼합형 병렬화를 단일 네트워크와 Channel bonding 사이의 성능을 비교한 결과를 나타내었다. Fig. 2에서 상단은 MPI을 사용한 경우를 단일 네트워크와 Channel bonding을 한 경우를 실험한 것이고, 하단은 혼합형 병렬화 기법 사용하여 단일 네트워크와 Channel bonding 네트워크간의 성능을 비교한 것이다.

먼저 네크워크의 대역폭과 관련하여 성능향상을 살펴보기 위하여 단일 네트워크와 channel bonding을 한 경우를 비교해 보면 단일 네트워크의 경우에는 계산성능이 MPI를 사용한 경우에는 약 115% 향상되었으며 반면에 혼합형 병렬로 사용한 경우에는 119% 향상되었다. 즉 channel bonding에 의한 네트워크 대역폭의 향상 효과는 대체로 15~20%의 성능을 향상시키는 것으로 나타났다. 네트워크 대역폭이 2배 증가했음에도 불구하고 성능 향상이 미치지 못하는 것은 일반적으로 TCP/IP를 사용하는 통신에서 부가적으로 발생하는 통신 부하(불필요한 head 부분의 과도한 전송)를 발생시키는데 원인이 있는 것으로 알려져 있다.

다음으로 혼합형 병렬화의 효율을 살펴보면 단일 네트워크에서는 119%, channel bonding에서는 123%의 성능향상을 보이는 것으로 나타났다. 즉 혼합형 병렬화의 효과는 대체로 19~23%의 성능향상을 가져오는 것으로 나타났다. 하지만 channel bonding과 혼합형 병렬화에 의한 효과를 종합하면 141%의 성능 향상을 보여 클러스터의 계산 성능이 획기적으로 개선된 것을 알 수 있다.

사 사

이 연구는 기상청에서 시행하는 기상지진기술개발사업의 세부과제 “한반도 악기상(집중호우) 감시 및 예측기술개발”의 일환으로 수행되었다.

참고 문헌

김영태, 이용희, 최준태, 오재호, 2002: 초고속 네트워크를 이용한 PC 클러스터의 구현과 성능평가, 한국정보과학회논문집: 시스템 및 이론, 29, 57-64.



수록 : 한국기상학회보 (대기) 2003
생각나서 함 적어봤다... ㅋㅋ

혹시 논문이 정상적인것을 읽어보고 싶어하실분을 위해 file을 올립니다.
[DN=1201127978.pdf]paper download[/DN]

2007/07/27 21:00 2007/07/27 21:00
[로그인][오픈아이디란?]