回 帖 发 新 帖 刷新版面

主题:[讨论]openmp中的线程数问题

我用openmp写了个小程序。其中有这么两句:
  nproc=OMP_GET_NUM_PROCS()
  print*,nproc
  call OMP_SET_NUM_THREADS(nproc)
  nthr = OMP_GET_NUM_THREADS()
  print*,nthr
  mthr=OMP_GET_MAX_THREADS()
  print*,mthr
结果是:nproc=2,nthr=1,mthr=2。nthr不也应该等于2吗?还是我设置的有问题?请教各位高手。

回复列表 (共2个回复)

沙发

你只是设置了环境变量, 还没有
!$OMP PARALLEL
nthr = OMP_GET_NUM_THREADS()
...
!$OMP END PARALLEL

板凳

明白了,只有在并行区内nthr才等于2,在并行区外nthr=1。谢谢。

我来回复

您尚未登录,请登录后再回复。点此登录或注册