Error using gpuArray/subsasgn

조회 수: 11 (최근 30일)
Tiki Tiki
Tiki Tiki 2019년 6월 13일
댓글: Edric Ellis 2019년 6월 17일
Hi everyone
I am working on GPU. I have a problem with it. I try to assign to a gpu Array. but i get this error.
it is working on CPU, however GPU is not.
"Error using gpuArray/subsasgn
When assigning into a GPUArray, the subscripts must contain unique values. Subscript 1 contained repeated values."
can you tell me how to solve this error?
Thanks

채택된 답변

Edric Ellis
Edric Ellis 2019년 6월 14일
You can avoid this error by ensuring that your subscript contains only unique values, using the MATLAB function unique. For example:
gvec = gpuArray(1:100);
% Indexes to assign - contains repeated indices
idxs = [1 1 2 3];
% Values to assign
vals = rand(1, 4);
% This would get an error - the assignment happens in parallel on the GPU,
% so which value should gvec(1) get - vals(1) or vals(2)?
%gvec(idxs) = vals;
% Use UNIQUE on idxs
[uniqueIdxs, locOfUniqueIdxs] = unique(idxs);
% Assign using only the unique indices, and the corresponding values
gvec(uniqueIdxs) = vals(locOfUniqueIdxs);
  댓글 수: 2
Guangyi Zhang
Guangyi Zhang 2019년 6월 14일
my problem is "Error, gpuArray/subsasgn
Sparse gpuArrays are not supported for this function."
how to solve that?
Edric Ellis
Edric Ellis 2019년 6월 17일
You cannot modify sparse gpuArray data once you have put it on the GPU - you should set up the data as you want it to be, then send it to the GPU.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 GPU Computing에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by