我目前正在尝试在Fortran上使用OpenMP运行fftw
但我在运行任何程序时都遇到了一些问题。
我相信我已经正确安装/配置了fftw:
./configure --enable-openmp --enable-threads
我似乎拥有所有正确的库和文件,但我无法运行任何程序,我不断收到错误
undefined reference to 'fftw_init_threads'
我使用的代码如下:
program trial
use omp_lib
implicit none
include "fftw3.f"
integer :: id, nthreads, void
integer :: error
call fftw_init_threads(void)
!$omp parallel private(id)
id = omp_get_thread_num()
write (*,*) 'Hello World from thread', id
!$omp barrier
if ( id == 0 ) then
nthreads = omp_get_num_threads()
write (*,*) 'There are', nthreads, 'threads'
end if
!$omp end parallel
end program
并运行它我
gfortran trial.f90 -I/home/files/include -L/home/files/lib -lfftw3_omp -lfftw3 -lm -fopenmp
如果有人能帮助我,我将不胜感激。
答案 0 :(得分:4)
旧的FORTRAN界面似乎不支持OpenMP ...我建议您使用新的Fortran 2003界面。请注意fftw_init_threads()
是一个功能!
您还需要包含ISO_C_binding
模块:
program trial
use,intrinsic :: ISO_C_binding
use omp_lib
implicit none
include "fftw3.f03"
integer :: id, nthreads, void
integer :: error
void = fftw_init_threads()
!$omp parallel private(id)
id = omp_get_thread_num()
write (*,*) 'Hello World from thread', id
!$omp barrier
if ( id == 0 ) then
nthreads = omp_get_num_threads()
write (*,*) 'There are', nthreads, 'threads'
end if
!$omp end parallel
end program