0
我有一套severak for-loops,其中一個只在滿足某個條件時纔會執行。OpenMP:並行區域內的條件循環
如何確保只有一個線程(可能使用SINGLE
)執行if語句,但所有線程都可用於DO
。
!$omp parallel
!$omp do
do i=0,512
something to do
end do
!$omp end do nowait
if (condition_var) then
!$omp do
do i=0,512
only do sometimes
end do
!$omp end do
fi
!$omp end parallel
如果condition_var在並行區域內沒有改變,是否需要第一個循環後進行同步? – John
@John不可以。你必須確保的唯一一件事情是,要麼所有的threads_評估if條件爲真或者全部評估爲false。 – Massimiliano