一种gpuArray
在MATLAB®表示被存储在GPU上的阵列。对于功能在GPU上支持阵列,看到一个完整的列表万博1manbetx在GPU上运行MATLAB功能。
GPU阵列可以通过从工作区到GPU转移现有阵列来创建。使用gpuArray
函数从MATLAB转移阵列到GPU:
N = 6;M =魔法(N);G = gpuArray(M);
你可以在一个单一的代码行做到这一点:
G = gpuArray(魔(N));
G
现在表示存储在GPU幻方的一个MATLAB gpuArray对象。提供给输入gpuArray
必须是数字(例如:单
,双
,INT8
等)或逻辑。(也可以看看与一个GPU复数起作用。)
使用收集
函数从GPU到MATLAB工作区检索阵列。这需要一个数组,它是在由gpuArray对象表示的GPU,并且将其传送到工作区MATLAB作为常规MATLAB阵列。您可以使用是平等的
验证您是否得到正确的值返回:
G = gpuArray(酮(100,'UINT32'));d =聚集(G);OK = ISEQUAL(d,酮(100,'UINT32'))
收集回来的CPU可能是昂贵的,并且通常是没有必要的,除非你需要与不支持的功能使用你的结果万博1manbetxgpuArray
。
创建MATLAB 1000通过-1000随机矩阵,然后将其转移到GPU:
X =兰特(1000);G = gpuArray(X);
创建在MATLAB双精度的随机值的矩阵,然后将基质从MATLAB转移为单精度到GPU:
X =兰特(1000);G = gpuArray(单(X));
许多函数可以通过指定直接构造在GPU上的阵列'gpuArray'
键入作为输入参数。这些功能只需要阵列尺寸和数据类信息,这样他们可以构建一个阵列,而无需任何元件从MATLAB工作区转移。欲了解更多信息,请参阅gpuArray
。
要创建类型的1024按1024单位矩阵INT32
在GPU上,型
II =眼(1024,'INT32','gpuArray');大小(II)
1024 1024
随着一个数值参数,可以创建一个2维矩阵。
创建者与数据类的一个3维阵列双
在GPU上,型
G =酮(100,100,50,'gpuArray');尺寸(G)
100 100 50
underlyingType(G)
双
默认的数据类是双
,所以你不必指定它。
要在GPU,类型创建零的8192元列向量
Z =零(8192,1,'gpuArray');尺寸(Z)
8192 1
为列向量,所述第二维度的大小是1。
有许多可用于检查一个gpuArray对象的特性几个功能:
功能 | 描述 |
---|---|
underlyingType |
阵列中的底层数据的类 |
existsOnGPU |
如果存在于GPU指示数组和可访问 |
是真实的 |
指示如果阵列数据是真实 |
isUnderlyingType |
确定是否阵列数据底层是指定类的,如 |
是平等的 |
确定两个或更多个阵列是相等 |
ISNUMERIC |
确定阵列是数值数据类型的 |
issparse |
确定如果一个数组是稀疏 |
长度 |
矢量的长度或最大数组维度 |
mustBeUnderlyingType |
验证该阵列已指定的底层类型,例如双 |
为ndims |
阵列中的维数 |
尺寸 |
阵列尺寸的大小 |
例如,为了检查gpuArray对象的大小G
键入:
G =兰特(100,'gpuArray');S =尺寸(G)
100 100
您可以保存gpuArray变量作为MAT文件供以后使用。当您从MATLAB工作空间节省gpuArray,该数据被保存为一个MAT文件gpuArray变量。当加载含有gpuArray变量MAT文件时,数据被加载到GPU作为gpuArray。
注意
当GPU不可用可将包含gpuArray数据MAT文件用作存储器阵列。一个gpuArray装不具有GPU是有限的,你不能用它来计算。要使用gpuArray加载没有GPU,使用检索内容收集
。
有关如何保存和加载变量在MATLAB工作区的详细信息,请参阅保存和载入工作空间变量。