What is the fastest way to do repeated element wise matrix multiplication?
17 次查看(过去 30 天)
显示 更早的评论
Given a matrix `A`, I need to multiply with another constant vector `B`, N times (N > 1 million). The size of `A` is `9000x1` and `B` is `9000x1000`.
The code is currently evaluated in the following way (random values taken for example):
B = rand(9000,1000); % B is fixed, does not depend on i
N = 1000000;
for i=1:N
rand('seed',i);
A = rand(9000,1); % A is 9000x1 matrix which varies with i
% prod = A.*B; % prod is 9000 x 1000 matrix
% sum_temp = sum(product); % sum_temp is 1 x 1000 matrix
% Edit
sum_temp = A.' * B;
% do multiple pperations with sum_temp
% result(i) = some_constant;
end
I used Profiler to see which line is taking the most time and it is the 2nd line (prod = A.*R;). The problem is that N is very large and the code is taking over several days to complete.
I am about to try the parallel computing toolbox (GPU computing), but are there any suggestions on what I can do in the basic version?
How can I reduce the run-time of such codes in MATLAB?
0 个评论
采纳的回答
Stephen23
2024-2-19
移动:Stephen23
2024-2-19
Reduce the number of operations inside the loop by replacing TIMES and SUM with MTIMES (of course adjusting the matrix/vector orientations to suit).
5 个评论
Stephen23
2024-2-19
编辑:Stephen23
2024-2-19
@Aravind Varma Dantuluri: did that make enough difference to the speed?
Another possibilty would be to look at some kind of parallel processing:
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!