利用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
- 利用cuda加速MATLAB程序
- matlab中使用CUDA kernel GPU加速
- 利用GPU实现Matlab加速
- 编译Opencv的GPU,利用CUDA加速
- 如何使用CUDA达到加速程序
- 一点MATLAB程序加速技巧
- 一点MATLAB程序加速技巧
- MATLAB中调用cuda程序
- MATLAB中调用cuda程序
- CUDA加速
- Matlab中调用CUDA加速的方法……
- [转]编译Opencv的GPU,利用CUDA加速
- 利用多线程加速程序的小程序
- Ubuntu12.04 之 CUDA 编程 (二) ~~~ GPU 程序加速
- 自己所开发的彩票程序使用cuda加速后所获得的加速比
- matlab程序 使用mex和omp加速程序
- matlab中利用GPU加速仿真的配置
- 利用matlab和NVIDIA Nsight进行cufft CUDA代码分析
- 通过观察者模式监听媒体库的变化实现APP本地数据自动更新
- EventBus的总结
- GridLayout布局管理器
- Android学习资源
- hadoop jobhistory
- 利用cuda加速MATLAB程序
- 支持大多主流浏览器的jquery判断图片上传的大小
- 小细节导致的bootstrap table append的性能问题
- Hibernate和MyBatis的比较
- 关于onDraw()方法不被执行的解决方法(setWillNotDraw)
- 金融业IT员工,在总行做软件开发,职业发展道路真的很窄吗?
- 关于写码的那些事(一)
- Mybatis(一)-入门
- redis和sqlserver和.net的关联