Linux環境下CUDA在CodeBlocks中的配置

 

 

        譯註:本文翻譯自Ben的博客(點這裏 )中的相應文章,文章標題並非作者原標題,在此譯文中爲了清楚表達文章意圖而作修改。本文翻譯原則爲:忠於原文技術內容,非技術內容予以刪減,並附加本人的理解以輔助。Warning: 非全文對照翻譯。

 

        正文:

 

        本文將介紹NVIDIA CUDA的nvcc編譯器在CodeBlocks 中的設置步驟,注意,這些步驟僅僅針對Linux環境下,使用GCC作爲C/C++編譯器的情況,而不適用於Windows環境的情況。

  • 點擊CodeBlocks 菜單欄上的Settings --> Compiler and debugger
  • 在上方的Selected compiler中,確定“GNU GCC Compiler”被選中,然後點擊下面的Copy按鈕,以新建一個編譯器配置
  • 輸入編譯器名字,比如"NVIDIA NVCC CUDA Compiler"
  • 彈出的窗口全部點擊“Yes”等,然後選擇下面的Toolchain executables標籤頁,如果看不到,點一下向右的箭頭
  • 輸入nvcc的安裝路徑,比如/opt/local/cuda
  • 再下面的C compiler輸入:nvcc
  • C++ compiler: nvcc
  • Linker for dynamic libs: nvcc
  • Likner for static libs: nvcc
  • Debugger: cuda-gdb?(不確定,我還沒有試過)
  • 點擊Search directories標籤頁,在Compiler box中加入/Your_location/NVIDIA_GPU_Computing_SDK/C/common/inc (視安裝路徑不同而不同,這樣添加後,編譯器便能夠找到cutil.h等頭文件)
  • 在Linker box中加入 /Your_location/NVIDIA_GPU_Computing_SDK/C/common/lib/linux 和 /Your_location/NVIDIA_GPU_Computing_SDK/C/lib

 

        下面讓CodeBlocks 能夠認出CUDA的源代碼文件:*.cu :

  • 在菜單上點擊Project --> Project tree --> Edit file types & categories
  • 點擊Add按鈕
  • 輸入類別名,如“CUDA sources”
  • 在下面的fire masks中輸入: *.cu;

 

        Ok,現在當你將cu文件添加到項目中後,左邊的項目文件關係樹將出現新的文件夾“CUDA sources”,下面便有新加入的文件。

        接下來,還需要作一些小設定,使得cu源代碼文件能夠被編譯器所編譯鏈接:

  • 注意:只能對需要編譯的.cu文件進行以下步驟,而那些被其他文件所include的頭文件不需要做這些設定
  • 在左邊項目文件關係樹的.cu文件上點擊右鍵,然後點擊Propertiies
  • 在Build標籤頁中,選中Compile file 和 Link file

 

        最後,由於nvcc編譯器的語法規則和GCC有一些細微差別,因此要按照下面步驟作一點小小的修正:

  • Settings -> Compiler and debugger
  • 在上方選擇我們之前新建的NVIDIA NVCC CUDA Compiler
  • 點擊下面標籤欄旁邊的向右箭頭,直到滾動到Other settings
  • 點擊下面的Advanced options按鈕,在彈出的警告窗口中點擊Yes
  • 在Commands標籤頁中選擇Compile single file to object file,然後把Command line macro中的內容替換成: <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->

    $compiler --compiler-options "$options" $includes -c $file -o $object

  • 在Output parsing標籤頁中選擇Instantiated from info,然後把Regular expression中的內容替換成: <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->

    ([][{}() #%$~A-Za-z0-9_:+//.-]+)[(:]([0-9]+)/)?:[ ]+([iI]nstantiated from .*)

  • 選擇Compiler warning,然後把regular expression中的內容替換成: <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->

    ([][{}() #%$~A-Za-z0-9_:+//.-]+)[(:]([0-9]+)/)?:[ ]([Ww]arning:[ ].*)

  • 選擇Compiler error,然後把regular expression中的內容替換成: <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->

    ([][{}() #%$~A-Za-z0-9_:+//.-]+)[(:]([0-9]+)/)?:[ ](.*)

 

        Ok,所有設置完成,現在便可以在CodeBlocks 中編寫CUDA應用,然後直接按F9進行Build了。

        注意,SDK的例子中,很多需要鏈接cutil庫,記得要在Project --> Build options裏面的Link libraries中加入這個庫,當然,也可以在gblobal compiler settings裏面加入。

        正文結束。

 

        譯註: CodeBlocks 是一個十分優秀的開源跨平臺IDE,現在用戶越來越多,經過上述配置,Linux環境下我們不用每次在command line中輸入nvcc ........這樣來編譯項目,同時,也可以很方便的將CUDA引入原有項目中進行整合,編譯。

        注意: 項目的Build Options中,一定要把編譯器選擇爲新建的CUDA NVCC Compiler,否則將還是使用普通的C/C++編譯器來編譯項目。修改後,整個項目的所有代碼將首先通過nvcc編譯器,nvcc會作出判斷該文件是C/C++文件還是cu文件,如果是C/C++代碼文件,nvcc會自動將該文件轉交給GCC處理,如果是cu文件,nvcc會按照nvcc編譯規則,分離其中的host和device代碼,然後進行編譯。如果對nvcc編譯過程的細則感興趣,請參考NVIDIA的 《nvcc_版本號.pdf》,該文檔在NVIDIA CUDA網站 有下載,也可以在安裝的CUDA路徑中的doc文件夾中找到。

        注意: 再次聲明,以上配置過程僅對Linux環境中使用GCC編譯器的情況有效,Windows中使用CodeBlocks 作爲IDE暫未成功配置,可以確定的是,目前的CUDA版本在Windows中必須使用Visual Studio2005或2008的ld編譯器。

        如果在Linux環境下,使用上述配置方法不能成功生成CUDA項目,請檢查GCC編譯器以及CUDA Toolkit和CUDA SDK是否正確安裝和配置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章