在GPU上建立阵列

一种gpuArray在MATLAB®表示被存储在GPU上的阵列。对于功能在GPU上支持阵列,看到一个完整的列表万博1manbetx在GPU上运行MATLAB功能

从现有数据创建GPU数组

发送阵列添加到GPU

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

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

你可以在一个单一的代码行做到这一点:

G = gpuArray(魔(N));

G现在表示存储在GPU幻方的一个MATLAB gpuArray对象。提供给输入gpuArray必须是数字(例如:INT8等)或逻辑。(也可以看看与一个GPU复数起作用。)

从GPU检索阵列

使用收集函数从GPU到MATLAB工作区检索阵列。这需要一个数组,它是在由gpuArray对象表示的GPU,并且将其传送到工作区MATLAB作为常规MATLAB阵列。您可以使用是平等的验证您是否得到正确的值返回:

G = gpuArray(酮(100,'UINT32'));d =聚集(G);OK = ISEQUAL(d,酮(100,'UINT32'))

收集回来的CPU可能是昂贵的,并且通常是没有必要的,除非你需要与不支持的功能使用你的结果万博1manbetxgpuArray

例如:转移阵列到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在GPU上,型

II =眼(1024,'INT32''gpuArray');大小(II)
1024 1024

随着一个数值参数,可以创建一个2维矩阵。

实施例:构建在GPU上多维数组

创建者与数据类的一个3维阵列在GPU上,型

G =酮(100,100,50,'gpuArray');尺寸(G)
100 100 50
underlyingType(G)

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

实施例:构建体的载体在GPU上

要在GPU,类型创建零的8192元列向量

Z =零(8192,1,'gpuArray');尺寸(Z)
8192 1

为列向量,所述第二维度的大小是1。

检查gpuArray特点

有许多可用于检查一个gpuArray对象的特性几个功能:

功能 描述
underlyingType 阵列中的底层数据的类
existsOnGPU 如果存在于GPU指示数组和可访问
是真实的 指示如果阵列数据是真实
isUnderlyingType

确定是否阵列数据底层是指定类的,如

是平等的 确定两个或更多个阵列是相等
ISNUMERIC 确定阵列是数值数据类型的
issparse 确定如果一个数组是稀疏
长度 矢量的长度或最大数组维度
mustBeUnderlyingType 验证该阵列已指定的底层类型,例如双
为ndims 阵列中的维数
尺寸 阵列尺寸的大小

例如,为了检查gpuArray对象的大小G键入:

G =兰特(100,'gpuArray');S =尺寸(G)
100 100

保存和载入gpuArrays

您可以保存gpuArray变量作为MAT文件供以后使用。当您从MATLAB工作空间节省gpuArray,该数据被保存为一个MAT文件gpuArray变量。当加载含有gpuArray变量MAT文件时,数据被加载到GPU作为gpuArray。

注意

当GPU不可用可将包含gpuArray数据MAT文件用作存储器阵列。一个gpuArray装不具有GPU是有限的,你不能用它来计算。要使用gpuArray加载没有GPU,使用检索内容收集

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

也可以看看

相关话题