入门级CUDA程序调试的通用方法——可用于Matlab的MexCuda

Matlab是学术界和业界公认的高级编程语言,其优点在于编程复杂度低,缺点在于for循环的效率极低。为了利用Matlab已有的算法,降低编程复杂度,同时解决for循环效率低的问题,Matlab引入了Mex机制,使得Matlab可以调用C++编写的函数。CUDA是Nvidia推出的并行计算框架,基本遵循了C++语法规则。于是乎出现了Matlab调用CUDA的方法,称之为“MexCuda”。本文就Mex CUDA程序的调试方法简单介绍下经验。

1. CUDA入门——vectorAdd

最简单的CUDA程序莫过于“vectorAdd.cu",即向量的加法。下面给出了一个向量加法的简单例子:
继续阅读

Matlab通过mex调用CUDA的方法

最近有使用Matlab通过mex调用CUDA加速视频处理的需求,于是折腾了一下,网上的说法可谓千奇百怪众说纷纭,却没有能用的。经过六个多小时的反复搜索和尝试,本人终于成功编译运动了了matlab的mexCUDA例程:mexGPUExample.cu。

1.软件环境

这个过程涉及三个环境:Visual Studio、Cuda Toolkit和Matlab。其中Cuda依赖Visual Studio、Matlab依赖Cuda和Visual Studio。官方正式支持的版本关系如下表:

Matlab版本 CUDA版本 Visual Studio版本
2014a 5.5 2008,2010
2014b 6.5 2008,2010,2012

本人用的Win10系统(64位),Matlab2014b、Cuda 7.5和VS2013。如果使用官方支持的版本,需要降级Cuda驱动和VS版本,要命的是,低版本的Cuda驱动在Win10上会崩溃(本人遇到过一次)。通过修改mex配置文件,可以使以上软件版本也用Cuda。

继续阅读