Matlab+CUDA混合编程(一)

一.说明

以前曾尝试Matlab的混合编程,但是由于当初Matlab水平太菜,几经尝试仍未成功,于是放弃了那个念头。在最近研究CUDA的过程中发现了《Accelerating MATLAB with GPU Computing》这本书,于是又想再次尝试混合编程,没想到居然成功了,也许是最近一年经常使用Matlab的缘故。

由于在按照那本书尝试的过程中也出现了一些小插曲,幸好被试了出来,要不然又是半途而废。所以我决定将其记录下来,以便别人不要像曾经的我一样次次半途而废。为了方便起见,我还是采用《Accelerating MATLAB with GPU Computing》这本书的方法和流程,但愿作者不要与我计较,就当我替你们做宣传吧。

二.实践
  1. 基础
    确定有支持CUDA的Nvidia显卡,并且已经正确安装好驱动和SDK等,这个应该不难,网上有许多CUDA安装与配置环境的教程。我使用的是Win7 64位 + Visual Studio 2012 + CUDA5.5 + Matlab 2013b。
    我是先安装的Visual Studio 2012,然后安装的CUDA5.5,CUDA就直接把环境都配置完成,可以直接编程。所以为了省事可以考虑这样安装。

  2. Matlab里编译器的选择

在matlab的Command Window里输入mex –setup,出现下图所示:

图1

输入:y,出现下图所示:

图2

这是让选择编译器,由于我只安装了Visual Studio 2012,所以只有这一个,于是继续输入:1

图3

确认选择,输入y。

图4

完成,可以开始。

 

三. 初步测试

在Matlab中新建helloMex.cpp文件,内容为:

#include "mex.h"
// nlhs: 输出变量的个数
// plhs:输出的mxArray矩阵的头指针
// nrhs: 输入变量个数
// prhs:输入的mxArray矩阵的头指针

void mexFunction(int nlhsmxArray*plhs[], int nrhsconstmxArray*prhs[])
mexPrintf("Hello, matlab with cuda!n");

然后在Matlab的Command Window里输入mex helloMex.cpp。(此时Matlab的工作路径必须是helloMex.cpp所在文件夹)。
如果成功的话,将产生helloMex.mexw64(或 helloMex.mexw32),括号里是32位时产生的。
然后输入HelloMex即可看到结果。如下图所示。

图5

四. 补充

mexFunction()是Matlab混合编程必须的函数,作为借口函数,进行参数的传递,参数的含义在上面也简单的介绍了,下一节会详细的介绍。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值