problems with @arrayfun on GPU

7 views (last 30 days)
Hi,
I am starting to using the arrafun function with GPU capabilities (I have an NVIDIA GeForce GTX 1650 with Max-Q Design).
I am following jsut the example from matlab website
R1 = rand(2,5,4,"gpuArray");
R2 = rand(2,1,4,3,"gpuArray");
R3 = rand(1,5,4,3,"gpuArray");
R = arrayfun(@(x,y,z)(x+y.*z),R1,R2,R3);
The code above runs perfectly in the Command Window, but if I want to run this from an script or live-script I get the following error:
Index exceeds the number of array elements. Index must not exceed 0.
Some hint what is happening?
  4 Comments
Walter Roberson
Walter Roberson on 2 Aug 2022
What name did you use for the script?
christian Velasquez Javier
Hi Walter, I used newd.m as name
I've just realized what is the problem. Apparently arrayfun for gpuArrays works in an script .m but not in a .mlx. Moreover, to run in the script scope you need to run the whole script (F5), because when I tried to run a especific section (Ctrl+Enter) the code gives an error

Sign in to comment.

Accepted Answer

Joss Knight
Joss Knight on 8 Aug 2022
This is a bug. I have reported it. Thanks for finding it!
In the meantime, you can work around the issue by using a local function rather than an anonymous function.
R1 = rand(2,5,4,"gpuArray");
R2 = rand(2,1,4,3,"gpuArray");
R3 = rand(1,5,4,3,"gpuArray");
R = arrayfun(@iFunc,R1,R2,R3);
function w = iFunc(x,y,z)
w = x+y.*z;
end

More Answers (0)

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!