回 帖 发 新 帖 刷新版面

主题:linux + Fortran + openmp + pgf90的问题

我的代码如下
            program main
  2 
  3       implicit none
  4       include 'omp_lib.h'
  5 
  6       Real*8 time_start,time_end
  7       integer i,j
  8 
  9       call cpu_time(time_start)
 10       ! $OMP  PARALLEL
 11       write(*,*)OMP_GET_THREAD_NUM(),'hello'
 12       ! $OMP END PARALLEL
 13       call cpu_time(time_end)
 14       write(*,*) OMP_GET_NUM_THREADS(),OMP_GET_THREAD_NUM()
 15       write(*,*)'Length of time is ', time_end-time_start
 16 
 17       end
线程数我是通过export OMP_NUM_THREADS=8来设置的

编译的时候使用的命令是:pgf90 -openmp test.f90 -o test
运行:./test
得到的结果是
   0 hello
          1           0
 Length of time is   0.000000000000000E+000
应该有八个线程,正常应该输出八个hello吧,但是实际上好像只有一个线程,所以只能输出一个hello,有没有大神可以帮我找一下问题所在,感激不尽,我是openmp初学者,今天才开始学的。
我用的是Fortran语言编程,此外我用ifort编译器也试过了,结果是一样的

回复列表 (共2个回复)

沙发

我自己找到错误了。

首先是我的代码! $OMP PARALLEL中!和$之间多加了一个空格。应该是!$OMP PARALLEL.

此外。程序执行的顺序有错。应该先设置环境变量export OMP_NUM_THREADS=8;再编译pgf90 -openmp test.f90 -o test;最后执行./test这样子的话就对了~

板凳

有基础教程,中英文都有

http://fcode.cn/resource_ebook-24-1.html

我来回复

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