본문 바로가기

병렬 프로그래밍

(3)
Intel C++ Compiler 11.1로 Histogram stretching 병렬처리 하기 Intel C++ 컴파일러 11.1을 설치하고, 정수형 Vector Class를 이용하여 이미지 처리를 병렬화 하는 프로그램을 구현해 봤습니다. 성능은 대략 Intel Core2Duo E8400 3.0G에서 약 5~6배의 성능 향상 효과를 보였습니다. 테스트를 위해 사용한 이미지는 lena.bmp 512 x 512 grayscale 이미지입니다. 원본 이미지 Histogram stretching 결과 이미지 일반적인 SISD(Single Instruction Single Data)형태로 Histogram stretching을 구현한것과 SIMD 형태로 구현한 코드의 core 부분의 차이를 보십시오. //영상의 histogram에서 최소값과 최대값을 구하는 함수 int imageProcess::getMin..
병렬 처리와 관련한 핵심 컨셉 병렬 처리 프로그래밍을 하려고 마음을 먹고, 또 멀티 코어 프로세서에 대해 관심을 가지기 시작하고, 프로그래밍을 하다 보면 많은 컨셉들이 있을것이다. 반드시 이해해야 할 중요하지만 매우 단순한 컨셉들을 살펴보겠다. 안녕하세요 제임스 랜더스 입니다. 오늘은 병렬 처리와 관련한 핵심 컨셉들을 알아보는 시간을 가지도록 하겠습니다. 병렬 처리 프로그래밍을 하려고 마음을 먹고, 또 멀티 코어 프로세서에 대해 관심을 가지기 시작하고, 그리고 실제로 프로그래밍을 하시다 보면 많이 들으시는 컨셉들이 있을 겁니다. 앞으로 제가 설명해 드릴 컨셉들은 반드시 이해해야 할 중요한 것들입니다. 실로 매우 단순한 컨셉들이기도 하죠. 한 번 살펴보겠습니다. 우선 가장 먼저 태스크/데이터 병렬 처리 입니다. 이들이 과연 무엇인지부터..
멀티코어 프로그래밍을 하기위해 어떻게 해야하는가.. 이제 더이상 싱글코어는 사용자에게 잊혀지고 있다. 듀얼코어는 기본, 쿼드코어.. 더 나아가서는 옥토코어가 곧 등장할거라고 한다. 그런데.. 실제로 사용해보니 싱글코어랑 듀얼코어랑 큰 차이를 못느끼겠다. 왜냐.. 바로 대부분의 프로그램이 싱글코어 기준의 프로그램이기 때문이다. 듀얼코어를 효과적으로 사용하려면 멀티코어 기준으로 프로그램이 되어있어야 하겠다. 즉, 코어가 여러개이기때문에 병렬처리를 해야 진정한 멀티코어에 맞는 프로그램이라 할 수 있겠다. 그럼, 멀티코어 프로그래밍을 하기위해서 어떻게 해야하는가.. 아래 동영상을 보자. 프로그램 내에 병렬처리를 가능케 하기 위해 어떻게 해야 하는가? 병렬 처리의 도입을 처음 고려할 때 가장 피해야 할 것은, 병렬 처리에 있어서 가장 낮은 단계의 프로그래밍 모델을..