사용기 및 구매후기


컴퓨터 클러스터의 이해

2010.07.06 21:36

cicatrix 조회:3631 추천:5

공학 문제의 해결 방법


일반적으로 공학 문제의 해(solution)을 구하기 위한 방법으로 아래와 같은 세 가지로 나눌 수 있다.

1. 이론 (theory)

2. 실험(experiments)

3. 수치해석 (numerical analysis)

각 공학 문제의 특성에 따라 독립적으로 작용하여 문제를 해결할 수 도 있지만

세 가지 모두를 고려했을 때 각각의 단점들을 보완할 수 있기 때문에 실제 물리적 현상의 해를 좀 더 정확히 계산할 수 있다.

특히 수치해석은 실험을 하기 위해 소요되는 비용과 시간을 줄이고,

실험의 위험 부담이 없으며, 결과값을 직관적으로 확인할 수 있는 장점이 있으므로 많은 분야에서 활용되고 있다.




수치해석 = 컴퓨터의 연산


사실 수치해석은 전산해석(computational analysis)와 공학 분야에서 같은 의미로 쓰이기는 하지만

꼭 컴퓨터를 이용해서 풀이하는 것만은 아니다.

가장 심플한 수치해석 기법으로서 Newton’s method는 0번 점으로부터 출발하여 n번 점인 해를 구할 수 있다.

사실 수학적 풀이기법을 잘 알지 못하더라도 직선을 그을 수 있는 자와 연필만으로도 문제를 해결할 수 있는 것이다.


하지만 실제의 공학 문제는 위와 같이 간단하지는 않다.

태풍의 이동경로, 차량의 충돌해석, 비행기 날개 주위의 유동장 등의 복잡한 물리 현상을 해석하기 위해서는

여러 요인들이 복잡하게 얽혀 있고, 연필과 종이만으로 이들 사이의 복잡한 수식과 방정식을 풀기에는 너무도 계산의 양이 많다.

따라서 수치해석을 위해서는 반복작업에 적합한 컴퓨터라는 도구를 이용하는 것이다.




Computational Load


일반적으로 수치해석 분야에서 복잡함의 정도는 격자의 수로 표현할 수 있다.

특정 물리 현상의 계(system)를 100개, 1000개, 10000개 등으로 쪼개어 계산한다는 의미인데,

일반적으로 더 잘게 쪼개어 계산할 수록 정밀한 해를 계산할 확률이 높다.



그러나 격자의 수가 증가함에 따라 CPU가 연산하는데 필요한 시간 역시 증가한다.

따라서 적당한 수준에서 격자의 수를 제한하여 해석하거나,

그럴 수 없는 경우라면 더 높은 성능의 컴퓨터를 이용할 수 밖에 없다.


소규모 기업에 종사하거나 수치해석 전공이 아닌 대학원생 정도라면 개인용 컴퓨터를 이용하게 되는데

100만개 정도의 격자수에 비정상상태(unsteady state) 문제를 풀이한다면 때로는 수 주가 지나도 결과를 얻을 수 없다.

다행히도 최근 출시되는 CPU의 성능은 비교적 뛰어나기 때문에 이러한 부분에서 조금은 나아졌다고 생각한다.




CPU 발전의 대세 = 멀티코어


최근에 발매되는 CPU는 거의 대부분 멀티코어이다.

멀티코어 CPU는 하나의 칩에 두 개 이상의 프로세서가 존재하여 각각의 프로세서가 다중 작업을 하게 된다.

병렬화된 명령어의 지원을 받는다면 멀티코어 CPU는 복잡한 문제를

몇 개의 구역(partition)으로 나누어서 각각의 코어가 일을 분담하게 되므로 그 만큼 해석시간에 있어서 이득이라 할 수 있다.


사실 멀티코어 CPU가 나오게 된 배경 역시 흥미로운데,

이는 다중 작업에 유리하기 때문에 개발되어진 것 보다 공정 기술의 한계에 부딪혔기 때문이 아닐까 싶다.

수 년전 CPU제조사와 반도체 업계는 무어의 법칙이 무너지지 않을 것이라는 믿음을 가지고 있었고,

무려 10Ghz의 클럭 스피드를 가지는 인텔 펜티엄 4 프로세서를 기대했으나

반도체 공정 기술은 무한히 발전하지 못했고 결국 고 클럭 CPU는 출현하지 않았다.


또한 90nm 공정으로 접어 들면서부터 CPU에서 발생하는 과도한 발열 및 소비전력의 문제가 심각히 대두되었고,

각 컴퓨터 관련 커뮤니티에서는 펜티엄 4 프레스캇을  프레스핫이라 부를 만큼 뜨거운 CPU가 탄생하기도 하였다.

무한히 고 클럭의 길을 갈 것만 같았던 CPU의 클럭 스피드는 현재 3GHz 정도에서 발걸음을 멈추었으며,

하나의 다이에 여러 프로세서를 집어넣은 멀티코어 CPU가 현재의 트렌드라고 할 수 있다.



최근 발매된 6코어 i7-980x 




컴퓨터 클러스터


수치해석을 위한 컴퓨터 클러스터는 멀티코어 CPU의 역할과 비슷한 점이 매우 많다.

무거운 물건을 들기 위해 여러 사람이 협력하는 것처럼,

멀티코어 CPU 역시 다중 작업에서 각각의 코어가 작업을 나누어 처리하는 것이며,

컴퓨터 클러스터에서는 LAN 상의 여러 대의 컴퓨터가 복잡한 물리 현상을 지배하는 방정식을 나누어 풀게 된다.


 


위의 사진은 구글링한 것으로 Michigan Technological University의 Beowulf cluster라고 한다.

가운데의 PC는 Host node이며, 나머지 PC들은 Compute node이다.

그리고 검은색 기기는 Network hub로 PC들 사이의 통신을 중계하는 역할이다.


이 구성을 좀 더 간략하게 나타내보면 다음과 같다.

Host node는 인터넷에 직접 접속하며, Compute node들은 그렇지 못하다.

Host node와 Compute node는 Network hub로 묶여 있고 각각의 컴퓨터 간의 정보를 주고 받을 수 있다.





어떻게 클러스터링 할 수 있는가?


본 글에서 말하는 컴퓨터 클러스터는 복잡한 물리 현상을 풀이하기 위해 하나로 묶어 놓은 컴퓨터의 집합체이다.

이러한 컴퓨터의 집합체를 어떻게 만들 수 있을 것인가 하는 문제의 해답에 대해 명확히 제시할 수 없지만,

순수하게 수치해석 툴을 사용하고자 하는 입장에서 위의 그림과 같이 PC4대를 이용하여

최대한 간단하게 컴퓨터 클러스터를 구성 방법에 대해서  말하고자 한다.


또한 나와 같이 linux 운영체제를 다루어 본 경험이 없는 이에게 windows 운영체제를 이용하는 것은 상당히 매력적이다.


다음 글에서는 Windows HPC Server 2008을 이용하여 4대의 PC를 클러스터링 하는 튜토리얼을 작성할 계획이다.


오늘:
154
어제:
703
전체:
15,937,985