7

您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center 汽车系统工程   模型库
    学习助手
会员   
   
知识图谱、本体论、RAG与大模型
8月29-30日 北京+线上
企业架构方法与实践
8月27-28日 深圳+线上
AI智能体开发技术实践
9月17-18日 厦门+线上
     
   
 订阅
使用Matlab调用GPU,加速1000倍以上
 
作/译者:mabucai
  12   次浏览      1 次
 2026-8-25
 
编辑推荐:
本文主要介绍了如何使用Matlab调用GPU相关内容。希望对你的学习有帮助。
本文来自于CSDN,由火龙果软件Alice编辑推荐。

前言

同样的一个算法,在matlab中以.m文件运行的时间:

通过mexFunction调用,运行的时间:

在Matlab中有两种方法可以调用GPU进行运算,实现数量级的加速。

方法1:gpuArray

语法如下:

a = ones(512,512,512);
b = 2*ones(512,512,512);
aa = gpuArray(a); % 将数组转到GPU中计算
bb = gpuArray(b); % 数据必须都转到GPU中,GPU显存与CPU内存数据不通用
cc = aa .* (bb + 1).^2;
cc = gather(cc); % 使用gather从GPU取出数据到CPU

使用函数gpuArray()“包裹”住数组,matlab会自动将数组转到GPU的显存中进行计算。再使用gather()取回结果到内存里。

此方法编程难度很小,一般来说,可以加速2至20倍。

对于复杂的,难以并行的任务,可以采用这种简单的方式。直接在matlab代码中将所有大数组全部用gpuArray包裹起来,然后在计算完成查看结果时使用gather取出数据。几行代码就能加速好几倍。

方法2:通过mexFunction调用CUDA代码

此方法上手难度较高,需要配置环境,学习CUDA代码语法,但是很有收益。

具体是使用matlab函数接口,自己写CUDA程序调用GPU。写好了后能够像matlab函数一样调用,非常方便。

数据通过matlab的.m程序调用,进入c++的内存中,然后c++调用cuda程序接口,传输到gpu显存中,再使用核函数进行计算,此方法能够加速10-2000倍。我的配置为CPU:i7-12700; GPU:RTX 3090;

调用示例:

[UCT_img_real,UCT_img_imag] = FarFocus_3d5_v1(UCT_data_real_GPU,UCT_data_imag_GPU, ...
    x_range,y_range,z_range,loc,single(pos_focus),arg_int,arg_float, ...
    single(r1_1),single(r1_2),single(r_2_2));

对应的c++代码为:(较长所以就截图了)

接口函数:mexFunction

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

nlhs:输出参数数目

plhs:指向输出参数的指针

nrhs:输入参数数目

prhs:指向输入参数的指针

环境配置

要使用这种方法,你需要:

    1. 硬件:英伟达Nvidia的GPU。
    2. 软件:Matlab,Visual Studio。

第一步安装Visual Studio

版本选择:

首先根据Matlab版本选择Visual Studio,截止2025年4月,只有Matlab 2025b适配了Visual Studio 2022。

所以强烈建议Matlab 2020a至2024b均下载Visual Studio 2019版本,否则matlab不适配无法编译会报错。这都是血泪史:https://blog.csdn.net/m0_46317675/article/details/135876100?spm=1011.2124.3001.6209

然而官网只能下载Visual Studio 2022。不过我去淘宝几块钱买了2019版本下载安装包,安装包大小只有6MB。

https://pan.baidu.com/s/1WE0Z3IS8SLWdSIjPbN02qw?pwd=3tgj

链接 :

https://pan.baidu.com/s/1WE0Z3IS8SLWdSIjPbN02qw

提取码: 3tgj 复制这段内容后打开百度网盘手机App,操作更方便哦

–来自百度网盘超级会员v3的分享

第二步安装CUDA

推荐教程:CUDA安装教程(超详细Windows版)

安装好后,你就可以调用GPU了,不仅是使用Matlab调用CUDA,python等深度学习也需要安装CUDA

在一步一步安装的时候,如果识别了Visual Studio,则成功,之后的matlab也能成功识别。

第三步配置Matlab环境

1.在matlab命令行中输入

mex -setup

2. 点击【mex -setup C++】,出现提示:

第四步配置系统环境变量

1.按下键盘的win标志键,在windows 里搜索:环境变量

![在这里插入图片描述](https://i-blog .csdnimg.cn/direct/ec90741b15be43a9bee4281bb46508aa.png

点击:【环境变量】

在系统变量里找到:【Path】

在系统变量的Path变量中添加所安装matlab文件夹 中的extern\lib\win64\microsoft,matlab\lib\win64和matlab\bin\win64。

第五步配置Visual Studio项目环境配置

创建新项目

如果正确安装了CUDA,并且重启了电脑和Visual Studio后,Visual Studio可以识别CUDA Runtime,选择它,点击【下一步】

随便命个名字,点击【创建】

点击【本地Windows调试器】,直接开始编译运行。

如果编译没有报错,且有如下输出,则你已经可以利用Visual Studio开发GPU的CUDA代码了

第六步,配置Visual Studio环境以能通过Matlab调用

打开【视图】中的【解决方案资源管理器】

点击齿轮

首先对VC++ 目录栏中得包含目录及库目录进行配置。在包含目录中添加所安装matlab文件夹中的extern\include和extern\include\win64,在库目录中添加extern\lib\win64\microsoft。不知道Matlab安装在哪的可以下载一个软件:Everthing

Everything下载地址

然后搜索:【mat.h】即可知道文件夹路径

添加extern\include和extern\include\win64到外部包含目录

在库目录中添加extern\lib\win64\microsoft

在【链接器】的【常规】的【附加库目录】添加:extern\lib\win64\microsoft

最后配置链接器输入选项栏中的附加依赖项。在附加依赖项中添加:libmat.lib、libmx.lib、libmex.lib、libeng.lib、cufft.lib

前4个lib是Matlab调用的时候要用的,最后一个是给GPU傅里叶变换用的

编写CUDA代码

到这里你已经完成了环境上的配置,接下来用一个简单的计算代码来验证编译和验证路径,体验GPU的极致加速吧。

   
12   次浏览       1 次
相关文章

基于图卷积网络的图深度学习
自动驾驶中的3D目标检测
工业机器人控制系统架构介绍
项目实战:如何构建知识图谱
 
相关文档

5G人工智能物联网的典型应用
深度学习在自动驾驶中的应用
图神经网络在交叉学科领域的应用研究
无人机系统原理
相关课程

人工智能、机器学习&TensorFlow
机器人软件开发技术
人工智能,机器学习和深度学习
图像处理算法方法与实践

最新活动计划
知识图谱.本体论.RAG大模型 8-29[在线]
企业架构方法与实践 8-27[深圳]
FDE(前沿部署工程师)实践指南 9-8[北京]
AI智能体开发技术实践 9-17[厦门]
UAF架构体系与实践 9-22[北京]
MBSE(基于模型的系统工程)9-29[北京]
 
 
最新文章
AIGC技术与应用全解析
详解知识图谱的构建全流程
大模型升级与设计之道
自动驾驶和辅助驾驶系统
ROS机器人操作系统底层原理
最新课程
人工智能,机器学习和深度学习
人工智能与机器学习应用实战
人工智能-图像处理和识别
人工智能、机器学习& TensorFlow+Keras框架实践
人工智能+Python+大数据
成功案例
某综合性科研机构 人工智能与机器学习
某银行 人工智能+Python+大数据
北京 人工智能、机器学习& TensorFlow
某领先数字地图提供商 Python数据分析
中国移动 人工智能、机器学习和深度学习