Czy mnożenie macierzy (zarówno Mat * Mat, jak i Mat * Vec) skaluje się z liczbą niezerowych lub z rozmiarem macierzy? Lub jakąś kombinację tych dwóch.
Co z kształtem.
Na przykład mam macierz 100 x 100 ze 100 wartościami lub macierz 1000 x 1000 ze 100 wartościami.
Czy podczas kwadratowania tych macierzy (lub mnożenia ich przez podobne macierze o podobnej rzadkości) pierwsza (100 x 100) będzie szybsza niż druga (1000 x 1000)? Czy to zależy od tego, gdzie są wartości?
Jeśli zależy to od implementacji, jestem zainteresowany odpowiedzią na PETSc.
źródło
Pełny model wydajności SpMV podano w tym artykule . Pokazuje to wyraźnie, że głównym ogranicznikiem jest szerokość pasma, chociaż można zmniejszyć obciążenie, stosując wiele wektorów. Potem napotkasz ograniczenia dotyczące wydawania instrukcji i limit zaległych instrukcji zapisu, jak sądzę.
źródło