[Hotball’s Hive]安裝 CUDA


目前 NVIDIA 提供的 CUDA Toolkit(可從這裡下載)支援 Windows (32 bits 及 64 bits 版本)及許多不同的 Linux 版本。

CUDA Toolkit 需要配合 C/C++ compiler。在 Windows 下,目前只支援 Visual Studio 7.x 及 Visual Studio 8(包括免費的 Visual Studio C++ 2005 Express)。Visual Studio 6 和 gcc 在 Windows 下是不支援的。在 Linux 下則只支援 gcc。

這裡簡單介紹一下在 Windows 下設定並使用 CUDA 的方式。

下載及安裝

在 Windows 下,CUDA Toolkit 和 CUDA SDK 都是由安裝程式的形式安裝的。CUDA Toolkit 包括 CUDA 的基本工具,而 CUDA SDK 則包括許多範例程式以及程式庫。基本上要寫 CUDA 的程式,只需要安裝 CUDA Toolkit 即可。不過 CUDA SDK 仍值得安裝,因為裡面的許多範例程式和程式庫都相當有用。

CUDA Toolkit 安裝完後,預設會安裝在 C:\CUDA 目錄裡。其中包括幾個目錄:

  • bin — 工具程式及動態連結程式庫
  • doc — 文件
  • include — header 檔
  • lib — 程式庫檔案
  • open64 — 基於 Open64 的 CUDA compiler
  • src — 一些原始碼

安裝程式也會設定一些環境變數,包括:

  • CUDA_BIN_PATH — 工具程式的目錄,預設為 C:\CUDA\bin\
  • CUDA_INC_PATH — header 檔的目錄,預設為 C:\CUDA\inc\
  • CUDA_LIB_PATH — 程式庫檔的目錄,預設為 C:\CUDA\lib\

 

在 Visual Studio 中使用 CUDA

CUDA 的主要工具是 nvcc,它會執行所需要的程式,將 CUDA 程式碼編譯成執行檔 (或 object 檔) 。在 Visual Studio 下,我們透過設定 custom build tool 的方式,讓 Visual Studio 會自動執行 nvcc。

這裡以 Visual Studio 2005 為例:

  1. 首先,建立一個 Win32 Console 模式的 project(在 Application Settings 中記得勾選 Empty project),並新增一個檔案,例如 main.cu

  2. 在 main.cu 上按右鍵,並選擇 Properties。點選 General,確定 Tool 的部份是選擇 Custom Build Tool

  3. 選擇 Custom Build Step,在 Command Line 使用以下設定:

    • Release 模式:
      "$(CUDA_BIN_PATH)\nvcc.exe" -ccbin "$(VCInstallDir)bin" -c -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler /EHsc,/W3,/nologo,/Wp64,/O2,/Zi,/MT -I"$(CUDA_INC_PATH)" -o $(ConfigurationName)\$(InputName).obj $(InputFileName)
    • Debug 模式:
      "$(CUDA_BIN_PATH)\nvcc.exe" -ccbin "$(VCInstallDir)bin" -c -D_DEBUG -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler /EHsc,/W3,/nologo,/Wp64,/Od,/Zi,/RTC1,/MTd -I"$(CUDA_INC_PATH)" -o $(ConfigurationName)\$(InputName).obj $(InputFileName)
  4. 如果想要使用軟體模擬的模式,可以新增兩個額外的設定:

    • EmuRelease 模式:
      "$(CUDA_BIN_PATH)\nvcc.exe" -ccbin "$(VCInstallDir)bin" -deviceemu -c -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler /EHsc,/W3,/nologo,/Wp64,/O2,/Zi,/MT -I"$(CUDA_INC_PATH)" -o $(ConfigurationName)\$(InputName).obj $(InputFileName)
    • EmuDebug 模式:
      "$(CUDA_BIN_PATH)\nvcc.exe" -ccbin "$(VCInstallDir)bin" -deviceemu -c -D_DEBUG -DWIN32 -D_CONSOLE -D_MBCS -Xcompiler /EHsc,/W3,/nologo,/Wp64,/Od,/Zi,/RTC1,/MTd -I"$(CUDA_INC_PATH)" -o $(ConfigurationName)\$(InputName).obj $(InputFileName)
  5. 對所有的設定檔,在 Custom Build StepOutputs 中加入 $(ConfigurationName)\$(InputName).obj

  6. 選擇 project,按右鍵選擇 Properties,再點選 Linker。對所有的設定檔修改以下設定:

    • General/Enable Incremental Linking:No
    • General/Additional Library Directories:$(CUDA_LIB_PATH)
    • Input/Additional Dependencies:cudart.lib

這樣應該就可以直接在 Visual Studio 的 IDE 中,編輯 CUDA 程式後,直接 build 以及執行程式了。


本文經作者授權轉載,原文網址為:http://www2.kimicat.com/%E5%AE%89%E8%A3%9Dcuda

nVidia CUDA 相關文章目錄

對「[Hotball’s Hive]安裝 CUDA」的想法

  1. 目前根據你的描述,應該是你的專案設定有問題,而和 CUDA 沒有關係。
    有沒有先試過不要用 CUDA,簡單用 C++ 寫個 hello world,然後編譯成功?

  2. 正在链接…1>LIBCMTD.lib(crt0.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用1>Debug\first.exe : fatal error LNK1120: 1 个无法解析的外部命令

  3. Heresy,你好。我把cn改了,我把main.cu写在源文件下面,还有头文件和资源文件是空的。main.cu里面什么也没写,这样单独编译main.cu是正确的,但编译项目就会出错了,又要麻烦你了,另外能告诉你的msn吗,在线可能回简单一点吧。其他的sdk里面的例子都可以编译成功的。多谢。

  4. i build a win32 console program ,and choose the empty project. Then build a new file named main.cn in source files ,then compile the main.cn separately,the wrong is :
    nvcc fatal  : Don’t know what to do with ‘main.cn’
    thanks again ,Heresy

  5. 您好,不知道您是看哪一個網頁來設定的?Hotball 系列的文章,Heresy 只是轉載,在設定上並不是照著他來做。
    Heresy 個人是建議參考《使用 Visual Studio 2005 撰寫 CUDA 程式 》和《使用 Visual Studio 2005 建立新 CUDA 專案 》這兩篇。
     
    而你的錯誤訊息看起來應該是在編譯過後,link 不到 main;不知道你的 main 是寫在哪裡?有沒有可能是有檔案沒有實際編譯到?或者編譯失敗?

  6.  thanks a lot for your introduction of cuda.  use the way of  installing cuda mentioned in your blog,my VS 2005 had a problem, could you help me?
    error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.