Creative Motive

병렬 프로그래밍 완전 정복 #0 - 프롤로그 본문

C++

병렬 프로그래밍 완전 정복 #0 - 프롤로그

aicosmos 2013. 2. 22. 13:31

데브피아 김경진 님 작성 (http://devmachine.blog.me/177964797)


프롤로그

하드웨어가 점점 발전하여 CPU는 싱글 코어에서 멀티 코어로 진화했고 더불어 하이퍼스레딩이 적용되면서 개발자들은 어떻게 하면 CPU를 최대한 활용하여 프로그래밍할 수 있을까 고민하게 됩니다. 하지만 간단한 방법으로 이를 구현하기란 쉬운 일이 아니죠. 안타깝지만 아직도 많은 프로그램들이 주로 한 개의 코어만 활용하도록 구현되어있습니다.



<그림: 4개의 CPU 코어와 하이퍼스레딩이 적용되어 8개의 가상의 CPU가 동작하는 모습>

어떻게 하면 스레드를 직접 다루지 않고도 쉽게 병렬 프로그래밍을 구현할 수 있을까요? 그동한 이러한 노력의 일환으로 OpenMP, TBB, PPL 등이 개발되어졌고, 이 중 PPL은 Visual C++(Visual Studio 2010 이상) 환경에서 템플릿 라이브러리 형태로 제공되어 윈도우즈 개발자들이 쉽게 접근하여 사용할 수 있습니다.

하지만 아직까지는 PPL에 대한 한글로된 레퍼런스가 많이 없기도 하고 그 중에서도 일부만 소개하는 정도로 다루어졌기 때문에 저처럼 영어에 약한 사람들은 PPL의 전반적인 기능을 모두 이해하기에는 어려움이 따릅니다. 그래서 지금부터는 MSDN 문서를 기반으로 PPL과 좀 더 나아가 C++ AMP 까지 Visual C++ 환경에서의 병렬프로그래밍에 대하여 자세하게 다뤄보려고 합니다. 그래서 강좌 제목도 야심차게 '병렬 프로그래밍 완전 정복' 으로 지어봤습니다. ^^

강좌 내용은 MSDN 설명과 예제를 기반으로 하지만 단순 번역이 아니라 제가 이해한 내용을 최대한 쉽게 풀어서 설명하는 방식으로 써보려고 합니다. 혹시 제가 이해한 내용이 틀릴 수도 있으니 잘못된 내용이 있으면 알려주시면 참고하도록 하겠습니다. 부족한 강좌라도 많은 분들이 좀 더 쉽게 병렬 프로그래밍에 접근할 수 있는 기회가 되었으면 좋겠네요. 그럼 다음 강좌부터 본격적으로 시작하도록 하고 프롤로그는 여기서 마치도록 하겠습니다.