2015年11月

CUDA与C++联合编程很常见,在Matlab工程中很少出现,当Matlab工程很庞大时,将Matlab库函数移动到C++工作量非常大,并且数值精度也无法保证。本文介绍在Matlab环境下CUDA编程。

首先确定有支持CUDA的Nvidia显卡,并且已经正确安装好驱动和SDK等,网上有许多CUDA安装与配置环境的教程。Matlab与CUDA混合编程,首先使用Matlab,C++混合编程,最后C++作为中间介质与CUDA进行调用。(本文测试环境:Win7x64,Matlab2012b,CUDAv6.5)

1、Matlab与C++混合编程

  • 在matlab的CommandWindow里输入mex –setup,选择C++编译器;
  • 测试example
    #include "mex.h"
    // nlhs:输出变量的个数
    // plhs:输出的mxArray矩阵的头指针
    // nrhs:输入变量个数
    // prhs:输入的mxArray矩阵的头指针
    void mexFunction(int nlhs,mxArray* plhs[],int nrhs,const mxArray* prhs[])
    { 
       mexPrintf("Hello, matlab with cuda!\n");
    }
  • 编译C++代码:mex helloMex.cpp,如果成功的话,将产生helloMex.mexw64(或helloMex.mexw32),在Matlab命令行输入helloMex则会输出结果。

mexFunction()是Matlab混合编程必须的函数,作为接口函数,进行参数的传递。

- 阅读剩余部分 -