Fast multiplication of rows of one matrix and columns of the second matrix
Ältere Kommentare anzeigen
I would like to compute v(k) = A(k, :)* B(:, k) as fast as possible (no-loops). Currently, I am doing diag(A * B) but it has unnecessary overhead of computation, and storage.
2 Kommentare
Daniel Shub
am 5 Okt. 2011
Do you want to do it as fast as possible or without loops? The JIT accelerator means that those two things are not necessarily the same.
Daniel Shub
am 5 Okt. 2011
How big is A? Is it sparse or distributed or anything funky like that?
Akzeptierte Antwort
Weitere Antworten (1)
Daniel Shub
am 5 Okt. 2011
0 Stimmen
Yair's blog has a nice post on memory issues and array operations:
It is not always obvious what is the best solution.
If your matrices are really big you might be better off distributing them to a graphic card. If your machine has a lot of cores, the for loop could be replaced by a parfor loop, or even distributed to a cluster. It is silly to worry about slight inefficiencies if you can access 1000+ cores.
Kategorien
Mehr zu Operating on Diagonal Matrices finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!