主要内容

在GPU上建立阵列

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

根据已有数据创建GPU阵列

将阵列发送到GPU

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

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

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

G = gpuArray(魔法(N));

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

从GPU检索阵列

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

G = gpuArray(的(100“uint32”));D =收集(G);好吧= isequal (D(100年,“uint32”))

收集回CPU的代价可能很高,而且通常没有必要,除非您需要将结果与不支持的函数一起使用金宝appgpuArray

例如:将阵列转移到GPU

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

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

例如:指定精度的传输数组

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

X =兰德(1000);G = gpuArray(单(X));

直接创建GPU阵列

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

示例:在GPU上构造一个标识矩阵

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

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

只需一个数值参数,就可以创建一个二维矩阵。

示例:在GPU上构建多维数组

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

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

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

示例:在GPU上构造一个矢量

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

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

对于列向量,第二个维度的大小是1。

检查gpuArray特点

有几个函数可以用来检查gpuArray对象的特性:

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

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

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

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

G =兰德(100“gpuArray”);s =大小(G)
100 100

保存和加载gpuArrays

您可以将gpuArray变量保存为MAT文件,以便以后使用。当您从MATLAB工作空间中保存gpuArray时,数据会保存为MAT文件中的gpuArray变量。当你加载一个包含gpuArray变量的MAT文件时,数据会以gpuArray的形式加载到GPU上。

请注意

当GPU不可用时,可以将包含gpuArray数据的MAT文件加载为内存阵列。没有GPU加载的gpuArray是有限的,你不能使用它进行计算。要使用没有GPU加载的gpuArray,请使用收集

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

另请参阅

相关的话题