譯註:本文翻譯自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是否正確安裝和配置。