主要内容

在GPU上建立array

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

从现有数据创建GPU阵列

将数组发送到GPU

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

N = 6;M =魔术(N);G = gpuArray(M);

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

G = gpuArray(magic(N));

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

从GPU中检索数组

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

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

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

示例:“Transfer Array”到GPU

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

X =兰特(1000);G = gpuArray(X);

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

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

X =兰特(1000);G = gpuArray(single(X));

直接创建GPU阵列

属性可以让你直接在GPU上构造数组“gpuArray”类型作为输入参数。这些函数只需要数组大小和数据类信息,因此它们可以构造一个数组,而无需从MATLAB工作空间传输任何元素。有关更多信息,请参见gpuArray

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

要创建类型为1024 × 1024的单位矩阵int32在图形处理器上,输入

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

通过一个数值参数,您可以创建一个二维矩阵。

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

创建一个具有data类的三维数组在图形处理器上,输入

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

数据的默认类为,所以您不必指定它。

示例:在GPU上构造一个Vector

要在GPU上创建一个8192个元素的零列向量,请键入

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

对于列向量,第2维的大小为1。

检查gpuArray特征

属性的特征有几个可用的函数gpuArray对象:

函数 描述
underlyingType 数组中底层数据的类
existsOnGPU 指示图形处理器上是否存在数组并且可以访问
伊斯雷尔 指示数组数据是否为实数据
isUnderlyingType

确定底层数组数据是否属于指定的类,例如

isequal 判断两个或多个数组是否相等
isnumeric 确定数组是否为数值数据类型
issparse 判断数组是否稀疏
长度 向量或最大数组维数的长度
mustBeUnderlyingType 验证该数组已指定底层类型,例如double类型
ndims 数组中的维数
大小 数组尺寸的大小

例如,要检查的大小gpuArray对象G类型:

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

保存和加载gpuArray对象

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

请注意

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

有关如何在MATLAB工作区中保存和加载变量的详细信息,请参见保存和加载工作区变量

另请参阅

相关的话题