主要内容

在图形处理器上建立阵列

一个gpuArray在MATLAB®表示存储在GPU上的数组。有关GPU上支持数组的完整函数列表,请参见金宝app在GPU上运行MATLAB函数

使用已有数据创建GPU阵列

向GPU发送阵列

GPU阵列可以通过将工作区中已有的阵列转移到GPU中来创建。使用gpuArray函数将数组从MATLAB传输到GPU:

N = 6;M = magic(N);G = gpuArray(M);

你可以在一行代码中完成它:

G = gpuArray(magic(N));

G现在是MATLABgpuArray对象,表示存储在GPU上的魔方。提供给gpuArray必须是数字(例如:int8等等)或合乎逻辑的。(见也在GPU上处理复数.)

从GPU中检索数组

使用收集函数从GPU检索数组到MATLAB工作空间。它接受一个由a表示的GPU上的数组gpuArray对象,并将其作为常规MATLAB数组传输到MATLAB工作空间。你可以用isequal要验证您是否获得了正确的值:

G = gpuArray(ones(100);“uint32”));D = gather(G);OK = isequal(D,ones(100),“uint32”))

收集回CPU的成本很高,除非需要将结果用于不支持的函数,否则通常没有必要金宝appgpuArray

例如:Transfer Array to the GPU

在MATLAB中创建一个1000 × 1000的随机矩阵,然后将其传输到GPU:

X = rand(1000);gpuArray(X);

示例:指定精度的传输阵列

在MATLAB中创建一个双精度随机值矩阵,然后将矩阵作为单精度从MATLAB传递到GPU:

X = rand(1000);G = gpuArray(single(X));

直接创建GPU阵列

许多函数允许您通过指定“gpuArray”键入作为输入参数。这些函数只需要数组大小和数据类信息,因此它们可以构造一个数组,而不必从MATLAB工作空间转移任何元素。有关更多信息,请参见gpuArray

示例:在GPU上构造单位矩阵

创建一个1024 × 1024的单位矩阵,类型为int32在GPU上,输入

II =眼(1024;“int32”“gpuArray”);大小(2)
1024 1024

用一个数值参数,创建一个二维矩阵。

示例:在GPU上构造一个多维数组

创建一个具有data类的3维数组在GPU上,输入

G = ones(100,100,50,“gpuArray”);大小(G)
100 100 50
underlyingType (G)

数据的默认类为,因此您不必指定它。

示例:在GPU上构造一个Vector

要在GPU上创建一个包含8192个元素的零列向量,输入

Z = 0 (8192,1,“gpuArray”);大小(Z)
8192年1

对于列向量,第二次元的大小是1。

检查gpuArray特征

有几个函数可用于检查a的特征gpuArray对象:

函数 描述
underlyingType 数组中基础数据的类
existsOnGPU 指示GPU上是否存在阵列且可访问
伊斯雷尔 指示数组数据是否真实
isUnderlyingType

确定基础数组数据是否属于指定的类,例如

isequal 确定两个或多个数组是否相等
isnumeric 确定数组是否为数字数据类型
issparse 确定数组是否稀疏
长度 向量长度或最大数组维数
mustBeUnderlyingType 验证数组是否指定了基础类型,比如double
ndims 数组的维数
大小 数组尺寸的大小

的大小gpuArray对象G类型:

G = rand(100,“gpuArray”);s = size(G)
100 100

保存和加载gpuArray对象

你可以保存gpuArray变量作为MAT文件以供以后使用。当你保存gpuArray从MATLAB工作空间中,将数据保存为gpuArrayMAT文件中的变量。的MAT文件时gpuArray变量,数据被加载到GPU上gpuArray

请注意

可以加载MAT文件,其中包含gpuArray当GPU不可用时,将数据设置为内存数组。一个gpuArray没有GPU的加载是有限的,你不能用它来计算。使用agpuArray加载没有GPU,检索的内容使用收集

有关如何在MATLAB工作空间中保存和加载变量的更多信息,请参见保存和加载工作空间变量

另请参阅

相关的话题