How to break out of a nested parallel (OpenMP) Fortran loop idiomatically?
问题 Here's sequential code: do i = 1, n do j = i+1, n if ("some_condition(i,j)") then result = "here's result" return end if end do end do Is there a cleaner way to execute iterations of the outer loop concurrently other than: !$OMP PARALLEL private(i,j) !$OMP DO do i = 1, n !$OMP FLUSH(found) if (found) goto 10 do j = i+1, n if ("some_condition(i,j)") then !$OMP CRITICAL !$OMP FLUSH(found) if (.not.found) then found = .true. result = "here's result" end if !$OMP FLUSH(found) !$OMP END CRITICAL