如何在MATLAB上使用GUP加速跑代码

近几年来AMD的CPU性价比很高,但还是推荐使用Intel的CPU。因为Intel在科学计算的积淀很深,MATLAB使用的是Intel MKL(Math Kernel Library)数学核心计算库,而MKL从来没有真正在AMD CPU上测试过,并且计算速度会显著降低。所以,目前仅推荐使用Intel CPU运行MATLAB。而要加快MATLAB代码的运行速度,除了对代码进行优化、向量化编程等手段外,也可以使用GPU来加速计算。

CPU和GPU的主要区别

首先我们来看CPU和GPU的主要区别:CPU是电脑的中央处理器,GPU是电脑的图形处理器。
请添加图片描述
CPU是一块超大规模的集成电路,其中包含ALU算术逻辑运算单元、Cache高速缓冲存储器以及Bus总线。是一台计算机的控制和运算核心,它的主要功能便是解释计算机发出的指令以及处理电脑软件中的大数据。

GPU是图像处理器的缩写,它是一种专门为PC或者嵌入式设备进行图像运算工作的微处理器。GPU的工作与上面说过的CPU类似,但又不完全像是,它是专为执行复杂的数学和几何计算而生的,而这游戏对这方面的要求很高,因此不少游戏玩家也对GPU有着很深的感情。

所以,CPU和GPU是两个完全不一样的东西,他们只是名字听起来差不多。CPU和GPU因为最初用来处理的任务就不同,所以设计上有不小的区别,而某些任务和GPU最初用来解决的问题比较相似,所以用GPU来算了,GPU的运算速度取决于雇了多少小学生CPU的运算速度取决于请了多么厉害的教授,教授处理复杂任务的能力是碾压小学生的,但是对于没那么复杂的任务,还是顶不住人多。当然现在的GPU也能做一些稍微复杂的工作了,相当于升级成初中生高中生的水平,但还需要CPU来把数据喂到嘴边才能开始干活,究竟还是靠CPU来管的

查看CUDA版本并下载安装

我们首先得知道一个基础知识,CUDA:是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。也就是用GPU跑MATLAB代码也必须要用到CUDA包,每一个显卡只能安装对应版本的CUDA包。

怎么在电脑上查看CUDA版本,我的电脑是win11,查看步骤如下:桌面上右击——>显示更多选项 ——>NVIDIA控制面板——>左下角系统信息——>组件——>产品名称
请添加图片描述
可以看到我的电脑对应的版本是11.6,此时就需要在你电脑安装对应版本的cuda版本,可以查看一下链接安装cuda:
https://developer.nvidia.com/cuda-toolkit-archive
在这里插入图片描述
这里我选择的是11.6进行安装。至于选择哪个版本,应该没多大差别,一般就是看这个版本是否要求GPU的计算能力是多少以上。
在这里插入图片描述读者可以按照自己的电脑,选择Linux还是Windows安装即可。安装完成之后,便是配置环境变量。根据以下步骤:系统——>系统信息——>高级系统设置——> 环境变量——>新建。环境变量配置如下图所示。
在这里插入图片描述

怎么检查CUDA是否安装成功

根据如下步骤查看:win+R——>输入cmd——>在命令行中输入 nvcc -V 可以查看版本信息
在这里插入图片描述

如何查看cuda的安装位置:win+R——>输入cmd——>在命令行中输入 set cuda 可以查看安装位置信息
在这里插入图片描述

确认MATLAB与cuda对应版本

安装好之后需要确认MATLAB版本与cuda版本对应才行,比如我的cuda11.6,但是我的没有对应的版本,所以我选择了MATLAB2018b,不影响计算效果。这是截止到MATLAB2020b的版本:
在这里插入图片描述matlab官网查询链接:
https://ww2.mathworks.cn/help/parallel-computing/gpu-support-by-release.html

在MATLAB查看GPU版本

到此你已经安装好了cuda了,MATLAB版本也对,就可以打开MATLAB查看GPU了,若是你没有安装cuda,会提示错误的。在命令行输入

gpuDevice

正常情况会出现:
在这里插入图片描述
可以看到我的显卡是RTX 3060,cuda的版本是11.6。

测试gpu在MATLAB上跑代码

使用gpu跑代码首先需要了解几个函数

gpuArray存储在 GPU 上的数组
gather将分布式数组或 gpuArray 传输到本地工作空间
gpuDevice查询或选择 GPU 设备
arrayfun将函数应用于 GPU 上数组的每个元素

速度测试:输入如下代码在cpu运行并显示时间

tic
G=randn(1e4);
toc

输入如下代码在gpu运行并显示时间

tic
G=randn(1e4,'gpuArray');
toc

运行结果如下:
在这里插入图片描述
可以看出在GPU上运算速度直接提高了94.55%。

Matlab 有时候在使用GPU加速为什么速度慢

比如运行如下代码:

N=rand(2000,2000);
tic
[a1,b1]=eig(N);
t1=toc

tic
N=gpuArray(N);
[a2,b2]=eig(N);
a2=gather(a2);
t2=toc

运行结果如下:
在这里插入图片描述
主要原因是GPU适用于可以并行化运算的情况,比如求矩阵每个元素的导数,这个就可以并行化,使用GPU就很快,但是eig看起来并不能并行化。

  • 5
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
", encrypt(key)); break; case 6: printf("Enter key: "); int dec_key; scanf("%d使用GPU加速Matlab代码可以通过以下步骤实现: 1. 安装Parallel Computing Toolbox工具箱 首先需要", &dec_key); printf("Enter encrypted scores: "); char enc_str[1000]; scanf("%s", enc_str确保安装了Parallel Computing Toolbox工具箱。如果没有安装,可以在Matlab中通过Add-Ons菜单进行); printf("Decrypted scores: %s\n", decrypt(dec_key, enc_str)); break; case 7: analyze_by_gpa(); break; case 0: printf("Goodbye!\n"); break; default: 安装。 2. 检查GPU硬件支持 在使用GPU加速之前,需要确保计算机支持 printf("Error: invalid choice.\n"); break; } } while (choice != 0); return 0; } GPU加速。可以通过以下命令检查: ```matlab gpuDevice ``` 如果输出了GPU设备信息,则说明计算机支持GPU加速。 3. 准备GPU数组 使用GPU加速需要将数据存储在GPU内``` 该程序使用了一个结构体 `Student` 来存储学生信息,同时定义了一个数组 `students` 来存储所有的学生信息。程序中实现了 `add_student`、`delete_student`、`search_student`、`存中。可以通过gpuArray函数将数组转换为GPU数组,如下例所示: ```matlab A = rand(1000,1000,'gpuArray'); ``` 4. 使用GPU加速函数 Matlab提供了许多支持sort_by_score`、`encrypt`、`decrypt`、`analyze_by_gpa` 这几个函数,分别实现了GPU加速的函数,如gpuArrayfun、gpuArrayfeval、pagefun等等。使用这些函数可以将待加添加学生、删除学生、查找学生、按成绩排序、加密成绩、解密成绩和按速的代码块转换为GPU代码块,从而实现GPU加速计算。 5. 优化GPU加速GPA分析成绩等功能。程序还实现了一个简单的菜单,让用户选择要使用的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值