主要内容

运行MATLAB函数在GPU

MATLAB功能与gpuArray参数

数以百计的MATLAB函数®和其它工具箱如果你提供一个自动运行在GPUgpuArray论点。

一个= gpuArray ([1 0 1;1 2 0;0 1 1]);e = eig(一个);

每当你与至少一个调用这些函数gpuArray作为数据输入参数,函数执行在GPU上。函数生成一个gpuArray结果,除非返回MATLAB数据更合适(例如,大小)。您可以使用这两种混合输入gpuArray和MATLAB数组相同的函数调用。更多地了解当一个函数运行在GPU和CPU,明白了特殊条件gpuArray输入gpuArray启用功能包括离散傅里叶变换(fft),矩阵乘法(mtimes),左矩阵分裂(mldivide),和成百上千的其他人。有关更多信息,请参见检查gpuArray-Supp金宝apported功能

检查gpuArray支金宝app持功能

如果一个MATLAB函数支持金宝appgpuArray对象,您可以参考其他GPU其功能页面上使用信息。看到GPU数组扩展功能结尾部分功能页面。

提示

对于一个过滤的MATLAB函数列表的支持金宝appgpuArray对象,看到功能列表(GPU-arrays)

几个MATLAB工具箱包括内置函数gpuArray金宝app支持。视图列出了所有功能的这些工具箱支持金宝appgpuArray对象,使用下表中的链接。功能列表信息指标的局限性或使用notes特定于在GPU上运行的函数。你可以检查使用笔记和局限性的扩展函数参考页面的功能部分。更新个人信息gpuArray启用功能,发布说明。

工具箱的名字 列表的功能gpuArray金宝app GPU-Specific文档
MATLAB 功能与gpuArray金宝app
统计和机器学习的工具箱™ 功能与gpuArray金宝app(统计和机器学习的工具箱) 分析和模型数据在GPU上(统计和机器学习的工具箱)
图像处理工具箱™ 功能与gpuArray金宝app(图像处理工具箱) GPU计算(图像处理工具箱)
深度学习工具箱™

功能与gpuArray金宝app(深度学习工具箱)

*(参见深度学习在gpu上)

并行扩展深度学习,在gpu上,在云端(深度学习工具箱)

深度学习与MATLAB在多个gpu(深度学习工具箱)

计算机视觉工具箱™ 功能与gpuArray金宝app(计算机视觉工具箱) GPU代码生成和加速度(计算机视觉工具箱)
通信工具箱™ 功能与gpuArray金宝app(通信工具箱) 代码生成和加速支持金宝app(通信工具箱)
信号处理工具箱™ 功能与gpuArray金宝app(信号处理工具箱) 代码生成和GPU的支持金宝app(信号处理工具箱)
音频工具箱™ 功能与gpuArray金宝app(音频工具箱) 代码生成和GPU的支持金宝app(音频工具箱)
小波工具箱™ 功能与gpuArray金宝app(小波工具箱) 代码生成和GPU的支持金宝app(小波工具箱)
曲线拟合工具箱™ 功能与gpuArray金宝app(曲线拟合工具箱)

您可以浏览gpuArray从金宝app所有MathWorks支持功能®下载188bet金宝搏产品在以下链接:gpuArray支金宝app持功能。或者,您可以过滤产品。在帮助栏,点击功能。在功能列表中,浏览左侧窗格中选择一个产品,例如,MATLAB。在左窗格的底部,选择GPU数组。如果你选择了一个产品没有gpuArray启用功能,那么GPU数组过滤器是不可用的。

深度学习在gpu上

深度学习的许多功能工具箱,GPU支持是自动的,如果你有一个合适的GPU和并行计算工具箱™。金宝app你不需要把你的数据gpuArray。下面是一个简单的函数列表,默认情况下,运行在GPU上是否可用。

更多信息自动在深度学习GPU支持工具箱,明白了金宝app并行扩展深度学习,在gpu上,在云端(深度学习工具箱)

先进的网络和工作流定义为使用网络dlnetwork(深度学习工具箱)对象或函数模型,将数据转换成gpuArray。使用功能与gpuArray金宝app(深度学习工具箱)运行自定义训练循环或预测在GPU上。

检查或选择一个GPU

如果你有一个GPU,然后用MATLAB自动使用GPU计算。你可以检查并选择使用的GPUgpuDevice函数。如果你有多个gpu,那么您可以使用gpuDeviceTable检查所有gpu的性能检测到您的系统。您可以使用gpuDevice选择其中一个,或使用多个gpu并行池。例如,看到的识别和选择一个GPU设备使用多个gpu并行池。检查是否支持你的GPU,明白了金宝appGPU的金宝app支持版本

对于深度学习,MATLAB提供自动并行支持多种gpu。金宝app看到深度学习与MATLAB在多个gpu(深度学习工具箱)

使用MATLAB函数GPU

这个例子展示了如何使用gpuArray启用了MATLAB函数来操作gpuArray对象。你可以检查你的GPU的属性使用gpuDevice函数。

gpuDevice
ans = CUDADevice属性:名称:“泰坦RTX”指数:1 ComputeCapability:“7.5”SupportsDouble: 1 DriverVersi金宝appon: 11.2000 ToolkitVersion: 11 MaxThreadsPerBlock: 1024 MaxShmemPerBlock: 49152 MaxThreadBlockSize: [1024 1024 64] MaxGridSize: [2.1475 e + 09年65535 65535]SIMDWidth: 32 TotalMemory: 2.5770 e + 10 AvailableMemory: 2.4177 e + 10 MultiprocessorCount: 72 ClockRateKHz: 1770000 ComputeMode:“违约”GPUOverlapsTransfers: 1 KernelExecutionTimeout: 1 CanMapHostMemory: 1 DeviceSupported: 1 DeviceAvailable: 1 DeviceSelected: 1

创建一个重复的行向量的值从-15年到15。将其传输到GPU和创建一个gpuArray对象,使用gpuArray函数。

X = [15:15 0 15:15 0 15:15];gpuX = gpuArray (X);谁gpuX
类属性名称大小字节gpuX 760 x95 gpuArray

操作与gpuArray对象,使用任何gpuArray启用了MATLAB函数。MATLAB自动运行在GPU的计算。有关更多信息,请参见运行在GPU MATLAB函数。例如,使用诊断接头,expm,国防部,,腹肌,fliplr在一起。

gpuE = expm(诊断接头(gpuX 1)) * expm(诊断接头(gpuX 1));gpuM =国防部(圆(abs (gpuE)), 2);gpuF = gpuM + fliplr (gpuM);

策划的结果。

显示亮度图像(gpuF);colormap(翻转(灰色));

如果你需要把数据从GPU,使用收集。传输数据到CPU可以是昂贵的,和通常是没有必要的,除非你需要使用结果不支持的功能金宝appgpuArray

结果=收集(gpuF);谁结果
类属性名称大小字节的结果96 x96 73728双

一般来说,运行代码的CPU和GPU可以产生不同的结果,由于数值精度和算法的GPU和CPU之间的差异。从CPU和GPU的答案都是同样有效的浮点近似真实的分析结果,在计算过程中一直受到不同的舍入行为。在本例中,结果是整数消除了舍入错误。

使用GPU锐化图像

这个例子展示了如何使用gpuArrays锐化图像和GPU-enabled功能。

读取图像,并将其发送到GPU使用gpuArray函数。

形象= gpuArray (imread (“peppers.png”));

将图像转换为双打,应用梯度图像获得通过卷积。然后,使用梯度图像,图像锐化的一个因素

dimage = im2double(图片);梯度= convn (dimage, (3)。/ 9,“相同”)- convn (dimage,(5)。/ 25日“相同”);数量= 5;磨= dimage +数量。*梯度;

调整,情节和比较原始和尖锐的图像。

imshow (imresize ([dimage,磨),0.7));标题(“原始图像(左)与磨图像(右)”);

计算了曼德尔勃特集合使用GPU-Enabled函数

这个例子展示了如何使用GPU-enabled MATLAB函数来计算一个著名的数学结构:了曼德尔勃特集合,检查你的GPU使用gpuDevice函数。

定义参数。曼德布洛特算法遍历网格的实部和虚部。下面的代码定义的迭代的数量、网格大小,和网格限制。

maxIterations = 500;gridSize = 1000;xlim = [-0.748766713922161, -0.748766707771757];ylim = [0.123640844894862, 0.123640851045266];

您可以使用gpuArray函数将数据转移到GPU和创建一个gpuArray,或者你可以直接在GPU上创建一个数组。gpuArray提供GPU版本的许多功能,您可以使用它们来创建数据数组,例如linspace。有关更多信息,请参见直接创建GPU数组

xlim x = gpuArray.linspace (xlim (1), (2), gridSize);ylim y = gpuArray.linspace (ylim (1), (2), gridSize);谁xy
类属性名称大小字节x 8000 x1000 gpuArray y 8000 x1000 gpuArray

许多支持gpuArrays MATLAB函数金宝app。当你提供任何GPU-enabled gpuArray参数函数,该函数自动运行在GPU上。有关更多信息,请参见运行在GPU MATLAB函数。创建一个复杂的网格算法,并创建数组的结果。创建这个数组直接在GPU上使用函数,并指定“gpuArray”

[xGrid, yGrid] = meshgrid (x, y);z0 =复杂(xGrid yGrid);数= 1(大小(z0),“gpuArray”);

下面的代码实现了曼德布洛特算法使用GPU-enabled函数。因为代码使用gpuArrays,发生在GPU的计算。

z = z0;n = 0: maxIterations z z =。* z + z0;在= abs (z) < = 2;数=数+内部;结束数=日志(数);

当计算完成,阴谋的结果。

显示亮度图像(x, y,计数)colormap([飞机();flipud(飞机());0 0 0));轴

在GPU处理稀疏阵列

以下功能支持稀疏金宝appgpuArray对象。

abs位于acosd作用acot acotd研究会acscd acoth acsch角asec asecd asech作用正如asind atand每股atanh bicg bicgstab装天花板cgs classUnderlying连词因为cosd cosh cospi床cotd双曲余切csc cscd csch ctranspose函数诊断接头
结束eps exp expint expm1找到修复地板全部gmr gpuArray。speye图像放大isaUnderlying isdiag isempty isequal isequaln isfinite isfloat isinteger islogical isnumeric伊斯雷尔issparse istril istriu isUnderlyingType长度日志log2 log10 log1p lsqr - mtimes mustBeUnderlyingType ndims nextpow2 nnz
非零规范元素个数nzmax pcg + qmr rad2deg真正reallog realsqrt一轮秒secd双曲正割标志罪信德sinh sinpi大小稀疏spfun spones sprandsym sqrt总和谭罐内双曲正切tfqmr乘以(. *)跟踪转置下三角阵triu uminus underlyingType uplus

您可以创建一个稀疏gpuArray通过调用稀疏的与一个gpuArray输入,或通过调用gpuArray稀疏的输入。例如,

x = [0 1 0 0 0;0 0 0 0 1)
0 1 0 0 0 0 0 0 0 1
s =稀疏(x)
(1、2)1 (2、5)1
g = gpuArray(年代);% g是一个稀疏gpuArraygt = ' (g);% gt是一个稀疏gpuArrayf =全(gt)% f是一个完整的gpuArray
0 0 1 0 0 0 0 0 0 1

稀疏的gpuArray对象不支持索引。金宝app相反,使用找到定位非零元素数组的行和列索引。然后更换你想要的值,构造一个新的稀疏gpuArray

在GPU处理复数

如果函数运行在GPU上的输出可能复杂,您必须显式地指定它的输入参数复杂。这适用于gpuArray由中调用函数或代码arrayfun

例如,如果创建一个gpuArray可能负面元素,使用G = gpuArray(复杂(p)),那么你就可以成功地执行sqrt (G)

或者,在一个传递给函数arrayfun,如果x是一个向量的实数,和一些元素有负值,sqrt (x)生成一个错误;相反,你应该叫√复杂(x))

如果结果是agpuArray复杂的数据和所有的虚部为零,这些部分被保留和数据仍是复杂的。这可能在使用产生影响排序,伊斯雷尔,等等。

下表列出了可能返回复杂数据的函数,随着输入范围的输出仍然是真实的。

函数 输入范围实际产出
这些“可信赖医疗组织”(x) abs (x) < = 1
作用(x) x > = 1
acoth (x) abs (x) > = 1
正式启动(x) abs (x) > = 1
asec (x) abs (x) > = 1
asech (x) 0 < = x < = 1
正如(x) abs (x) < = 1
atanh (x) abs (x) < = 1
日志(x) x > = 0
log1p (x) x > = 1
log10 (x) x > = 0
log2 (x) x > = 0
功率(x, y) x > = 0
reallog (x) x > = 0
realsqrt (x) x > = 0
sqrt (x) x > = 0

特殊条件gpuArray输入

GPU-enabled功能运行在GPU上只有当数据在GPU上。例如,下面的代码运行在GPU,因为数据,第一个输入,在GPU上:

> >总和(gpuArray(魔法(10)),2);
然而,这段代码没有运行在GPU,因为数据,第一个输入,不是在GPU上:
> >总和(魔法(10),gpuArray (2));
如果你的输入参数gpuArray对象包含的项目,如尺寸、缩放因子或迭代次数,那么函数收集并计算在CPU上。函数只在GPU上运行时实际的数据参数gpuArray对象。

确认

岩浆是一个线性代数库例程,利用GPU加速。线性代数函数实现gpuArray并行计算工具箱中的对象利用岩浆实现性能和精度高。

另请参阅

|

相关的例子

更多关于