[心得] MEX contain CUDA code (windows)
先小小的抱怨一下,windows下用要做編譯真的是非常的麻煩,環境變數非常的難設。
Windwos下,matlab要能夠編譯CUDA,必須要安裝CUDA toolkits, SDK之外,
cuda: https://developer.nvidia.com/cuda-downloads (PS: 你要有NV顯卡)
還需要安裝visual studio,而且版本還要對應,版本可以參考下列網頁
http://www.mathworks.com/support/compilers/R2013a/index.html
(PS: 之前爬文,有人說matlab的版本要>=VS的版本,
像是2013a才支援VS2012,2010a才支援VS2010等)
此外,你還需要安裝Microsoft Windows SDK 7.1,下載位置同上
下列教學是參考mathwork的網頁: http://tinyurl.com/mbf7t7t
環境都安裝好之後,請下載這個mexopts.bat:http://tinyurl.com/mmbwoub
mexopts.bat這個檔案請跟你的*.cu檔案放在同一個目錄下
此處提供兩組cuda範例檔案:
這組是計算向量的平方
example.cu: http://tinyurl.com/nxc5mpy
test_cuda_mex.m: http://tinyurl.com/myv2ywv
這組是將input matrix 乘2
mexGPUExample.cu: http://tinyurl.com/kz62r87
GPUExample_test.m: http://tinyurl.com/m6owrkl
compile之前,請確定你的windows path含有CUDA_PATH;
如果沒有,你的CUDA安裝可能有問題,確認有安裝,可自行添加path。
再者,請先用mex -setup設定compiler為visual studio。
之後便可在matlab上執行mex filename.cu這個指令,
執行完畢之後,目錄下產生filename.mexw64,這樣就是編譯成功了。
filename便是你呼叫時所用的function name,簡單用法可以參考*.m檔案。
備註:
1. 如果你的visual studio版本是2010,請更改mexopts.bat檔案第23行
set VSINSTALLDIR=%VS110COMNTOOLS%\..\..
改為 set VSINSTALLDIR=%VS100COMNTOOLS%\..\..
2. 你的作業系統如果是x86,你可能需要自行尋找其他方案。
3. 最後,我的環境是Win 7 SP1 x64, Matlab 2013a, visual studio 2012, cuda v5.5
$CUDA_PATH$:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5
如果有問題,可以站內信,我會盡我所能幫你
弄了兩天跟大家分享一下這個小小心得...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.164.166.11
※ 編輯: celestialgod 來自: 218.164.166.11 (09/04 06:11)
※ 編輯: celestialgod 來自: 218.164.166.11 (09/04 06:14)
→
09/04 09:56, , 1F
09/04 09:56, 1F
→
09/04 20:44, , 2F
09/04 20:44, 2F
推
06/21 08:26, , 3F
06/21 08:26, 3F