잊지 않겠습니다.

 #pragma omp parallel

{

    printf("Hello World ");

}

함수로 묶을 필요도 없고, 따로 프로시져로 떼어 놓고 쓸 필요도 없이 어디서나 OpenMP 지시어와 저렇게 블럭으로 묶으면 그 블럭에 해당되는 행위들이 쓰레드로 나뉘어서 표현을 하게 됩니다. 이렇게 하면 P4-HT 기술이 적용된 CPU에서는 위의 문장을 최소 두번 이상 실행하게 되지요. 또한 위와 같은 단순히 행위에만 관련된 병렬처리만 있는게 아닌, 값을 나눠서 처리하는 병렬처리도 가능하게 되었습니다.

#pragma omp parallel for for(int i = 1; i < 100 ; ++i)     x[i] = (y[i-1] + y[i+1])/2;

위와 같은 문장에서는 만일 프로세서가 4개라면, 첫번째 프로세서에서는 1부터 25까지의 연산을, 두번째 프로세서는 26부터 50까지, 이런 식으로 루프를 4개로 나누어서 프로세서 별로 처리 하게끔 합니다. 최적화의 기본중에 하나인 loop unrolling 방식을 아주 쉽게 표현 할 수 가 있게 되었습니다. 이외에도 여러가지 것들이 있는데, 보통은 쓰레드 하고 말을 하면 언제나 싱크 문제에 대해서 많이 걱정을 하게 됩니다. 그러나 아주 쉽게 여길 정도로 크리티컬 색션과 같은 항목을 위 처럼 간단한 pragma 세팅 만으로 처리 가능하도록 되어 있으니 너무 걱정 않해도 될 정도 입니다.

Posted by Y2K
,