Why is it not possible to pass matrix parameters as argument to GPU arrayfun and what to do?
10 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Edric Ellis
2024-2-27
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 个评论
Edric Ellis
2024-3-4
I believe the constant data used inside the nested function here does not need to be duplicated.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 GPU Computing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!