Page 159

계에 부딪혔다. 그래서 듀얼 코어, 쿼드 코어 프로세스가 보편화됐고, 12, 16, 18 코어, 심지어 그보다 더 많은 코어를 장착한 프로세서가 등장하게 됐다.

CPU뿐만 아니라 GPU라 부르는 그래픽 카드용 프로세서도 자세히 들여다보면 상당히 병렬화 돼 있다. 요즘 나오는 고성능 그래픽 카드는 코어를 무려 4,000개 이상 장착하고 있으며, 현재 도 그 수는 계속 증가하고 있다. 이렇게 제작된 그래픽 카드는 단순히 게임용으로만 사용하지 않고, 수학 연산의 비중이 높은 작업을 처리하는 데도 활용된다. 몇 가지 예를 들면 이미지나 비디오 처리, 단백질 분석(주로 신약 개발 과정에 사용됨), 세티 Search for Extra-Terrestrial Intelligence, SETI

(외계지적생명체탐사) 프로젝트에서 신호를 처리하는 작업 등에 활용된다.

C++98/03 버전은 멀티스레드 프로그래밍을 지원하지 않아서 서드파티 라이브러리나 타깃 시 스템의 OS에서 제공하는 멀티스레드 API를 활용하는 수밖에 없었다. C++11부터 표준 멀티 스레드 라이브러리가 추가되면서 크로스 플랫폼 멀티스레드 프로그램을 작성하기 한결 쉬워졌 다. 현재 C++ 표준은 GPU를 제외한 CPU만을 대상으로 API를 정의하고 있지만, 향후 GPU 도 지원하도록 개선될 가능성이 있다. 멀티스레드 프로그래밍이 필요한 이유는 크게 두 가지다. 첫째, 주어진 연산 작업을 작은 문제 들로 나눠서 각각을 멀티프로세서 시스템에서 병렬로 실행하면 전반적인 성능을 크게 높일 수 있다. 둘째, 연산을 다른 관점에서 모듈화할 수 있다. 예를 들어 연산을 UI 스레드에 종속적이지 않 은 독립 스레드로 분리해서 구현하면 처리 시간이 긴 연산을 백그라운드로 실행시키는 방식으 로 UI의 응답 속도를 높일 수 있다. [그림 23-1]은 병렬 처리가 절대적으로 유리한 상황을 보여주고 있다. 예를 들어 이미지의 픽셀 을 처리할 때 주변 픽셀 정보를 참조하지 않는 방식으로 구현한다고 하자. 그러면 이미지를 크게 네 부분으로 나눠서 처리하도록 알고리즘을 구성할 수 있다. 싱글 코어 single-core 프로세서에서는 모든 부분을 순차적으로 실행해야 하고, 듀얼 코어 dual-core 프로세서에서는 두 부분씩 동시에 실 행할 수 있고, 쿼드 코어 quad-core 프로세서에서는 각 부분을 동시에 실행할 수 있다. 이처럼 성능 이 코어 수에 정비례한다.

23장 C++ 멀티스레드 프로그래밍 1129

Profile for 한빛미디어

전문가를 위한 C++ (개정4판) - 맛보기  

『전문가를 위한 C++』(개정4판)은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 저자는 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하...

전문가를 위한 C++ (개정4판) - 맛보기  

『전문가를 위한 C++』(개정4판)은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 저자는 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하...

Advertisement