參考了很多網上的教程,自己摸索的幾天CUDA4.0安裝完畢。
再次感謝前輩的各種教程,現把我的安裝方法提供出來,給還在探索的新手參考一下。
我的環境:Win7 64旗艦 ,GTX580 + ATI5450,使用雙顯卡為了單機調試,使用ATI卡為了防止搞不清楚程序在那個卡上跑CUDA。
要安裝的是:CUDA 4.0 64位 + VS2010旗艦
基本安裝:
1. 顯卡驅動,ATI裝公版驅動,顯示器在此卡上連接,GTX580不連接顯示器。
N卡驅動,裝270.81版,這是CUDA4.0要求的版本,初次安裝為了少出錯,最好安裝指定版本驅動。
[注:參見 解決NVIDIA顯卡驅動“沒有找到兼容的圖形硬件”的問題 ]
2. VS2010, VS2010sp1 慢慢裝吧,耐心等待。
3. VassistX 這個可以以后裝也行。
4. cuda tool kit 4.0和 cuda tools 4.0依次安裝,比較塊。
5. cuda sdk 4.0這個安裝要說明一下,建議不要按缺省路徑安裝,否則文件不好查找。
我一般指定到如下格式路徑:D:\CUDASDK_40_win64 安裝到D盤,40表示4.0,win64位版,這樣比較容易找到sdk。
下面把文字里這個路徑用字符串 “SDK_PATH"表示。
6. 工具庫生成:
現在VS可以打開Cuda SDK的例子試試了,不過在這之前有兩個工具庫最好先生成一下。
a.使用VS2010打開SDK_PATH \ c\common\cutil vs2010.sln
VS2010 選“生成->批生成”,全選,生成所有配置需要的lib.
目的:生成各配置需要的cutilxx[D].lib XX:32 /64 [D]debug模式
lib存放的位置:SDK_PATH \ c\common\lib\(win32|X64)
b.同上方法,打開SDK_PATH\share\ shrUtils_vs2010.sln 選“批生成”
目的:生成各配置需要的shrUtilxx.lib XX:32 /64 [D]debug模式
lib存放的位置:SDK_PATH\share\lib\(Win32|x64)
注:這個項目編譯時會提示有兩個.cpp找不到,直接把他們從項目里移去即可。因為同名的.h文件里已經有完整代碼了。
7.測試例子:VS2010 打開SDK例子:deviceQuery, matrixMul各種配置均可編譯執行成功, CUDA的基本配置就完了。
8. 開自己的CUDA項目:
CUDA項目的配置比較麻煩,最好是在原有的例子項目基礎上修改。CUDA SDK 的例子SDK_PATH C\src\template就是給用
戶提供的開發模板,可以把該項目在src目錄下復制一份,再改成你需要的項目名字即可。一定還要放在src目錄里,因為
項目里的include和lib目錄使用了相對路徑。不放到src目錄,編譯時會打不開頭文件。所以,為了使用方面cuda sdk最好
不要使用默認安裝路徑,否則查找src目錄麻煩。
現在CUDA4.0的基本配置已經完了,下一步是語法高亮,配置VassistX 函數高亮,代碼提示等功能。沒時間了,下午再貼。
下面是關於代碼高亮的設置。共三個設置
1. .cu文件高亮
這個設置是讓VS2010編輯.cu文件時,把.cu文件里的C/C++語法高亮。
設置方法: 在VS2010的菜單 依次點擊:工具->選項->文本編輯器->文件擴展名 ,在這個界面里: “編輯器(I)”下拉框選microsoft
visual ++,在“擴展名”文本框輸入.cu 點擊“添加”按鈕 ,重復工作把.cuh 添加為vc++類型,點擊確定按鈕。 把全部.cu文件關閉,
再打開,.cu文件C++關鍵字就高亮了。如果不行就重啟VS2010。
但是CUDA的關鍵字還是黑色的,下一步把CUDA關鍵自高亮顯示
2. CUDA關鍵字高亮
為了讓CUDA的關鍵字,象 __device__、dim3之類的文字高亮,需要如下步驟:
把SDK_PATH\C\doc\syntax_highlighting\usertype.dat 復制到
X:\Program Files (X86)\Microsoft Visual Studio 10.0\Common7\IDE\ 目錄下
這里 X:是安裝VS2010盤符,這是win7 64位下的路徑。
注意:win7 64系統不要復制到這個目錄里,復制到這里是不會CUDA關鍵字高亮的:
X:\Program Files \Microsoft Visual Studio 10.0\Common7\IDE\
(如果你的win7是32位的,可能正好是上面這個目錄,應該會高亮的,這可能是win7 64位和32位
的差別吧)
再次強調:SDK_PATH要換成你安裝SDK的實際路徑,不要直接使用這個字符串。
VS2010需要重啟,重啟后打開.cu文件,CUDA的關鍵自應該變成藍色了。
3. CUDA 函數高亮,及CUDA函數輸入代碼提示
實現這個功能就要使用VAssistX了。 首先安裝支持VS2010的VAssistX。這個可以在CUDA 安裝前、后安裝都行。
需要兩步實現需要的功能:
a) 讓VAssistX支持CUDA函數高亮和代碼完成
這個在VAssistX的菜單里設置完成:在Vs2010菜單里依次點擊:
VassistX->Visual assist X Options->Projects->C/C++Directories
在這個界面的 “Platform”下拉框選 Custom,在“Show Directories for..“下拉框選 Other include files,
然后在下面的輸入框里,新建、添加三個路徑,點擊確定,三個路徑分別如下
SDK_PATH的\c\common\inc
SDK_PATH的\shared\inc
X:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include
再次強調:這里SDK_PATH要用你安裝的SDK路徑代替,X:是你的CUDA toolkit安裝盤符。
這樣分別在這三個目錄里面的.h文件定義的函數和類型VAssistX會幫我們在編輯文件時候實現高亮和完成代碼
如果少包含一個路徑,這個目錄里的.h定義的函數和類型就不會高亮和提示了。
b)讓VAssistX支持.cu文件,也就是編輯.cu文件是VAssistX幫我們實現高亮和代碼完成功能。這個需要編輯注冊表了。
首先關閉VS2010,使用regedit打開注冊表,找到如下位置:
HKEY_CURRENT_USER\Software\Whole Tomato\Visual Assist X\VANet10
在右邊找到ExtSource項目,鼠標右鍵選修改,在原有文字后添加如下文字:.cu;.cuh; 確定后
關閉注冊表,重新打開vs2010,VAssistX開始支持.cu及.cuh文件的語法高亮及代碼完成。
此時.cu文件了的CUDA函數是高亮的,使用函數名符號就會自動提示函數全稱,參數類型等信息了。
1. VS2010顯示.cu文件時,有很多CUDA函數下有波浪線的問題
2. 在.cu文件里使用VS2010的“轉到定義”功能查無法找到CUDA函數的定義
--------------------------------
這兩個問題的解決方法其實是一樣的,原因是VS2010不認識這些函數,不指定它們在那個頭文件里包含的,
解決的方法很簡單,把CUDA tookit 和CUDA SDK的頭文件路徑加到VS2010的VC++目錄里面。
在VS2008里面使用工具->選項對話框里面可以設置,但是VS2010的這個對話框里顯示“工具">"選項"中的VC++目標編輯功能已被否決。
經過網上搜索發現此工作已經變成了項目屬性里的選項。
修改方法是:使用”視圖”->其它窗口->屬性窗口,打開屬性管理器視圖。
屬性管理器顯示是項目所有的配置信息:如Debug|win32 Debug|X64,Release|32 Relase|x64 ,對32位和64位配置需要單獨,同一平台的
Debug和Relase只要修改一個就形了,如修改了Debug|Win32 ,則Release|win32就無需修改了。
具體方法,假設修改Debug|win32,鼠標點擊展開Debug|win32項目,可以看到第一個子項目是“microsoft .Cpp.Win32.user" ,雙擊該項目
,出現“microsoft .Cpp.Win32.user”對話框,
對話框里面有VC++目錄選項, 在右邊的“包含目錄”選項里,單擊鼠標,選編輯,添加CUDA toolkit 的include目錄,CUDA SDK目錄下的
\C\common\inc 和 \share\inc 目錄信息,這三個目錄也就是添加到VAssistX里的頭文件目錄,目的是讓VC2010知道這些頭文件里定義的函
數,重啟VS2010,打開CUDA工程
VS2010就不會在CUDA函數下顯示紅色波浪線了,而且可以使用“轉到定義”,“轉到聲明”功能定位到CUDA函數和類型定義的文件。
最后一個小問題:經過如上的設置,基本上不會再有波浪線出現,個別符號例外,有波浪線也可以轉到定義。
但是發現一些小問題,如sdk例子template項目和MatrixMul項目,打開后發現在xxxx_kernel.cu里定義的函數,在其它.cu里還是有波浪線
,也不能使用“轉到定義”功能,如matrixMul.cu里無法查找在matrixMul_kernel.cu里定義的函數matrixMul() ,查看matrixMul.cu文件發
現該文件采用如下形式包含matrixMul_kernel.cu文件:include<matrixMul_kernel.cu>
這是告訴VS2010要到VS2010系統定義的include目錄里面查找包含文件,實際上該文件是在當前項目的目錄里。CUDA的編譯器可以找到該文
件(有點怪),VS2010找不到該文件,該文件里定義的函數VS2010也不認識,解決方法很簡單,改成include“matrixMul_kernel.cu“,這
樣CDUA編譯器能找到該文件,VS也能找到該文件,該文件里定義的函數就不會有下划線了,可以使用“轉到定義”,“轉到聲明”,“查找
引用”功能定位到了。
轉者注:
NVIDIA針對VS開發環境開發了一個插件叫做NVIDIA® Parallel Nsight™, ,當前版本為2.0。支持的平台為VS2008以及VS2010,對應的CUDA版本可以為CUDA3.2或者CUDA4.0。該插件能夠很好的兼容VS 開發環境,安裝后可以新建cuda工程,也能夠添加新的cu以及cuh文件,同時還有調試等等的功能。
[轉自] http://hi.baidu.com/narvy_sky/blog/item/96ed188d6c7e38f4f01f361f.html
[另:有圖版,但前面安裝部分有點錯誤] http://blog.csdn.net/fandebin/article/details/7043715