运行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计算(图像处理工具箱) |
深度学习工具箱™ | 功能与 *(参见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上运行。
trainNetwork
(深度学习工具箱)预测
(深度学习工具箱)predictAndUpdateState
(深度学习工具箱)分类
(深度学习工具箱)classifyAndUpdateState
(深度学习工具箱)激活
(深度学习工具箱)
有关“深度学习工具箱”中自动支持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实现高性能和准确性。
另请参阅
gpuArray
|gpuDevice
|gpuDeviceTable
|canUseGPU