How to optimize matrix multiplication speed?
12 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Djabba
el 3 de Ag. de 2020
Editada: James Tursa
el 3 de Ag. de 2020
Hi all,
I'd like to increase computation speed of a matrix multiplication that occures many times in my code.
P = PHI*(P + Q)*PHI' + Q;
% P and Q are symetric positive 50x50 matrices
% PHI is a 50x50 matrix
Is there a way to optimize this code?
thanks!
0 comentarios
Respuesta aceptada
John D'Errico
el 3 de Ag. de 2020
Do this:
P = PHI*(P + Q)*PHI' + Q;
While it may look exactly like the line of code you wrote, in fact, it is the same. Matrix multiplies are already pretty well optimized in MATLAB.
Do you have the parallel processing toolbox, as well as GPU that is accessible to it? If so, then I believe you will get some gain by using gpuArray, as then the array multiplies can be done using your GPU.
0 comentarios
Más respuestas (1)
James Tursa
el 3 de Ag. de 2020
Editada: James Tursa
el 3 de Ag. de 2020
This looks like a covariance matrix update to me. The matrix multiplies are already done by highly optimized multi-threaded compiled BLAS library code, so you will not be able to improve on that. The only thing that might help you is the symmetry part, but unfortunately there are no symmetric BLAS routines to do your specific multiply. Also, since the multiplies will be done with generic matrix multiply routines, the result will likely not be exactly symmetric. If this makes a difference to you, you will have to manually correct the result. E.g., P = (P + P')/2
0 comentarios
Ver también
Categorías
Más información sobre Parallel Computing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!