OpenMP로 처음으로 만들어본 멀티코어 프로그램


회사에서 멀티코어 프로그래밍을 해야 될 상황이 도래해서 이리저리 솔루션을 찾아봤다.
그런데, 인텔에서 판매하는 수학 라이브러리 등과는 달리, OpenMP라는 솔루션은 이미 VC++에 내장되어 있었다!
(인텔 Math Library는 멀티코어를 지원하며, 성능이 짱이라고 함. 그런다고 회사에서 사줄리는…)

관련 문서를 좀 읽어본 뒤에 처음으로 멀티코어 프로그래밍에 도전했다.

대상은 이미지 리샘플링.
기존에 만들어 둔 Lanczos3 리샘플을 멀티코어 버전으로 수정했더니, 성능 향상이 눈에 확 띤다.

내 Quad-core에서 (당연히) 쓰레드를 4개로 돌릴 때가 최강의 성능을 보임


역시 예상했던 대로 쓰레드의 수를 5개(코어의 갯수) 이상으로 하는 것은 아무런 의미가 없다.

일단 뭔가 한 발짝을 내딛은 것 같아 뿌듯함.

덧. 이와 함께 jpeglib 6b의 SIMD 확장 버전을 VC++ 2008/2010에서 컴파일해보다 실패했다.
VC++ 6에서는 완벽하게 컴파일되는데, 뭐가 문제일까?
혹시 고수님 계시면 도움 좀 부탁드립니다. (굽신굽신)

Trackback 0 Comment 4
  1. Favicon of http://minimonk.tistory.com BlogIcon 구차니 2010.06.21 11:26 address edit & delete reply

    역시 외계인이십니다! ㅠ.ㅠ

    • Favicon of http://zockr.tistory.com BlogIcon BLUEnLIVE 2010.06.21 13:06 address edit & delete

      다 원래 있는 거시라능...

  2. Favicon of http://salm.pe.kr BlogIcon 류청파(koc/SALM) 2010.06.21 19:10 address edit & delete reply

    simd와 mp 사이에서 무언가 충돌이 일어난 게 아닐까요? (그냥 짐작만)

    덧// 그분 형상의 아이콘에서 뭔가 포~~스가 느껴집니다. [emo=091]

    • Favicon of http://zockr.tistory.com BlogIcon BLUEnLIVE 2010.06.21 20:50 address edit & delete

      어셈블러로 NASM을 사용하는데, 파라미터를 제대로 못 넘기더군요. 헐~