- Moderne Hochsprachen und fortschrittliche Compiler vereinfachen die Softwareentwicklung erheblich und senken die Kosten, neigen aber aufgrund ineffizienter APIs dazu, die Leistungsmerkmale moderner Hardware zu verbergen
- Laut den FFmpeg-Entwicklern kann der Einsatz von Assembly-Code je nach Workload die Performance um das 3- bis 94-Fache steigern
- Um bestimmte Funktionen in FFmpeg zu beschleunigen, wurden optimierte Codepfade mit dem AVX-512-Befehlssatz erstellt, wodurch im Vergleich zur Standardimplementierung eine deutlich höhere Performance erzielt werden konnte
- AVX-512 verwendet 512-Bit-Register und kann in einer einzelnen Operation 16 Single-Precision-FLOPs oder 8 Double-Precision-FLOPs verarbeiten, was die parallele Verarbeitung großer Datenmengen ermöglicht
- Benchmark-Ergebnisse zeigen, dass der neue handgeschriebene AVX-512-Codepfad deutlich schneller ist als die Referenz in C und andere Implementierungen mit kleineren SIMD-Befehlssätzen wie AVX2 und SSE3
- Diese Entwicklung ist besonders nützlich für Nutzer, die auf Hardware mit AVX-512-Unterstützung arbeiten, da sich Medieninhalte damit wesentlich effizienter verarbeiten lassen
- Allerdings hat Intel AVX-512 in Core-Prozessoren der 12., 13. und 14. Generation deaktiviert, sodass Besitzer dieser CPUs es nicht nutzen können
- AMDs CPUs der Ryzen-9000-Serie verfügen dagegen über eine vollständig aktivierte AVX-512-FPU, sodass Besitzer dieser Prozessoren von den Verbesserungen in FFmpeg profitieren können
- Wegen der Komplexität und Spezialisierung von AVX-512 bleiben solche Optimierungen leider meist auf performancekritische Anwendungen beschränkt und erfordern Fachwissen in Low-Level-Programmierung und Prozessor-Mikroarchitektur
( Dieser Inhalt stammt aus Tom's Hardware: FFmpeg devs boast of up to 94x performance boost after implementing handwritten AVX-512 assembly code )
6 Kommentare
Ich habe früher kurz an ähnlichen Arbeiten mitgewirkt, daher dazu ein paar Worte: Diese 94 sind zunächst einmal Clickbait.
Wie in den Kommentaren bereits gesagt wurde, ist der große Leistungsunterschied auf den Unterschied zwischen Skalar- und Vektor-Code zurückzuführen.
Die meisten kommerziellen Codecs werden jedoch per Assembler-Coding optimiert.
„Der Großteil von C-Code wird zu optimalem Assembler-Code kompiliert“ ist zwar grundsätzlich richtig, aber um ein kommerzielles Produkt zu entwickeln, muss man über dieses Niveau hinausgehen. Besonders im Embedded-Bereich ist das noch wichtiger.
Hacker-News-Kommentare
gccvergleichen.Neue Intel-Downfall-Sicherheitslücke bei AVX2/AVX-512 und ihre enormen Auswirkungen auf die Leistung
https://tuxcare.com/ko/blog/…
Ah, aus diesem Grund hat Intel AVX-512 also abgeschafft.
Soweit ich weiß, liegt es weniger an diesem Grund, sondern daran, dass die E-Cores AVX-512 nicht unterstützen und es deshalb softwareseitig deaktiviert wurde.
Die P-Cores unterstützten AVX-512 inoffiziell.
Ach so. Danke für den Hinweis :)