gpuArray
存储在 GPU 上的数组
说明
gpuArray
对象表示存储在 GPU 内存中的数组。MATLAB® 和其他工具箱中的大量函数支持 gpuArray
对象,允许您以最少的代码更改在 GPU 上运行代码。要使用 gpuArray
对象,请使用任何启用 gpuArray
的 MATLAB 函数,例如 fft
、mtimes
或 mldivide
。要查找 MATLAB 和其他工具箱中启用 gpuArray
的函数的完整列表,请参阅 GPU 支持的函数。有关详细信息,请参阅在 GPU 上运行 MATLAB 函数。
如果您想从 GPU 检索数组,例如当使用不支持 gpuArray
对象的函数时,请使用 gather
函数。
注意
当 GPU 不可用时,您可以将包含 gpuArray
数据的 MAT 文件加载为内存数组。未使用 GPU 加载的 gpuArray
对象受到限制,您无法使用它进行计算。要使用未通过 GPU 加载的 gpuArray
对象,请使用 gather
检索内容。
创建对象
使用 gpuArray
将 MATLAB 工作区中的数组转换为 gpuArray
对象。一些 MATLAB 函数还允许您直接创建 gpuArray
对象。有关详细信息,请参阅在 GPU 上建立数组。
输入参量
对象函数
有几种方法可以检查 gpuArray
对象的特征。大多数行为类似于同名的 MATLAB 函数。
isgpuarray | 判断输入是否为 gpuArray |
existsOnGPU | 确定 GPU 上是否提供 gpuArray 或 CUDAKernel |
isUnderlyingType | 确定输入是否有指定的基础数据类型 |
ndims | 数组维度数目 |
size | 数组大小 |
underlyingType | 确定数组行为的基础数据的类型 |
几个 MATLAB 工具箱包含支持 gpuArray
的函数。要查看这些工具箱中支持 gpuArray
对象的所有函数的列表,请使用下表中的链接。带有信息指示器的列表中的函数具有在 GPU 上运行该函数的特定限制或使用说明。您可以在函数参考页面的扩展功能部分查看使用说明和限制。有关单个启用 gpuArray
的函数的更新信息,请参阅发行说明。
工具箱名称 | 支持 gpuArray 的函数列表 | GPU 特定文档 |
---|---|---|
MATLAB | 支持 gpuArray 的函数 | |
Statistics and Machine Learning Toolbox™ | 支持 gpuArray 的函数 (Statistics and Machine Learning Toolbox) | Analyze and Model Data on GPU (Statistics and Machine Learning Toolbox) |
Image Processing Toolbox™ | 支持 gpuArray 的函数 (Image Processing Toolbox) | GPU 计算 (Image Processing Toolbox) |
Deep Learning Toolbox™ | 支持 *(另请参阅 利用 GPU 进行深度学习) | Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud (Deep Learning Toolbox) Deep Learning with MATLAB on Multiple GPUs (Deep Learning Toolbox) |
Computer Vision Toolbox™ | 支持 gpuArray 的函数 (Computer Vision Toolbox) | GPU Code Generation and Acceleration (Computer Vision Toolbox) |
Communications Toolbox™ | 支持 gpuArray 的函数 (Communications Toolbox) | C/C++ Code Generation (Communications Toolbox) |
5G Toolbox™ | 支持 gpuArray 的函数 (5G Toolbox) | |
Signal Processing Toolbox™ | 支持 gpuArray 的函数 (Signal Processing Toolbox) | 代码生成和 GPU 支持 (Signal Processing Toolbox) |
Audio Toolbox™ | 支持 gpuArray 的函数 (Audio Toolbox) | Code Generation and GPU Support (Audio Toolbox) |
Wavelet Toolbox™ | 支持 gpuArray 的函数 (Wavelet Toolbox) | Code Generation and GPU Support (Wavelet Toolbox) |
Curve Fitting Toolbox™ | 支持 gpuArray 的函数 (Curve Fitting Toolbox) |
有关所有 MathWorks® 产品中支持 gpuArray
的函数列表,请参阅 gpuArray
支持的函数。或者,您也可以按产品进行过滤。在帮助栏上,点击函数。在函数列表中,浏览左侧窗格以选择一个产品,例如 MATLAB。在左侧窗格的底部,选择 GPU 数组。如果您选择的产品不具备启用 gpuArray
的函数,则 GPU 数组过滤器不可用。
示例
限制
以下任何一项都不能超过
intmax("int32")
:密集数组的元素数量。
稀疏数组中非零元素的数量。
任意给定维度的大小。例如,不允许使用
zeros(0,3e9,"gpuArray")
。
不支持使用
distributed
或codistributed
函数在并行池中的工作进程之间分配gpuArray
。如果您有多个 GPU,并且并行池中的每个工作进程都可以访问唯一的 GPU,那么您可以手动拆分或最初将数据生成为不同工作进程上的多个gpuArray
对象。有关如何在并行池中使用gpuArray
数据的示例,请参阅 在多个 GPU 上运行 MATLAB 函数。稀疏
gpuArray
限制:稀疏 GPU 数组仅支持通过索引引用整行或整列。
不支持通过索引为稀疏 GPU 数组分配值。
有关详细信息,请参阅在 GPU 上使用稀疏数组。
提示
如果您需要更好的性能,或者 GPU 上无法使用某个函数,
gpuArray
支持以下选项:要对
gpuArray
对象预编译并运行纯元素代码,请使用arrayfun
函数。要运行包含 CUDA® 设备代码或库调用的 C++ 代码,请使用 MEX 函数。有关详细信息,请参阅运行包含 CUDA 代码的 MEX 函数。
要运行用 CUDA C++ 编写的现有 GPU 内核,请使用 MATLAB
CUDAKernel
接口。有关详细信息,请参阅在 GPU 上运行 CUDA 或 PTX 代码。要从 MATLAB 代码生成 CUDA 代码,请使用 GPU Coder™。有关详细信息,请参阅Get Started with GPU Coder (GPU Coder)。
要控制 GPU 上的随机数流,请使用
gpurng
函数。
替代方法
您还可以通过指定 gpuArray
输出,使用一些 MATLAB 函数创建 gpuArray
对象。下表列出了使您能够直接创建 gpuArray
对象的 MATLAB 函数。有关更多信息,请参阅函数参考页的扩展功能部分。
|
|
|
|
| (自 R2024a 起) |
| gpuArray. colon |
| gpuArray. freqspace |
| gpuArray. linspace |
| gpuArray. logspace |
| gpuArray. speye |
扩展功能
版本历史记录
在 R2010b 中推出