Main Content

本页采用了机器翻译。点击此处可查看最新英文版本。

在 GPU 上使用稀疏数组

创建稀疏 GPU 数组

您可以通过使用 gpuArray 输入调用 sparse 来创建稀疏 gpuArray,或者通过使用稀疏输入调用 gpuArray 来创建它。例如,

X = [0 1 0 0 0; 0 0 0 0 1]
     0     1     0     0     0
     0     0     0     0     1
S = sparse(X)
   (1,2)        1
   (2,5)        1
G = gpuArray(G);   % G is a sparse gpuArray
Gt = transpose(G); % Gt is a sparse gpuArray
F = full(Gt)       % F is a full gpuArray
     0     0
     1     0
     0     0
     0     0
     0     1

对 GPU 数组进行索引

稀疏 GPU 数组仅支持通过索引引用整行或整列。例如,要访问稀疏矩阵 A 的第五行,请调用 A(5,:)A(5,1:end)

A = gpuArray.speye(10);
A(5,:)
   (1,5)       1
full(A(5,:))
     0     0     0     0     1     0     0     0     0     0

要定位稀疏 GPU 数组的非零元素,请使用 find 函数。然后,您可以替换所需的值并构建一个新的稀疏 gpuArray

A = gpuArray.speye(10);
[row,col] = find(A);
[row,col]
     1     1
     2     2
     3     3
     4     4
     5     5
     6     6
     7     7
     8     8
     9     9
    10    10

不支持通过索引为稀疏 GPU 数组分配值。

支持稀疏 GPU 数组的函数

下表列出了支持稀疏 gpuArray 对象的函数。

abs
acos
acosd
acosh
acot
acotd
acoth
acsc
acscd
acsch
angle
asec
asecd
asech
asin
asind
asinh
atan
atand
atanh
bicg
bicgstab
ceil
cgs
classUnderlying
conj
cos
cosd
cosh
cospi
cot
cotd
coth
csc
cscd
csch
ctranspose
deg2rad
diag
end
eps
exp
expint
expm1
find
fix
floor
full
gmres
gpuArray.speye
imag
isaUnderlying
isdiag
isempty
isequal
isequaln
isfinite
isfloat
isinteger
islogical
isnumeric
isreal
issparse
istril
istriu
isUnderlyingType
length
log
log2
log10
log1p
lsqr
minus
mtimes
mpower
mustBeUnderlyingType
ndims
nextpow2
nnz
nonzeros
norm
numel
nzmax
pcg
plus
power
qmr
rad2deg
real
reallog
realsqrt
round
sec
secd
sech
sign
sin
sind
sinh
sinpi
size
sparse
spfun
spones
sprandsym
sqrt
subsref
sum
tan
tand
tanh
tfqmr
times (.*)
trace
transpose
tril
triu
uminus
underlyingType
uplus 

另请参阅

| |

相关主题