利用cuda加速MATLAB程序

来源:互联网 发布:rgb浅青绿数据 编辑:程序博客网 时间:2024/06/03 17:36

利用cuda加速MATLAB程序

  • 利用cuda加速MATLAB程序
  • 1参考木子超的办法
  • 2参考Tomheaven的方法
  • 3引用

  最近因为要做张量的模态积,所以要考虑使用cuda来进行并行的编程,但是c++实在太麻烦,尤其是在有MATLAB的时候,写c++简直就是一种“浪费时间”的行为。如果能用MATLAB调用cuda的程序那该是一件多么美好的事情呀。
  确实,这件事情非常美好,但是配置开发环境的过程却是非常痛苦,我花了将近一个星期的时间才把这个问题解决,希望读者能在看完本文后节约宝贵的时间。
  如果你用的是版本比较老的VS(比如2005)和matlab,那么这个问题其实很好办,只要调用nvmex函数就好了,但是据stackoverflow的网友说,自MATLAB2010a开始,nvmex就不被支持了,因此网上有很多答案讨论如何改nvmex函数使得能在更高版本的MATLAB运行,但我试了很多源码都不成功,于是乎放弃。好在MATLAB出了个比较新的MATLABR2015b的版本,这个版本有个mexcuda函数, 用起来相当舒心,只要一两句代码就能调用.cu程序,唯一的不足就在于传入的数组必须是GPUARRay的形式,而且重新下载MATLAB再安装也是挺不舒服的。另外一个要注意的就是在mathworks的releasenote里有说哪个版本的MATLAB支持哪个版本的cuda。所以重装什么的绝对不是一个最好的办法呀。下面就给出两个解决办法:
  

1、参考木子超的办法

  这个办法写得很完整也很细致,我所遇到的问题和他遇到的问题几乎是一样的,读者只要对照着去做就好,我亲自测试过,测试环境是MATLAB_R2014a+VS2010+cuda7.5。还有一点值得注意的是,木子超所给出的代码有的地方是有点瑕疵的,需要读者自己完善,这里我就不说了。以下给出链接:
  http://blog.csdn.net/endlch/article/details/44561535

2、参考Tomheaven的方法

  这个方法我也亲自测试过,测试环境同上,作者写得非常好,就是有个小细节要注意
  

COMPFLAGS="-gencode=arch=compute_20,code=sm_20 -gencode=arch=compute_30,code=sm_30 -gencode=arch=compute_50,code=\"sm_50,compute_50\" --compiler-options=/c,/GR,/W3,/EHs,/nologo,/MD"

  在上面这个地方,如果你是cuda7.5的版本一定要把第一行第一个出现的arch和code后面的那个数字都改成20了(我记得cuda5.5这俩数字都是13),不然会出现nvcc报错,也就是我第一段说的MATLAB找不到它支持的编译器的架构的问题。以下是链接:
  http://blog.csdn.net/hanlin_tan/article/details/48790273
  


3、引用

[1]: http://blog.csdn.net/endlch/article/details/44561535
[2]: http://blog.csdn.net/hanlin_tan/article/details/48790273

0 0
原创粉丝点击