簡體   English   中英

如何在 fortran 代碼中包含 cufft.h 文件?

[英]How do I include cufft.h file in a fortran code?

我有一個 Fortran 代碼,可以在 CPU 上運行,但我需要使用 GPU 加速它,我選擇使用 OpenACC 來實現。 此代碼在使用 gfortran 編譯時使用 FFTW 庫。 但是,您可能知道,這些庫不能與 nvfortran 一起使用。 所以,我必須 go 與 cufft 圖書館。 因此,我使用了這個轉換giude。 問題是,fftw 允許用戶使用包含文件 fftw.f 的 iso_c_binding 構建一個 Fortran 模塊,而 cufft 沒有這種功能,您需要包含 cufft.h header。

使用 nvfortran 編譯時(我使用 -cpp、-Mfree、-lcufft 和 -l cufftw 標志,檢查了給定 -I 和 -L 標志的 include 和 lib 目錄)我得到很多錯誤:

  1. cufft.h 文件中所有#include 中的路徑都是錯誤的,我不得不手動更改它們
  2. header 文件中的所有注釋(“//”)都被視為錯誤(必須手動刪除它們)
  3. “連續行的標簽字段不為空”錯誤在 header 文件中無處不在,從第 2 行開始(在第 1 行我解決了給出 7 個空格的問題 - 但我沒有為此使用 -Mfree 嗎?)

請幫助我,我不認為正確的方法是手動更改文件......

在此先感謝您的幫助

您不能在 Fortran 源代碼中包含 C 編程語言的標頭。 而是將Fortran 接口用於您需要的任何庫(前提是存在此類接口)。

我們隨編譯器一起提供一個 cuFFT 接口模塊。 您應該能夠添加“使用袖帶”。

完整文檔可在以下位置找到: https://docs.nvidia.com/hpc-sdk/compilers/fortran-cuda-interfaces/index.html#cf-fft-runtime

示例代碼隨 NVHPC SDK 一起提供,可以在“<INSTALL_DIR>/Linux_x86_64/<RELEASE>/examples/CUDA-Libraries/cuFFT/”目錄中找到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM