利用Matlab实现GPU加速计算

Matlab之GPU加速方法

  • Matlab之GPU加速方法
  • 一般代码加速方法
  • GPU设备确认
  • GPU和CPU之间数据传递
  • 复杂代码加速方法

一般代码加速方法

Matlab目前只支持Nvidia的显卡。

GPU设备确认

想知道自己的电脑有没有这个能力,在Matlab中运行 gpuDevice
只要数据格式是gpuArray格式的,那么计算过程会自动的调用GPU进行计算。

GPU和CPU之间数据传递

  • gpuArray
    I) 将CPU内存数据传到GPU内存中

X=rand(10,'single'); %定义在CPU上的一个10x10的随机初始化数组 GX=gpuArray(X); %在GPU开始数组GX,并且将X的值赋给GX GX2=GX.*GX; %GPU上执行数组对应位置的点乘1.2.3.

还有很多支持 gpuArray 数据类型的函数,具体可以用 methods(‘gpuArray’) 查看。下列某函数的说明可以用 help gpuArray/functionname 查看:

gpuArray.ones gpuArray.colon gpuArray.zeros gpuArray.rand gpuArray.inf gpuArray.randi gpuArray.nan gpuArray.randn gpuArray.true gpuArray.linspace gpuArray.false gpuArray.logspace gpuArray.eye1.2.3.4.5.6.7.

其实,这些函数的用法和对应的普通函数的用法都是类似的。

II = gpuArray.eye(1024,'int32'); size(II) ans=1024 10241.2.3.

II)在GPU内存中随机初始化一些内存数据。

GX=rand(10,'gpuArray'); %直接在GPU设备上随机初始化一个10x10的数组 %%常用的随机初始化函数有:eye, ones, zeros, rand, randi, randn.1.2.

  • gather
    将GPU内存中的数据拷贝回CPU内存中。

X2=gather(GX2) %将GPU内存中的数组GX2赋值给CPU中的X21.

TIPS 有时候GPU受限于硬件架构,单精度的计算远快于双精度。这时候可以考虑在拷贝的时候顺便转换一下精度 A = gpuArray(single(B)) 。

复杂代码加速方法

对于一些复杂的,无法用matlab内部函数进行GPU加速的代码,matlab还提供了一个更强大的工具,就是调用.cu文件。

matlab+c混合编程把.c,.cc,.cpp等文件编译为能够使用的mex文件。对于CUDA程序.cu,matlab也提供了一套方法来调用,最终编译成.ptx文件。

   

   

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空