matlab调用cuda,Matlab 调用CUDA的总结(Windows、Ubuntu)

出于加速计算的目的项目里需要用CUDA实现matlab部分计算然后使用matlab调用

由于计算部分需要的参数太多,往CUDA里一一传送太麻烦,所以先利用Matlab将这些参数存入到mat文件中,在CUDA c++代码中读取mat文件。

最终实现效果是在Matlab 代码中像调用函数一样调用mexw64文件(本质上是dll,linux平台拓展名是mexa64)来使用。

由于使用了CUDA无法直接用mex编译成mexw64,所以首先要使用nvcc将cu文件编译成obj文件以供mex链接。

项目总体结构

Ø  matlabfunction.m——调用CUDA的matlab主程序

Ø  mexmain.cpp——定义mexFunction的C++文件,并在内部读取mat文件,将参数传入CUDA以计算

Ø  kernel.cu——CUDA文件,有kernel函数的定义以及一个C++函数接收参数并调用kernel函数进行计算得到计算结果

代码结构

matlab.m

%matlab进行一些数据的处理

%.........

%调用编译出的mexw64/mexa64文件,将参数传入,得到计算结果

[result1,result2]=MexMain(arg1,arg2)

%计算结果的处理

%............

mexmain.cpp

#include "mat.h"

#include "mex.h"

extern int CUDAFunction(double* arg1,double*arg2);//kernel.cu文件中实现,主要功能是将参数传入CUDA kernel函数中利用GPU进行计算

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])

{//...

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值