gpt4 book ai didi

fortran - 在 Fortran 上使用 openmp 和 fftw

转载 作者:行者123 更新时间:2023-12-02 21:11:58 27 4
gpt4 key购买 nike

我目前正在尝试在 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

如果有人能帮助我,我将不胜感激。

最佳答案

旧的 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

关于fortran - 在 Fortran 上使用 openmp 和 fftw,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26177585/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com