主要内容

运行MATLAB支持GPU的功能

你可以通过运行MATLAB来加速你的代码®GPU的函数。MATLAB中的GPU计算需要并行计算工具箱™。

MATLAB功能与gpuArray参数

MATLAB和其他工具箱中的许多函数在GPU上自动运行,如果你提供一个gpuArray数据参数。一个gpuArray在MATLAB中表示存储在GPU上的数组。

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

无论何时使用至少一个函数调用这些函数gpuArray作为数据输入参数,函数在GPU上执行。函数生成一个gpuArray因此,除非将数值数据返回到本地工作空间更合适(例如,大小).您可以混合使用这两种输入gpuArray同一函数调用中存储在主机内存中的数据和数组。gpuArray-赋能函数包括离散傅里叶变换(fft)、矩阵乘法(mtimes),左矩阵除法(mldivide),以及其他数百人。

条件gpuArray输入

GPU支持的功能只有在输入数据在GPU上时才会在GPU上运行。参数参数(如维度或索引)的数据类型不会影响函数的运行位置。例如,总和函数在GPU上运行,因为第一个输入数据在GPU上。

一个=兰德(10);d = 2;总和(gpuArray (A), d);
然而,总和函数不能在GPU上运行,因为第一个输入的数据不在GPU上。
一个=兰德(10);d = 2;总和(A, gpuArray (d));

在GPU上使用复数

如果在GPU上运行的函数的输出可能很复杂,那么必须显式地将其输入参数指定为complex。有关更多信息,请参见在GPU上使用复数

在GPU上使用稀疏数组

稀疏的函数可以用来创建稀疏gpuArray对象。许多MATLAB函数都支持稀疏gpuArray对象。有关更多信息,请参见在GPU上使用稀疏数组

检查gpuArray支持功能

几个MATLAB工具箱包含函数gpuArray支持。查看这些工具箱中所支持的所有函数的列表gpuArray对象,使用下表中的链接。带有信息指标的列表中的函数具有特定于在GPU上运行该函数的限制或使用说明。您可以在功能参考页面的Extended Capabilities部分查看使用说明和限制。有关个人更新的信息gpuArray-启用的功能,请参见发行说明。

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

功能与gpuArray支持(深度学习工具箱)

*(参见gpu深度学习

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

基于MATLAB的多gpu深度学习(深度学习工具箱)

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

的函数列表gpuArray支持所有MathWorks®2022世界杯八强谁会赢?产品,请参阅gpuArray支持功能.或者,您可以根据产品进行过滤。在帮助栏,点击功能.在功能列表中,浏览左侧窗格选择一个产品,例如MATLAB。在左侧窗格的底部,选择GPU数组.如果您选择的产品没有gpuArray-启用的函数,则GPU数组过滤器不可用。

gpu深度学习

对于深度学习工具箱中的许多功能,如果您有支持的GPU和并行计算工具箱,则GPU支持是自动的。您不需要将数据转换为gpuArray.下面是一个不详尽的函数列表,默认情况下,如果可用,在GPU上运行。

有关“深度学习工具箱”中自动支持GPU的更多信息,请参见在并行、gpu和云上扩展深度学习(深度学习工具箱)

对于使用定义为的网络和工作流dlnetwork(深度学习工具箱)对象或模型函数,将数据转换为gpuArray.使用功能与gpuArray支持(深度学习工具箱)在GPU上运行自定义训练循环或推理。

检查或选择图形处理器

如果你有一个支持的GPU,那么MATLAB会自动使用它进行GPU计算。如果你有多个gpu,那么你可以使用gpuDeviceTable以检查系统中检测到的所有gpu的属性。您可以使用gpuDevice选择其中之一,或使用多个gpu与一个并行池。有关更多信息,请参见识别并选择GPU设备而且在多gpu上运行MATLAB函数.要检查是否支持您的GPU,请参见GPU计算的需求

gpuDeviceTable
索引名称ComputeCapability DeviceAvailable DeviceSelected  _____ __________________ _________________ _______________ ______________ 1”NVIDIA RTX A5000”“8.6”真的真的2”住宅区P620”“6.1”真的假的

使用MATLAB函数与GPU

这个例子展示了如何使用gpuArray-启用的MATLAB函数进行操作gpuArray对象。您可以使用gpuDevice函数。

gpuDevice
ans = CUDADevice属性:名称:'NVIDIA RTX A5000'索引:1 ComputeCapability: '8.6' SupportsDouble: 1 DriverVersion: 11.6000 ToolkitVersion: 11.2000 MaxThreadsPerBlock: 1024 MaxShmemPerBlock: 49152 (49.15 KB) MaxThreadBlockSize: [1024 1024 64] MaxGridSize: [2.1475e+09 65535 65535] SIMDWidth: 32 TotalMemory: 25553076224 (25.55 GB) AvailableMemory: 25153765376 (25.15 GB) MultiprocessorCount: 64 ClockRateKHz: 1695000 ComputeMode: 'Default' GPUOverlapsTransfers: 1 KernelExecutionTimeout:0 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 1x95 760 gpuArray

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

gpuE = expm(diag(gpu,-1)) * expm(diag(gpu,1));gpuM =国防部(圆(abs (gpuE)), 2);gpu = gpu + fliplr(gpu);

策划的结果。

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

如果您需要将数据从GPU传输回来,请使用收集.将数据传输回CPU的成本很高,通常没有必要,除非您需要将结果用于不支持的函数gpuArray

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

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

使用gpu的例子

运行示例MATLAB函数在gpu上

下面的示例传递gpuArray对象支持的MATLAB函数,使这些函数在GPU上运行。

工具箱的名字 例子
MATLAB
图像处理工具箱
深度学习工具箱
信号处理工具箱
音频工具箱
小波工具箱

其他使用图形处理器的例子

下面的例子使用了其他自动GPU支持。

工具箱的名字 例子
深度学习工具箱
通信工具箱

致谢

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

另请参阅

|||

相关的例子

更多关于

Baidu
map