Wie führen Sie Vektor-Matrix-Multiplikation mit BLAS ?
BLAS definiert die GEMV (Matrix-Vektor-Multiplikation) level-2-Betrieb. Wie eine BLAS-Bibliothek durchführen Vektor-Matrix-Multiplikation ?
Es ist wahrscheinlich offensichtlich, aber ich sehe nicht, wie zu verwenden BLAS Vorgang für diese Multiplikation. Ich hätte erwartet, dass ein GEVM Betrieb.
- transpose(x) . transpose(A) = A. x
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Matrix-Vektor-Multiplikation einer (M x N) - Matrix mit einer (N x 1) Vektor wird Ergebnis eine (M x 1) - Vektor. In kurzen
a*A(MxN)*X(Nx1) + b*Y(Mx1) -> Y(Mx1)
. Natürlich können SieINCX
undINCY
wenn der Vektor in einer matrix.Zur Festlegung einer Vektor-Matrix-Multiplikation Vektor umgesetzt werden sollten. also
a*X(1xM)*A(MxN) + b*Y(1xN) -> Y(1xN)
. Im Grunde haben Sie nicht ein Vektor, sondern eine einzelne Zeile der matrix.Ab diesem Punkt gibt es zwei Möglichkeiten.
Entweder level-3 "GEMM"
mit
Oder tun Sie etwas mehr Mathematik. Wenn man bedenkt, dass
(X*A)^T = A^T * X^T
die Zeile matrixX
konvertiert zu Vektor X^T(MX1). AuchY
transpose VektorY^T(Nx1)
. Natürlich Speicher-Weise sowohlX
undX^T
sind-store mit der gleichen Art und Weise, der Reihe nach. Das heißt, Sie können wieder verwendenGEMV
mit transpose matrixA
?gemm
etwa 2~3 mal schneller als?gemv
. Sollte nicht?gemv
immer schneller als?gemm
?