• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Matlab之GPU加速方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Matlab之GPU加速方法

 

 

一般代码加速方法

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上执行数组对应位置的点乘

还有很多支持 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.eye

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

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

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

GX=rand(10,\'gpuArray\'); %直接在GPU设备上随机初始化一个10x10的数组
%%常用的随机初始化函数有:eye, ones, zeros, rand, randi, randn.
  • gather 
    将GPU内存中的数据拷贝回CPU内存中。
X2=gather(GX2)       %将GPU内存中的数组GX2赋值给CPU中的X2

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

复杂代码加速方法

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

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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi解决android9上无法使用http协议发布时间:2022-07-18
下一篇:
TheDelphiContainerLibrary(DCLX)几处BUG发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap