Programming/openMP

openMP parallel default

구차니 2013. 11. 18. 21:55
openMP가 shared memory 구조를 지원한다고 하는데
다르게 말하면 함수나 block 구현시
private 메모리가 생성되는걸 응용하여 사용하는것 같은 느낌

그리고 이러한 공유 변수의 제어는 default 키워드를 이용하는데
default(shared)가 기본 값이고 none으로 할 경우 별도의 변수를 선언을 해주어야 한다.

#pragma omp parallel
default(shared|none)
private
firstprivate
lastprivate 

$ cat test.c
#include "omp.h"

void thread()
{
        int res = 0;
#pragma omp parallel default(none)
{
//      int res = 0;
        // initialize
        printf("res = %d\n",res);
}
}

int main(int argc, const char *argv[])
{
        thread();
        return 0;
}

gcc -fopenmp test.c -lm
test.c: In function ‘thread’:
test.c:16:8: error: ‘res’ not specified in enclosing parallel
test.c:12:9: error: enclosing parallel
make: *** [all] 오류 1