小编Alp*_*F20的帖子

omp 屏障相当于 Fortran 中的 omp end 并行吗

我的问题是关于同步线程。基本上,如果我有一段OpenMP代码Fortran,每个线程都在做某事。我认为同步它们有两种可能性(让某个变量在每个线程中具有相同的值)。

  1. 添加!$OMP BARRIER
  2. 添加!$OMP END PARALLEL。如有必要,请稍后添加!$OMP PARALLEL!$OMP END PARALLEL阻止。

选项 1) 和 2) 等效吗?我看到一些关于barrier嵌套线程omp 屏障嵌套线程的问题 到目前为止,我对更简单的扫描更感兴趣Fortran。例如,对于下面的代码,如果我使用barrier,则两个 if (sum > 500) then条件似乎表现相同,至少在gfortran.

PROGRAM test
USE OMP_LIB

integer :: numthreads, i, sum



numthreads = 2
sum = 0

call omp_set_num_threads(numthreads)

!$OMP PARALLEL


  if (OMP_GET_THREAD_NUM() == 0) then
    write (*,*) 'a'
    
    do i = 1, 30
      write (*,*) sum
      sum = …
Run Code Online (Sandbox Code Playgroud)

fortran openmp

5
推荐指数
1
解决办法
410
查看次数

标签 统计

fortran ×1

openmp ×1