2014-10-23 2 views
1

나는 두 배열 A 및 데이터를 포함 B을 가지고OpenMP 병렬 읽기 쓰기 경쟁 조건을 수행합니까?

특히 OpenMP를에서 발생할 수있는 경쟁 조건에 대해 조금 혼란 스러워요, 나는, 하나의 데이터를 사용하여 뭔가를 계산하고이를 저장하고자 다른 사람에게.

내 포트란 코드는 숨어 경쟁 조건이 여기에있다이

!$OMP PARALLEL DO PRIVATE(tmp,data) 
DO i = 1, 10000 
    tmp = A(i) !!Extract A(i) 
    data = Do_Stuff(tmp) !!Compute 
    B(i)=data !!Store 
END DO 
!$OMP END PARALLEL DO 

과 같을 것이다?

도입부의 11-12 페이지에서 나는 이 모든 반복마다 다른 경우에도 reading 코드가이 문제를 가지고 있기 때문에 묻습니다.

!$OMP PARALLEL DO 
do i = 1, 1000 
    B(i) = 10 * i 
    A(i) = A(i) + B(i) 
end do 
!$OMP END PARALLEL DO 
+0

정확히 그 주장을 찾았습니까? –

+2

11-12 페이지를 의미하는 경우 그 주장이 잘못되었다고 생각합니다. –

답변

1

첫 번째 예에는 경쟁 조건이 있습니다.

변수 data은 명시 적으로 데이터 공유 속성이 지정되지 않고 미리 결정된 속성을 가지지 않으므로 병렬 구성으로 공유됩니다. 여러 스레드가 읽고 쓰게됩니다.

두 번째 예에는 이러한 조건이 없습니다.

+0

불행히도, 인용 된 기사는 두 번째 예제에 약간의 문제가 있다고 주장하지만, 아마도 저자의 오해 일 것입니다. –

+0

동의합니다. xyzzy xyzzy – IanH

+0

필자의 프라이버시 선언에 오타가 있습니다. psi는 데이터 여야합니다. 두 건축물 모두 지금 안전합니까? 아마도 –

관련 문제