problems with @arrayfun on GPU

1 visualización (últimos 30 días)
christian Velasquez Javier
christian Velasquez Javier el 2 de Ag. de 2022
Respondida: Joss Knight el 8 de Ag. de 2022
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
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

Más información sobre GPU Computing en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by