Why numel() is not accepted with a gpuArray
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Song Decn
el 14 de Sept. de 2022
Comentada: Song Decn
el 18 de Sept. de 2022
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 comentarios
Walter Roberson
el 15 de Sept. de 2022
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
el 15 de Sept. de 2022
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.
Respuesta aceptada
Walter Roberson
el 15 de Sept. de 2022
Editada: Walter Roberson
el 15 de Sept. de 2022
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.
Más respuestas (0)
Ver también
Categorías
Más información sobre GPU Computing in MATLAB en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!