병렬처리와 성능향상 A277032 정승휘
개요 PART Ⅰ. 병렬처리에서 성능 향상 PART Ⅱ. 병렬처리 전략 PART Ⅲ. 스레딩 모델
병렬처리에서 성능향상을 판단하는 두 가지 관점 암달의 법칙(Amdhal’s Law) “The speedup of a program using multiple processors in parallel computing is limited by the time needed for the sequential fraction of the program.” “병렬처리를 통한 프로그램의 성능 향상은 프로그램의 직렬 처리부분에 의해 제한된다.” Gene Amdhal 구스타프슨의 법칙(Gustafson's Law) “병렬로 처리할 수 있는 작업량은 프로세서의 개수에 따라 선형적으로 증가한다.” “The amount of work that can be done in parallel varies linearly with the number of processors.” John Gustafson
암달의 법칙 아무리 많은 프로세서 코어를 사용하더라도, 직렬 부분들의 실행 속도는 절대 깨질 수 없다. 아무리 많은 프로세서 코어를 사용하더라도, 직렬 부분들의 실행 속도는 절대 깨질 수 없다. 작업량 500 시간 350 속도증가 x1.4 작업량 500 시간 400 속도증가 x1.25 작업량 500 시간 500 속도증가 x1 작업량 500 시간 300 속도증가 x1.7
구스타프슨의 법칙 프로세서가 선형적으로 증가할수록 처리할 수 있는 작업량도 선 형적으로 증가하므로 시간당 처리 속도도 선형적으로 증가한다. 작업량 2*N*100+300 시간 500 속도증가 O(n) 작업량 500 시간 500 속도증가 x1 작업량 700 시간 500 속도증가 x1.4 작업량 1100 시간 500 속도증가 x2.2
정리 암달의 법칙과 구스타프슨의 법칙은 같은 문제를 다른 관점에서 본 것. 암달 - 직렬로 수행되는 작업을 최소화 암달의 법칙과 구스타프슨의 법칙은 같은 문제를 다른 관점에서 본 것. 암달 - 직렬로 수행되는 작업을 최소화 구스타프슨 -문제의 크기가 증가되는 것을 고려
병렬처리 전략 스레드를 어떻게 ‘사용’ 할 것인가? 기존 전략 - 프로그램을 여러 블록으로 나누고 각 블록에 개별 스레드를 할당. 문제점 - 확장성(Scalability)이 없다. 기능 블록의 개수가 고정되어 있기 때문에 프로세 서가 늘어나도 더 많은 데이터를 처리할 수 없다.
병렬처리 전략 Divide & Conquer : 데이터를 더 작은 조각으 로 나누고 각 조각마다 스레드 할당 프로세서가 많아질 수록 더 많은 데이터를 효율적으로 병렬 처리할 수 있다.
Example : Ray-Tracing
Example : Ray-Tracing 3D 렌더링 기술 데이터 양이 많고 계산 집중적인(CPU- Bound) 프로세스이므로 병렬처리에 아주 적 합하다. (I/O-Bound 프로세스의 경우 병렬처 리로 얻을 수 있는 이득이 적을 것) 그려질 이미지를 작은 영역으로 나누고 정 해진 개수의 스레드가 각 영역을 처리한다.
Example : Ray-Tracing CPU-A : Intel Core Duo P7350 2.0GHz CPU-B : Intel Core i7 860 2.80GHz Sample Counts : 32 단 1회만 테스트 함.
Example : Ray-Tracing Intel Core Duo P7350 2.0GHz 스레드 개수 시간(sec) 1개 108.84 2개 67.91 4개 62.77 8개 55.33 16개 51.84 32개 51.57 64개 51.24 128개 49.58 256개 48.779 512개 48.65
Example : Ray-Tracing Intel Core i7 860 2.80GHz 스레드 개수 시간(sec) 1개 63.05 2개 33.99 4개 19.41 8개 12.40 16개 12.22 32개 12.30 64개 11.89 128개 12.03 256개 12.04 512개
Example : Ray-Tracing 스레드 개수가 많아질 수록 성능향상의 정 도는 줄어든다. 스레드가 너무 많아지면 속도가 조금 빨라 질 수는 있지만 응답성이 떨어진다. 프로세서 개수 대비 적당한 스레드 개수를 정해야한다. (프로그램의 성격, 환경마다 다 를 것)
스레딩 모델 문제를 스레드를 이용해 병렬처리로 해결하 고자 할 때 스레드를 사용하는 방식 Boss / Worker Model Client / Server Model Pipeline Model
Boss / Worker Model Boss 스레드(일반적으로 Main Thread)가 여 러 개의 Worker 스레드에게 작업을 나누어 주는 방식 병렬처리에서 가장 흔한 방식
Example : sortMT
Client / Server Model 동시에 여러 개의 클라이언트들의 요구를 처리하기 위해서 스레드를 연결된 클라이 언트마다 생성한다. 변형된 방법으로 스레드 풀을 사용한 클라 이언트/서버 모델이 있다.
Example : serverNP
Pipeline Model 각 스레드 또는 스레드들의 그룹은 주어진 작업에 대한 특정한 처리를 수행하고, 그것 을 다른 스레드에 넘겨서 나머지 처리가 일 어나게 한다. 공장의 조립라인과 흡사한 방식.
Example : threeStage
참고 자료 뇌를 자극하는 윈도우 시스템 프로그래밍(한빛 미디어, 윤성우) Windows 시스템 프로그래밍 3판(정보문화사, Johnson M. Hart) 인텔 스레딩 빌딩 블록(지앤선, James Reinders) Operating System Concepts 7th(홍릉과학출판사, Silberschatz)
Q&A BIO HAZARD 5(CAPCOM) – MT Framework Engine