Why is it not possible to pass matrix parameters as argument to GPU arrayfun and what to do?
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Anders
am 27 Feb. 2024
Kommentiert: Edric Ellis
am 4 Mär. 2024
Background
- The problem can be separated into a large number of independent sub-problems.
- All sub-problems share the same matrix parameters of significant sizes.
- Each sub-problem performs an operation involving the matrix parameters that is hard to express with linear algebra.
- The goal is to process the sub-problems in paralell on the GPU.
0 Kommentare
Akzeptierte Antwort
Edric Ellis
am 27 Feb. 2024
It would be great to see a simplified example of what you're trying to do. What you can do with gpuArray/arrayfun is write a nested function to access constant data from a parent workspace, a bit like this:
function [r,c] = example
% up-level variables that we will access inside the nested
% function "iFindLocation"
mat = gpuArray(magic(4));
[m,n] = size(mat);
[r,c] = arrayfun(@iFindLocation, gpuArray(1:100));
function [r,c] = iFindLocation(in)
r = NaN; c = NaN;
for i = 1:m
for j = 1:n
% Access the matrix "mat" from the parent
% workspace
if mat(i,j) == in
r = i;
c = j;
end
end
end
end
end
2 Kommentare
Edric Ellis
am 4 Mär. 2024
I believe the constant data used inside the nested function here does not need to be duplicated.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu GPU Computing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!