BLASs überlegene Leistung bei der Matrixmultiplikation
Sie haben einen bemerkenswerten Unterschied in der Leistung Ihrer eigenen Matrixmultiplikationsfunktion im Vergleich zu der von festgestellt BLAS. Dies wirft zwei Fragen auf:
1. Wie erreicht BLAS extreme Leistung?
BLAS ist basierend auf Komplexität und Optimierungstechniken in drei Ebenen unterteilt:
2. Warum ist Ihre Implementierung langsamer?
Ihrer Implementierung fehlt die von BLAS verwendete Cache-Optimierung. Die O(N^3)-Operationen bei der Matrix-Matrix-Multiplikation führen zu einer erheblichen Datenbewegung zwischen Speicher und Cache. Durch die Implementierung dedizierter Algorithmen, die Cache-Konflikte minimieren, beschleunigt BLAS diesen Prozess erheblich.
Während moderne Compiler zur Codeoptimierung beitragen, können sie die speziellen Techniken, die in BLAS-Implementierungen wie ATLAS, GotoBLAS und OpenBLAS verwendet werden, nicht vollständig kompensieren.
Von BLAS verwendete Algorithmen
BLAS verwendet keine komplexen Algorithmen wie Coppersmith-Winograd oder Strassen aus folgenden Gründen:
Das obige ist der detaillierte Inhalt vonWarum ist BLAS so viel schneller als meine Matrixmultiplikationsimplementierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!