Accelerate eig with GPUs
显示 更早的评论
Hi all, I need to diagonalize a lot of matrices. The problem is similar to:
A = rand(5000, 5000, 500); %this snipped is just a demo. It is real logic in the program
EVs = zeros(5000, 500);
for idx = 1:500
EVs(:, idx) = eig(A(:,:,idx));
end
This is fine on CPUs and easily scalable with parfor and MDCS. As eig is faster on GPUs I tried this
A = rand(5000, 5000, 500); %this snipped is just a demo. It is real logic in the program
EVs = zeros(5000, 500, 'gpuArray');
for idx = 1:500
B = gpuArray(A(:, :, idx));
EVs(:, idx) = eig(B);
end
EVs = gather(EVs);
This does not lead to a much better performance. Is there a way to get around the gpuArray statement in each loop? Some kind of pagefun with eig would be the solution I guess. (unfortunately, eig is not supported by pagefun)
Best wishes Niklas
1 个评论
Matt J
2019-7-16
Birk Andreas's comment moved here:
Please Mathworks, implement eig for use with pagefun as soon as possible!!!
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 GPU Computing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!