2011年3月20日 星期日

cuda under matlab mex

最近需要用到cuda來提升方法的速度,,,因為用得環境是matlab, 所以就透過mex來連結cuda與matlab.
事實上, matlab 2010b以經可以直接在matlab底下撰寫gpu的kernel function了(參考), 所以如果您有capability >= 1.3 以上的顯示卡, 就不需要透過mex file來當做matlab與cuda的溝通橋樑了.
如果您需要mex的話, 請參考底下.

環境: win7 + cuda 3.1 + matlab 2010b.
先從底下這個網址下載好心人寫好的setup_cuda_mex.m, 接著在matlab底下直接run 該.m檔.
注意:
 1. win 7在C槽底下有permission的限制, 所以要將產生的cuda_mex.pl放到matlab/bin底下
 2. x64的問題該聯結底下有好心人回答.

正常來說這樣應該就可以順利產生.mexw64檔案了.

FAQ1. cuda底下並不支援double-precison的加速效果, 可以參考這篇文章.
如果真的有double-precision的需求, 可在 setup_cuda_mex.m中 'compflags' 底下加上
' --arch sm_13' 就有支援double.
FAQ2. launched timeout問題:
如果在測試的過程中有出現"launched timeout"等訊息的話, 可以參考這篇文章,
如果不是register 或share memory用得過多的話, 就是kernel func花了太多時間在執行上.
所以有個方法可以設定kernel func的launched time參考.(不是很建議, 因為該時間內您的螢幕將會沒有反應XD)
cmd->regedit-> enter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ GraphicsDrivers
TdrLevel = yourtimeoutinsec
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ GraphicsDrivers \ DCI\
Timeout = yourtimeoutinsec

然後reboot your computer, then it is done.

2011年3月9日 星期三

cuda inside visual studio

之前一些實驗需要用到cuda, 所以就大概紀錄一下安裝cuda在visual studio上的文章.
env: win 7 + visual studio 08
cuda version: cuda 3.2

steps:

1. 安裝cuda toolkit
%%假設64bits安裝在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2
2. 安裝cuda sdk 32bits or 64bits
%%假設64bits安裝在C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2

3. 設定visual studio
Tools->Options ->CV++ Directories:
Executable file:
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\shared\bin\win64\Release
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\bin
include file:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.2\include
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\shared\inc
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\C\common\inc 
lib file:
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\shared\lib 
C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\C\common\lib
C:\Program Files (x86)\NVIDIA GPU Computing Toolkit\CUDA\v3.2\lib\x64

4. 安裝npp(NVIDIA Performance Primitives library, optional)
%%假設64bitx安裝在C:\NVIDIA\NPP_SDK_0_9_3_1_X64
32bits or 64bits

Tools->Options ->CV++ Directories:
include file:
C:\NVIDIA\NPP_SDK_0_9_3_1_X64\common\npp\include
C:\NVIDIA\NPP_SDK_0_9_3_1_X64\common\FreeImage\include
lib file:
C:\NVIDIA\NPP_SDK_0_9_3_1_X64\common\lib
C:\NVIDIA\NPP_SDK_0_9_3_1_X64\common\FreeImage\lib


5. 編譯example code
%%C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 3.2\C\src
開啟其中一個example, 重編譯, 沒問題的話就是ok了.
note: 若要編譯x32的code, 路徑設定成win32底下即可(或是直接安裝32bits的版本也可).