Speed up a program
    3 次查看(过去 30 天)
  
       显示 更早的评论
    
It is required to speed up a very simple program:
for i=1:1000
   for j=1:1000
      A=fun(i, j) % matrix 3x3
      D=eig(A);
   end
end
Execution time for fun(i, j) is much less then time for eig(A). A mean execution time of whole program is about 40 minutes. I wrote a mex-file for calculating eigenvalues and improved the speed by 4 times. So now the mean time is about 10 minutes. I tried parfor-loop, it did not work. CUDA did not help as well =(
I will be very appreciated for any idea.
0 个评论
回答(2 个)
  Edric Ellis
    
      
 2014-12-5
        Here's what I tried with PARFOR, and this worked:
function D = pfeg
N = 100;
D = zeros(N, N, 3);
parfor i = 1:N
  for j = 1:N
      A = fun(i, j);
      D(i, j, :) = eig(A);
  end
end
end
function A = fun(i, j)
A = rand(3) .* i + j;
end
I'm not surprised that the GPU didn't help much - 3x3 matrices are simply too small to take good advantage of the GPU capabilities (unless you can use pagefun - which unfortunately you cannot in this case).
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
			
	产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!