2013년 7월 28일 일요일

암달의 법칙과 구스타프슨의 법칙 비교

이번 글에서는 지난 글(슈퍼컴퓨터에서의 무어의 법칙 - 암달의 법칙, 구스타프슨의 법칙)에 이어 암달의 법칙과 구스타프슨의 법칙을 애미메이션 영화에 적용하여 설명을 하겠습니다. 이 예를 통해서 어느 정도 이해가 더 쉽게 되길 바랍니다.

쉬렉과 같은 애니메이션 영화나 아니면 요즘 개봉되고 있는 "Mr. 고"같은 컴퓨터 그래픽이 들어가는 영화는 각종 특수 효과들을 컴퓨터를 이용하여 구현을 합니다. 이때 특수효과들을 더 실제와 가깝게 하기 위해서는 많은 컴퓨팅 시간이 필요합니다. 또한 렌더링 작업도 많은 시간이 걸리게 됩니다. 복잡도에 따라 걸리는 시간은 다르겠지만 서버 한대로 수시간이 필요하다고 합니다. 여기서 계산을 간단히 하기 위해서 프로세서의 코어 하나가 필름 한장을 처리하는데 100시간이 걸리다고 합시다. 즉, 한 화면을 우리가 눈으로 볼 수 있는 형태로 바꾸는데 싱글 코어로는 4일이 넘게 걸리는 것이죠. 당연히 이 시간을 줄여야겠죠. 더 최신의 프로세서를 사용한다거나 코어수가 많은 프로세서를 사용하려 할 것입니다. 이때 코어수가 10개인 프로세서 2개가 장착되는 서버로 계산을 한다고 하면 시간이 얼마가 걸릴까 궁금하겠죠. 이럴때 적용할 수 있는 것이 바로 암달의 법칙입니다.

S(N) = 1/((1-P) + P/N)

S(N), 바로 성능향상은 전체 프로그램중 병렬화가 차지하는 부분과 병렬화를 담당하는 시스템의 수(N)의 관계입니다. N이 증가하면서 생기는 오버해드를 무시하고 병렬화 비중이 95%라고 하면 코어수 하나에서 실행했을 때 100시간 걸리는 것이 10개 코어 프로세서 2개를 사용하면 대략 9.7시간이 걸릴 것으로 예상되고, 이때 최대 속도 향상은 10.2배입니다. 코어수는 20배 증가했는데 속도는 10.2배밖에 향상이 되지 않습니다.

그런데 영화를 제작하는데 있어서 필름 한두장만 컴퓨터로 만드는 것은 아닙니다. 상연시간이 2시간이고 초당 프레임수가 24인 영화를 만든다면 총 17만 2천8백장의 화면을 만들어야 합니다. 코어수가 20인 위 서버로 계산을 한다면 무려 4600년이나 되는 엄청난 시간이 걸린다는 계산이 나옵니다. 그럼 이렇게 엄청난 데이터 처리를 어떻게 할까요? 영화 만드는 것을 포기하라구요?  방법이 있죠. 바로 서버수를 늘리면 되는 것입니다. 서버 한대에서 처리할 것이 아니라 서버 1000대에서 처리하면 4.6년으로 줄게 되고 2000대로 계산하면 2.3년이면 되죠. 약간 다른 관점으로 보면 서버 한대로 9.7시간 동안 1 화면을 렌더링 할 수 있었다면 서버 1000대로 동일한 9.7시간동안 거의 1000화면 처리를 할 수 있게 됩니다. 이때 바로 적용할 수 있는 것이 구스타프슨의 법칙입니다. 계산 과학에서 커다란 문제는 병렬화를 효과적으로 하여 처리할 수 있다는 개념이죠. 암달의 법칙인 병렬화 부분에 성능향상이 제한된다는 것에 사로잡히지 말라는 것입니다. 작업을 한대의 시스템에서 처리할 수 있는 양만큼 나눈후 시스템 수를 늘리라는 것이다. 컴퓨터의 수에 따라 성능 향상은 비례한다라는 것입니다. 확장성의 법칙입니다. 바로 클러스터링을 이용한 슈퍼컴퓨터의 기본 개념이 되었고 구글이나 네이버, 페이스북등 거의 모든 인터넷 포털 업체들이 수천대의 서버에서 수만대의 서버를 운용하는 이유이기도 합니다.

구스타프슨의 법칙 수식은 아래와 같습니다.

S(P) = a + P(1-a) = P - a x (P-1)

성능향상은 프로세서수 P에 비례하며 기울기는 (1-a)가 됩니다(a는 병렬화 할 수 없는 부분). 암달의 법칙에서는 성능향상이 프로세서수가 아무리 증가해도 특정값으로 제한이 되는데 구스타프슨의 법칙에서는 비례하죠. 바로 관점의 차이가 결과도 다르게 나오는 것입니다. 그렇다고 어느 한 식이 잘못됐다는 것은 아닙니다.

지난 관련 글

댓글 없음:

댓글 쓰기