Der x265-Encoder entwickelt sich...

  • Frohe Weihnachten vom Multicoreware-Team:



    Frisch compilierte Version "merge with stable milestone":


    x265 2.2+2-998d4520d1cf

  • Kürzlich hat BEAMR, ein Mitbewerber auf dem Markt der HEVC-Encoder, sich mit x265 verglichen und behauptet, mit dem eigenen HEVC-Encoder in Version 5 sowohl schneller als auch besser zu sein:


    The Need for Speed: x265 & Beamr 5 Epic Face Off


    Wenig überraschend lief es laut folgender Analyse, soweit das ohne eigene Kopie von Beamr 5 möglich war, offenbar nur auf einer handverlesenen Auswahl von Hardware und Software-Parametern sowie Screenshots bestimmter Frames so scheinbar vorteilhaft.


    Tom Vaughan (Chefentwickler des x265-Projektes bei bei Multicoreware) hat diesen "Vergleich" mal ordentlich zerpflückt:


    Beamr compares their HEVC encoder to x265


    "Epic burn"? ... You decide.

  • Demnächst wird es auch Unterstützung für Visual Studio 2017 geben.


    Ich hoffe, auch eine Unterstützung einer MSYS2-Umgebung wie in der MABS ist möglich. Hier hatte ich Probleme mit der Anpassung der Cross Compilation Toolchain. Bisher compiliere ich abwechselnd unter MinGW32 und MinGW64.

  • Geplant ist die Unterstützung von AVX512 durchaus. Bisher sehe ich aber maximal für AVX2 optimierte Assembler-Routinen.


    AMD-CPUs der Ryzen-Familie haben derzeit eher den Nachteil, dass aufgrund ihrer CCX-Architektur (CPU Complex) nicht alle Kerne unabhängig voneinander gleich effizient arbeiten, sondern bevorzugt Kerne eines CCX untereinander. Applikationen mit sehr hoher Parallelisierung könnten dann wohl die CPU besser auslasten, wenn sie dieses Detail in der Aufteilung der Threads berücksichtigen, nehme ich an (vielleicht so was wie NUMA Sub-Threadpools)... aber was weiß ich schon. :redface:

  • + erst mal auf ein paar Berichte warten wie viel Performance das im Endeffekt wirklich bringt beim normalen Encoden. ;)


    Gibt es denn momentan eine "preiswerte" Consumer CPU, die AVX-512 beherrscht und nicht von Meltdown/Spectre (was ja zu Performance Verlusten führt) betroffen ist?

  • Bisher sind intel Xeon Phi und Skylake (+) noch die einzigen CPUs, die AVX-512 unterstützen. Und selbst die werden ja beim Einsatz von AVX-512-Instruktionen eher mit Halbgas gefahren (wegen der Hitzeentwicklung), also ohne HT oder so, wenn ich mich recht erinnere ... oder? Insofern wäre es doch erstmal vernünftig, Benchmarks von Enthusiasten abzuwarten, wenn hier evtl. die Effizienz der Instruktionen gegen die Effizienz der ganzen CPU-Architektur spielt.

  • Die AVX-512-Patches wurden veröffentlicht. Also compilieren wir mal x265 2.7+332 ...
    _


    Mist.


    Im Modus für 32-bit-Architektur ist die Compilierung nicht möglich. Gibt ja auch keine Nur-32-bit-CPU, die trotzdem AVX-512 unterstützt, und NASM weiß das wohl und jammert gleich über falsche Opcode-Kombinationen. Da muss man wohl noch eine Weiche einbauen, dass der AVX-512-Assemblercode im 32-bit-Modus komplett übergangen wird.
    _


    x265 2.7+332-593e63cda903 (Win64)


    Unterstützung für AVX-512 Assembler-Optimierungen; nicht vergessen: muss manuell mit --asm avx512 in der Kommandozeile aktiviert werden — und nicht die CPU grillen...

  • Nur wenn die Benutzung von AVX-512 erst mal überhaupt erlaubt wird. Nicht jeder wird das automatisch wollen, auch wenn es die CPU kann, eben wegen des bisher noch unklaren Nutzens (stärkere Abwärme und Drosselung des Basistaktes).


    Lies mal den letzten Abschnitt dieses Patches mit der Dokumentation: CPU-Erkennung wird nur freigegeben, wenn vorher ein Flag gesetzt wurde.

  • Bisher sind intel Xeon Phi und Skylake (+) noch die einzigen CPUs, die AVX-512 unterstützen. Und selbst die werden ja beim Einsatz von AVX-512-Instruktionen eher mit Halbgas gefahren (wegen der Hitzeentwicklung), also ohne HT oder so, wenn ich mich recht erinnere ... oder? Insofern wäre es doch erstmal vernünftig, Benchmarks von Enthusiasten abzuwarten, wenn hier evtl. die Effizienz der Instruktionen gegen die Effizienz der ganzen CPU-Architektur spielt.


    Hier ist ne Auflistung, welche CPUs AVX-512 unterstützen (und auch was davon)
    https://en.wikipedia.org/wiki/AVX-512#CPUs_with_AVX-512


    Dort sind auch die Ice Lake Processoren (kommen 2018 oder 2019) gelistet, die wohl die ersten ohne Meltdown und Spectre sein könnten.



    Durch den niedrigen CPU Takt läuft natürlich jede andere Software, die parallel zum avx-512 Code (und auch bei avx2) läuft, langsamer.


    Bei Videokodierung fällt mir da ein:


    z.B. Software-Dekodierung von 4k/8k (gibt es Software-Decoder mit avx2 / avx-512?)
    oder Video-Filter


    Speziell der eine oder andere Videofilter braucht sehr viel CPU Leistung, dass könnte sich schon auswirken. In weiteren Tests müsste man auch Videofilter/Software-Dekodierung einbeziehen.
    Ob man da nicht mehr verliert, als man durch avx-512 beim Encoder wieder gewinnt.

  • Weitere Benchmarks bei doom9 zeigen, dass es stark vom Faktor der Untertaktung in AVX-Phasen abhängt. Allerdings vielleicht noch mehr davon, wie lückenlos die CPU in AVX-Modi operieren kann: Das Umschalten zwischen den Betriebsmodi kann die CPU wohl jedes Mal bis zu 1 ms aufhalten.