如何在fortran代码中包含cut .h文件?



我有一个Fortran代码,它已经在cpu上工作,但我需要使用gpu加速它,我选择用OpenACC这样做。此代码在使用gfortran编译时使用FFTW库。然而,您可能知道,这些库不能与nvfortran一起使用。所以,我必须使用精简库。因此,我使用了这个转换基准。问题是,fftw允许用户用包含文件fftw的iso_c_binding来构建Fortran模块。F,而卡夫没有这种功能,你需要包括卡夫.h头文件。

当使用nvfortran编译时(我使用-cpp, -Mfree, -lcufft和-l cufftw标志,检查给-I和-l标志的include和lib目录),我得到了许多错误:

  1. 在卡夫.h文件中所有#include的路径都是错误的,我不得不手动更改它们
  2. 头文件中的所有注释("//")都被视为错误(必须手动删除)
  3. "延续行的标签字段不是空白"错误在头文件中无处不在,从第2行开始(在第1行我解决了给出7个空格-但我没有使用- mfree吗?)

请帮帮我,我不认为这样做的正确方法是手动更改文件…

提前感谢您的帮助

不能在Fortran源代码中包含C编程语言的头文件。相反,使用Fortran接口到您需要的任何库(如果存在这样的接口)。

我们随编译器一起发布了一个cuFFT接口模块。你应该只需要加上"use cufft"。

完整的文档可以在:https://docs.nvidia.com/hpc-sdk/compilers/fortran-cuda-interfaces/index.html#cf-fft-runtime

示例代码随NVHPC SDK一起发布,可以在" install_dir "/Linux_x86_64/" release& quot;/examples/CUDA-Libraries/cuFFT/"目录

最新更新