본문 바로가기

MS/C++

OpenMP

출 : http://blog.daum.net/pg365/205


요즘 PC들은 코어가 보통 4개에서 많게는 8개 까지 있는 CPU들을 장착하고 있습니다. 그런데 프로그래밍에서 전문적인 그래픽 도구같은게 아니면 대부분 단일 프로세서에 기반한 방법들을 사용하고 있죠. 즉, CPU 자원을 충분히 활용하지 못한 프로그램들을 만들고 있는데요. 저 또한 쓰레드 사용으로 인한 복잡한 동기화 관련 부분들에 대한 부담으로 인해 얼마전까지는 단일 프로세서 기반 프로그램을 선호하였습니다. 하지만 요즘은 키넥트와 같은 3D 스캐너에서 들어오는 대량 데이터를 실시간으로 처리하기 위해서 멀티코어나 GPU를 적극 활용할 수 밖에 없는 상황이 되었습니다. 

 

멀티쓰레딩 프로그램을 쉽게 할 수 있도록 컴파일러 차원에서 지원하는 것으로 OpenMP 라는 것이 있고 라이브러리 형태로 제공하는 것으로는 Intel TBB 라는 것이 있습니다. 여기서는 OpenMP를 쉽게 사용할 수 있도록 예제코드와 설명을 잘 정리해 둔 블로그 링크를 소개하고자 합니다. OpenMP는 기존 소스코드를 많이 고치지 않고 멀티코어 프로그래밍을 쉽게 작성할 수 있는 도구입니다. 기존 코드 내에서 OpenMP를 사용하는 방법은 간단하나 멀티쓰레드 프로그램에서 발생하는 각종 문제들은 그대로 내포하고 있기때문에 쓰레드간의 동기화에 관련된 지식이 어느정도 필요합니다.

 

OpenMP 공식 사이트:

http://openmp.org/

 

C언어: OpenMP를 이용한 멀티 쓰레드 프로그래밍 HOWTO:

http://sunyzero.egloos.com/4227785
http://sunyzero.egloos.com/4229235
http://sunyzero.egloos.com/4234766
http://sunyzero.egloos.com/4258873
http://sunyzero.egloos.com/4283977

 

OpenMP를 예제 중심으로 습득할 수 있도록 설명한 블로그:
http://bisqwit.iki.fi/story/howto/openmp/

 

 

* Microsoft Visual C++ 2008에서 OpenMP 사용하기

1. Project의 Property 창을 연다.

2. Configuration Properties - C/C++ - Language 선택

3. OpenMP Support를 Yes로 선택한다.