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计算(图像处理工具箱) |
深度学习工具箱™ | 功能与 *(参见深度学习在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和并行计算工具箱™。金宝app你不需要把你的数据gpuArray
。下面是一个简单的函数列表,默认情况下,运行在GPU上是否可用。
trainNetwork
(深度学习工具箱)
预测
(深度学习工具箱)
predictAndUpdateState
(深度学习工具箱)
分类
(深度学习工具箱)
classifyAndUpdateState
(深度学习工具箱)
激活
(深度学习工具箱)
更多信息自动在深度学习GPU支持工具箱,明白了金宝app并行扩展深度学习,在gpu上,在云端(深度学习工具箱)。
先进的网络和工作流定义为使用网络dlnetwork
(深度学习工具箱)对象或函数模型,将数据转换成gpuArray
。使用功能与gpuArray
金宝app(深度学习工具箱)运行自定义训练循环或预测在GPU上。
如果你有一个GPU,然后用MATLAB自动使用GPU计算。你可以检查并选择使用的GPUgpuDevice
函数。如果你有多个gpu,那么您可以使用gpuDeviceTable
检查所有gpu的性能检测到您的系统。您可以使用gpuDevice
选择其中一个,或使用多个gpu并行池。例如,看到的识别和选择一个GPU设备和使用多个gpu并行池。检查是否支持你的GPU,明白了金宝appGPU的金宝app支持版本。
对于深度学习,MATLAB提供自动并行支持多种gpu。金宝app看到深度学习与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的答案都是同样有效的浮点近似真实的分析结果,在计算过程中一直受到不同的舍入行为。在本例中,结果是整数轮
消除了舍入错误。
这个例子展示了如何使用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 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));轴从
以下功能支持稀疏金宝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上的输出可能复杂,您必须显式地指定它的输入参数复杂。这适用于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 |
GPU-enabled功能运行在GPU上只有当数据在GPU上。例如,下面的代码运行在GPU,因为数据,第一个输入,在GPU上:
> >总和(gpuArray(魔法(10)),2);
> >总和(魔法(10),gpuArray (2));
gpuArray
对象包含的项目,如尺寸、缩放因子或迭代次数,那么函数收集并计算在CPU上。函数只在GPU上运行时实际的数据参数gpuArray
对象。
岩浆是一个线性代数库例程,利用GPU加速。线性代数函数实现gpuArray
并行计算工具箱中的对象利用岩浆实现性能和精度高。