Why is it not possible to pass matrix parameters as argument to GPU arrayfun and what to do?
3 ビュー (過去 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!