一、概述
想要在GPU跑MATLAB,首先得查看你的电脑是否支持了。
先来了解一个概念——CUDA:是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。
说白了,就是你用显卡进行深度学习等的运算必须要安装cuda包(你可以了理解为一个软件),用GPU跑MATLAB代码也必须要用到cuda包,每一个显卡只能安装对应版本的cuda包。
二、查看cuda版本并安装
依次打开:控制面板==>NVIDIA控制面板==>帮助==>系统信息==>组件==>NVCUDA.DLL==>产品名称
可以看到我的电脑支持cuda 10.1版本
此时就需要在你电脑安装对应版本的cuda版本,可以查看往期教程:
tips:如果有深度学习相关的cudnn也建议安装
……
三、确认MATLAB版本与cuda版本对应
安装好之后需要确认MATLAB版本与cuda版本对应才行,比如我的cuda10.1,只能使用MATLAB2019b与2020a
GPU Support by Release- MATLAB & Simulink- MathWorks 中国
四、在MATLAB查看GPU版本
到此你已经安装好了cuda了,MATLAB版本也对,就可以打开MATLAB查看GPU了,若是你没有安装cuda,会提示错误的。
在命令行输入
gpuDevice
正常情况会出现:
五、测试gpu跑代码
使用gpu跑代码首先需要了解几个函数
存储在 GPU 上的数组 | |
将分布式数组或 gpuArray 传输到本地工作空间 | |
查询或选择 GPU 设备 | |
将函数应用于 GPU 上数组的每个元素 |
最主要的就是前两个了,在运算时,必须将数组等定义为gpuArray类型,代码才会在gpu运行。
若是想把gpuArray对象转为普通数组,就要用到gateer函数了。
gpuArrary支持的函数:参考列表- MATLAB & Simulink- MathWorks 中国
举例:
G = gpuArray(X)
将数组复制 X到 GPU 并返回一个gpuArray对象。
G就是一个可以在gpu运行的数组
测试速度
输入如下代码在cpu运行并显示时间
tic
G=randn(1e4);
toc
输入如下代码在gpu运行并显示时间
tic
G=randn(1e4,'gpuArray');
toc
还是快了不少。