Why numel() is not accepted with a gpuArray

조회 수: 2 (최근 30일)
Song Decn
Song Decn 2022년 9월 14일
댓글: Song Decn 2022년 9월 18일
pcGpu = gpuArray(5:100);
r = arrayfun( @numel, pcGpu );
simple line of code above, although numel is supported with gpuArray, I still get following feedback:
Function passed as first input argument contains unsupported or unknown function 'numel'.
For more information see Tips.
Am I doing sth. wrong?
Thanks, Song
  댓글 수: 5
Walter Roberson
Walter Roberson 2022년 9월 15일
Are you applying numel to the entire array, or are you applying numel to each element of an array? When you use arrayfun then by definition the function is passed one element of the array.
arrayfun over a gpuArray does not support anonymous functions with captured variables.
Walter Roberson
Walter Roberson 2022년 9월 15일
for i = 1:numel(a)
f = pcGpu + i;
end
That overwrites all of f each iteration, so if you could get it to work, the result would be the same as if you had done
i = numel(a);
f = pcGpu + numel(a);
Reminder: you can pass numel(a) in as a parameter.

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

채택된 답변

Walter Roberson
Walter Roberson 2022년 9월 15일
편집: Walter Roberson 2022년 9월 15일
numel is not supported inside any function run on a gpuArray by using arrayfun. The above link lists all supported functions.
Remember that arrayfun on a gpuArray runs all aspects on the gpu. Variables not specifically configured as gpuArray have to be converted to gpuArray internally because the entire function runs on the gpu.
  댓글 수: 1
Song Decn
Song Decn 2022년 9월 18일
Thanks a lot Walter. I learned a lot and now have to rewrite my code now.

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

추가 답변 (0개)

카테고리

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

태그

제품


릴리스

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by