MATLAB GPU编程基础

本文介绍从Matlab2013版本开始如何利用GPU进行高效并行计算。文章详细讲解了使用gpuArray进行数据传输的方法,包括从CPU到GPU及从GPU到CPU的数据迁移,并介绍了如何确认GPU设备和统计计算效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:http://blog.sina.com.cn/s/blog_863f5cf90102uyrh.html

Matlab2013版本开始,matlab将可以直接调用gpu进行并行计算,而不再需要安装GPUmat库。这一改动的好处是原有的matlab内置函数都可以直接运用,只要数据格式是gpuArray格式的,那么计算过程会自动的调用GPU进行计算,不可谓不方便。

具体操作起来,只要知道下面几个函数就可以像编写简单的m文件一样,进行matlab的GPU编程:

1.GPU设备确认函数

1n=gpuDeviceCount  %返回设备上的GPU数目

2)gpuDevice         %选择GPU设备

   D=gpuDeviceor gpuDevice(): 如果当前还未设置选择的GPU,则选择默认的GPU,D是返回对象;如果已经设    置了GPU,则返回设置的GPU对象。

   D=gpuDevice(IDX):表示选择IDX对应的GPU设置,D是返回对象

   %PS: 目前的GPU设置一般至少包含两个GPU,分别用1和2表示对应的IDX。

3)reset(gpudev) %清空gpu的内存,类似matlab的clear的功能。其中gpudev是gpuDevice所返回的对象。

 

2.GPU以CPU之间的交互

1)gpuArray(CPU-->GPU)

   主要有两个功能:

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

   例子-1:

   X=rand(10,'single');%定义在CPU上的一个10x10的随机初始化数组

   GX=gpuArray(X);     %在GPU开始数组GX,并且将X的值赋给GX

   GX2=GX.*GX;         %GPU上执行数组对应位置的点乘

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

   例子-2:

   GX=rand(10,'gpuArray');%直接在GPU设备上随机初始化一个10x10的数组

   %%PS:常用的随机初始化函数有:eye,ones, zeros, rand, randi, randn.

2)gather(GPU-->CPU)

   主要是将GPU内存中的数据拷贝回CPU内存中。

   继续例子-1

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

3)TF=existOnGPU(DATA)

   用于判断DATA是否存在于GPU内存中。如果不存在则返回false。

 

3.计算效率统计

  t=gputimeit(F,N)     %返回执行F操作N次所需的时间,当N=1时可以缺省   


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值