Skaliert die Matrixmultiplikation (sowohl Mat * Mat als auch Mat * Vec) mit der Anzahl der Nicht-Nullen oder mit der Größe der Matrix? Oder eine Kombination aus beiden.
Was ist mit der Form?
Zum Beispiel habe ich eine 100 x 100-Matrix mit 100 Werten oder eine 1000 x 1000-Matrix mit 100 Werten.
Wird beim Quadrieren dieser Matrizen (oder beim Multiplizieren mit ähnlichen Matrizen mit ähnlicher Sparsity) die erste (100x100) schneller sein als die zweite (1000x1000)? Kommt es darauf an, wo die Werte sind?
Wenn es implementierungsabhängig ist, interessiert mich die Antwort für PETSc.
quelle
Ein komplettes Modell der spmv Leistung in bestimmten dieser Arbeit . Es zeigt deutlich, dass der Hauptbegrenzer die Bandbreite ist, obwohl Sie die Belastung durch die Verwendung mehrerer Vektoren verringern können. Danach stoßen Sie auf Einschränkungen bei Anweisungsproblemen und auf eine Beschränkung für ausstehende Schreibanweisungen, glaube ich.
quelle