CSR-Matrix - Matrix-Multiplikation
Habe ich zwei quadratische Matrizen A
und B
Muss ich konvertieren B
zu CSR Format
und bestimmen das Produkt C
A * B_csr = C
Ich fand eine Menge von online-Informationen in Bezug auf CSR-Matrix - Vektor-Multiplikation. Der Algorithmus ist:
for (k = 0; k < N; k = k + 1)
result[i] = 0;
for (i = 0; i < N; i = i + 1)
{
for (k = RowPtr[i]; k < RowPtr[i+1]; k = k + 1)
{
result[i] = result[i] + Val[k]*d[Col[k]];
}
}
Ich allerdings erfordern Matrix - Matrix
Multiplikation.
Weiter, es scheint, dass die meisten algorithmen anwenden A_csr - vector
Multiplikation, wo ich eine A * B_csr
. Meine Lösung ist die Umsetzung der zwei Matrizen vor dem konvertieren dann die Umsetzung des endgültigen Produktes.
Kann mir jemand erklären, wie die Berechnung einer Matrix - CSR Matrix
Produkt und/oder eine CSR Matrix - Matrix
Produkt?
- In der ersten Schleife was ist
i
? Auch, was istresult
, wie wird es eingeleitet, welche Art beinhaltet es? Was sindval
undcol
? Was istRowPtr
? Was istd
? i
wäre dieith
indexC
. Die anderen Werte beziehen sich auf die Vektoren im Zusammenhang mit derCSR
- format. Na ja, ich habe nur, sofern der Algorithmus für die Referenz, obwohl ich interessiert bin in einem anderen Fall.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine einfache Lösung in Python für die
Dense Matrix X CSR Matrix
. Es sollte selbsterklärend sein.CSR Matrix X Dense Matrix
ist wirklich nur eine Abfolge vonCSR Matrix X Vector
Produkt für jede Zeile der dichten matrix richtig? So sollte es sein, wirklich einfach zu erweitern ist der code, den Sie oben zeigen, dies zu tun.Voran, ich schlage vor, Sie don ' T code dieser Routinen selbst. Wenn Sie mit C++ (auf der Grundlage der tag), dann könnte man einen Blick auf Boost ublas zum Beispiel, oder Eigen. Die APIs mag ein wenig kryptisch auf den ersten, aber es lohnt sich langfristig. Erste, erhalten Sie Zugriff auf viele weitere Funktionen, die Sie wahrscheinlich benötigen in der Zukunft. Zweiten dieser Implementierungen wird besser optimiert.