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 comentarios

Bruno Luong
Bruno Luong el 2 de Ag. de 2022
"The code above runs perfectly in the Command Window"
I bet not
christian Velasquez Javier
christian Velasquez Javier el 2 de Ag. de 2022
Is this enough proof?
Walter Roberson
Walter Roberson el 2 de Ag. de 2022
What name did you use for the script?
christian Velasquez Javier
christian Velasquez Javier el 2 de Ag. de 2022
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

Iniciar sesión para comentar.

 Respuesta aceptada

Joss Knight
Joss Knight el 8 de Ag. de 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

Más respuestas (0)

Categorías

Productos

Versión

R2022a

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by