Error using gpuArray/subsasgn
9 ビュー (過去 30 日間)
古いコメントを表示
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
0 件のコメント
採用された回答
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
2019 年 6 月 14 日
my problem is "Error, gpuArray/subsasgn
Sparse gpuArrays are not supported for this function."
how to solve that?
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 Center および File Exchange で GPU Computing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!