2013-04-08 3 views
0

OpenMP의 변수가 기본적으로 공유된다는 것을 읽었습니다. 이것은 0에서 N-1까지 모든 숫자를 합친 것으로 가정되는 다음 코드에서 경쟁 조건이 있음을 의미합니까?OpenMP 경쟁 조건이 있습니까?

int sum = 0,i; 
#pragma omp parallel for 
for (i = 0; i < N; i++) 
    sum+=i; 

답변

2

예, 경쟁 조건이 있습니다. pragma에 reduction(+:sum)을 추가해야합니다. 이렇게하면 효과적으로 각 스레드에서 보이지 않는 개인 복사본을 만든 다음 루프 이후에 합계 할 것입니다.

+0

'i'를 비공개로 설정 하시겠습니까? – jitihsk

+1

openmp 'for'의 루프 반복 변수가 자동으로 비공개이므로 여기서는 필요하지 않습니다. –

관련 문제