Threadripper dostał 215% wydajności w HandBrake. Winna była kiepska obsługa wielu wątków
AMD znalazło dwa błędy w HandBrake, które na wielordzeniowych układach Threadripper prowadziły do spadków wydajności zamiast wzrostu. Po aktualizacji do wersji 1.11.0 użytkownicy mogą zyskać nawet 215% w kodowaniu H.264. Wystarczy zaktualizować program, by odblokować pełnię mocy 64-96 rdzeni.
Co wspólnego ma 64-rdzeniowy Threadripper z 60-procentowym spadkiem wydajności? Okazuje się, że winę ponosi nie słabe chłodzenie ani źle dobrana płyta główna, lecz archaiczny kod w HandBraku. AMD znalazło dwa konkretne wąskie gardła, które sprawiały, że topowe procesory serwerowo-stacjonarne pracowały jak przeciętny pecet. Po aktualizacji do HandBrake 1.11.0 użytkownicy Threadrippera mogą liczyć na 215-procentowy skok wydajności w kodowaniu H.264.
Dwa błędy, które dusiły Threadrippera
AMD odkryło, że HandBrake nie był w stanie efektywnie zarządzać systemami z więcej niż 64 procesorami logicznymi. W praktyce oznaczało to, że przy układach Threadripper pracujących z 128 wątkami część rdzeni po prostu siedziała bezczynnie zamiast przetwarzać materiał. Do tego dochodził drugi problem - zbyt małe zadania (job size) generowały ogromny narzut związany z harmonogramowaniem wątków, który zjadał czas zamiast przyspieszać transkodowanie. W skrajnym przypadku, jak podaje TechPowerUp powołujący się na blog AMD, wydajność potrafiła spaść o 60% przy próbie wykorzystania większej liczby rdzeni.
Konkretne liczby: od 16% do 215%
Naprawa threading management i job schedulingu przyniosła spektakularne efekty. W testach z użyciem Threadrippera 7980X (64 rdzenie/128 wątków) z 128 GB DDR5-5600 i kartą Radeon RX 9070 XT osiągnięto następujące przyrosty:
- Perfume H.264 720p - +215%
- LG_8K HEVC 8-bit 4320p - +203%
- LG 8K 60 FPS HEVC 10-bit 4320p - +105%
W przypadku jeszcze potężniejszego Threadrippera PRO 9995WX (96 rdzeni/192 wątków) z tą samą kartą graficzną przyrosty sięgały: 181% w Perfume H.264 720p, 151% w Perfume HEVC 10-bit 2160p i 149% w LG_8K HEVC 8-bit 4320p. Jak widać, im więcej rdzeni, tym większe znaczenie miała optymalizacja - w przypadku 96-rdzeniowego modelu wzrosty są wprawdzie niższe procentowo w stosunku do 64-rdzeniowego, ale wciąż imponujące. W pozostałych testowanych scenariuszach poprawa wynosiła od 16% do 215%.
Co musisz zrobić, by skorzystać?
Nie trzeba zmieniać żadnych ustawień, presetów ani workflowu - wystarczy zaktualizować HandBrake do wersji 1.11.0 lub dowolnej późniejszej. AMD wprowadziło poprawki bezpośrednio do kodu źródłowego, więc użytkownicy otrzymują je wraz z normalną aktualizacją. To rzadki przypadek, kiedy bez żadnych kosztów i nakładu pracy można podwoić lub nawet potroić wydajność kodowania. Dla każdego, kto na Threadripperze montuje filmy, kompresuje nagrania czy tworzy archiwa, to de facto darmowe przyspieszenie.
Oby więcej producentów sprzętu tak poważnie traktowało optymalizację softwarową - bo widać, że czasem to nie nowa karta czy więcej rdzeni, ale porządny kod odblokowuje prawdziwą moc.