Mam dwie macierze kwadratowe A
i B
CSR Matrix - Matrix mnożenie
muszę konwertować B
do CSR Format
i określić produktowi C
A * B_csr = C
Znalazłem wiele informacji w Internecie dotyczących CSR Matrix - Vector multiplication. Algorytm to:
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]];
}
}
Wymagam jednak mnożenia Matrix - Matrix
.
Co więcej, wydaje się, że większość algorytmów stosuje mnożenie A_csr - vector
tam, gdzie potrzebuję A * B_csr
. Moim rozwiązaniem jest przetransponowanie dwóch macierzy przed konwersją, a następnie przeniesienie produktu końcowego.
Czy ktoś może wyjaśnić, jak obliczyć produkt Matrix - CSR Matrix
i/lub produkt CSR Matrix - Matrix
?
W pierwszej pętli czym jest "i"? Co to jest "wynik", jak jest inicjowany, jaki typ zawiera? Czym są 'val' i' col'? Co to jest 'RowPtr'? Czym jest "d"? – bjpelcdev
@bjpelcdev 'i' będzie indeksem' ith' z 'C'. Pozostałe wartości odnoszą się do wektorów powiązanych z formatem "CSR". Tak czy inaczej, podałem tylko algorytm referencyjny, choć interesuje mnie inny przypadek. –