我是并行编程的新手,并且无法让一个简单的并行 Fortran 程序在 OpenMP 中使用多个线程。以下程序:
Program Hello
Use omp_lib
Implicit None
INTEGER nthreads
nthreads = 4
CALL OMP_SET_NUM_THREADS(nthreads)
write(*,*) omp_get_num_procs()
write(*,*) omp_get_max_threads()
write(*,*) omp_get_num_threads()
!$OMP PARALLEL
Write(*,*) 'Hello'
Write(*,*) omp_get_num_threads()
!%OMP END PARALLEL
End Program Hello
产生结果:
32
4
1
Hello
1
是什么原因导致并行区域内的线程数和我上面设置的nthreads不一样?我正在运行 cygwin 的 Windows 机器上使用 gfortran -f openmp Hello.f 编译程序。