作者celestialgod (攸蓝)
看板MATLAB
标题[心得] MEX contain CUDA code (windows)
时间Wed Sep 4 06:04:10 2013
先小小的抱怨一下,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=%VS
100COMNTOOLS%\..\..
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)
1F:→ iHakka:不是把cuda的kernel编成PTX就可以在matlab下使用了吗 09/04 09:56
2F:→ celestialgod:我不知道orz....我还弄那麽久 09/04 20:44
3F:推 cluss:推! 最近想开始玩CUDA了 06/21 08:26