Viktigt videoprogram blir 94 gånger snabbare

Permalänk
Melding Plague

Viktigt videoprogram blir 94 gånger snabbare

Utvecklarna av FFmpeg har skrivit om delar av koden för hand i assembler, med extrema resultat.

Läs hela artikeln här

Visa signatur

Observera att samma trivselregler gäller i kommentarstrådarna som i övriga forumet och att brott mot dessa kan leda till avstängning. Kontakta redaktionen om du vill uppmärksamma fel i artikeln eller framföra andra synpunkter.

Permalänk
Medlem

För en sekund tänkte jag "Goda nyheter för min rpi nas som kör en jellyfin server!" Sedan läste jag avx512.. oh well..

Ärligt talat låter det nästan mer som att det är implementeringen av avx512 som gett prestandafördelen, inte att det var handskrivet i assembler. Kompilatorerna är rätt jäkla smarta idag, så ett sådant resultat hade förvånat mig.

Permalänk
Medlem
Skrivet av DevilsDad:

Ärligt talat låter det nästan mer som att det är implementeringen av avx512 som gett prestandafördelen, inte att det var handskrivet i assembler. Kompilatorerna är rätt jäkla smarta idag, så ett sådant resultat hade förvånat mig.

Ja, det är ju hela grejen. Den enda haken, som ger något som helst vikt till "handskrivet" är väl då att kompilatorn uppenbart inte själv optimerar till den grad att den använder AVX512 i dessa fall.

Visa signatur

Desktop spel m.m.: Ryzen 9800X3D || MSI X870 Tomahawk Wifi || Sapphire Pulse RX 7900 XTX || Gskill FlareX 6000 64GB || Kingston KC3000 2TB || Samsung 970 EVO Plus 2TB || Samsung 960 Pro 1TB || Fractal Torrent || Asus PG42UQ 4K OLED
Arbetsstation: Ryzen 7945HX || Minisforum BD790i || Asus Proart 4070 Ti Super || Kingston Fury Impact 5600 65 GB || WD SN850 2TB || Samsung 990 Pro 2TB || Fractal Ridge
Proxmox server: Ryzen 5900X || Asrock Rack X570D4I-2T || Kingston 64GB ECC || WD Red SN700 1TB || Blandning av WD Red / Seagate Ironwolf för lagring || Fractal Node 304

Permalänk
Medlem

Låter intressant med dessa optimeringar, skulle vi kunna se lite snabbtester gjorda av er tro? Om möjligt förslagsvis se Zen 4, 5 och Intel 14, Arrow Lake. (skulle inte säga nej med ett utökat test inkluderat Intel 13 och Zen 3)

Permalänk
Inaktiv
Skrivet av HappyPie:

Låter intressant med dessa optimeringar, skulle vi kunna se lite snabbtester gjorda av er tro? Om möjligt förslagsvis se Zen 4, 5 och Intel 14, Arrow Lake. (skulle inte säga nej med ett utökat test inkluderat Intel 13 och Zen 3)

Nu orkade jag inte efterforska allt för mycket, hade vart trevligt om det stod i nyheten, men vad jag kan se så är det inte en decoder eller encoder som har optimerats här, jag gissar på att det är någon form av funktion/converter som troligen inte är någon nämnvärd flaskhalls så i praktiken för ffmpeg användare så kommer det nog inte märkas.

Som en fingervisning när det har implementerats i en video-encoder så har x265 AVX512 stöd, där ger det runt 10% på nyare Xeon och Zen5.

Permalänk
Medlem
Skrivet av evil penguin:

Ja, det är ju hela grejen. Den enda haken, som ger något som helst vikt till "handskrivet" är väl då att kompilatorn uppenbart inte själv optimerar till den grad att den använder AVX512 i dessa fall.

Nu har jag dålig koll på exakt hur avx-instruktionerna fungerar, men vad är det som gör att det krävs handpåläggning för att utnyttja dem? Är stödet hos kompilatorer fortfarande omoget? Är det svårt att skriva kod som garanterar går att kompileras till avx-instruktioner?

Permalänk
99:e percentilen

Låt säga att man har en Ryzen 9000. Vad är ett exempel på ett verkligt scenario där man kommer märka skillnad? (Hittade inget sådant i Tom's Hardwares artikel heller.)

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem
Skrivet av Alling:

Låt säga att man har en Ryzen 9000. Vad är ett exempel på ett verkligt scenario där man kommer märka skillnad? (Hittade inget sådant i Tom's Hardwares artikel heller.)

Dvs artikeln är mest clickbait. Tråkigt.

Permalänk
Medlem

(Varför vill man spela upp en film 94 gånger snabbare? )
Är det att en filmSnutt som encodeas på 1.5 min istället bara tar ~1 sek?

edit: Min nuvarande gissning är att det tar mindre (1/94:e del) cpukraft att spela upp en film... rätt?

Permalänk
Medlem

Clickbait

Visa signatur

DAN Cases A4-SFX | AMD Ryzen 7 9800X3D | Thermalright AXP90-X47 Full Copper |
INNO3D GeForce RTX 4070 Ti SUPER 16GB Twin X2 | Kingston 32GB (2x16GB) DDR5 6000MHz CL30 | ASUS ROG Strix B650E-I Gaming WIFI | Samsung 960 EVO 1TB | Corsair SF-600

Permalänk
Medlem
Skrivet av hejsann:

(Varför vill man spela upp en film 94 gånger snabbare? )
Är det att en filmSnutt som encodeas på 1.5 min istället bara tar ~1 sek?

edit: Min nuvarande gissning är att det tar mindre (1/94:e del) cpukraft att spela upp en film... rätt?

FFmpeg används till många saker som definitivt kan dra nytta av snabbare bearbetning.

Permalänk
Medlem
Skrivet av DevilsDad:

För en sekund tänkte jag "Goda nyheter för min rpi nas som kör en jellyfin server!" Sedan läste jag avx512.. oh well..

Ärligt talat låter det nästan mer som att det är implementeringen av avx512 som gett prestandafördelen, inte att det var handskrivet i assembler. Kompilatorerna är rätt jäkla smarta idag, så ett sådant resultat hade förvånat mig.

https://x.com/FFmpeg/status/1852542388851601913

Permalänk
Medlem

Kanske väldigt bra för mediastickor och bärbara enheter framöver?
Att det antingen drar mycket mindre energi eller slukar betydligt mindre resurser i systemet, eller både och såklart?
Kan svagare hårdvara hantera videoredigering bättre så det blir billigare med datorer för media?

Permalänk
Medlem
Skrivet av Fearnox:

Kanske väldigt bra för mediastickor och bärbara enheter framöver?
Att det antingen drar mycket mindre energi eller slukar betydligt mindre resurser i systemet, eller både och såklart?
Kan svagare hårdvara hantera videoredigering bättre så det blir billigare med datorer för media?

Förutsätter ju att den CPU som sitter i din mediesticka har AVX512-instruktionsset:
https://en.wikipedia.org/wiki/AVX-512#CPUs_with_AVX-512

Permalänk
Medlem

AI-genererad assembly-kod inc

Visa signatur

| Corsair Crystal 460X | Z390-F | 9700K | ROG Ryujn 360mm | RTX 3080Ti | ROG Thor 850W | Vengeance Pro 3200mhz 16cl 16GB (2x8) | 970 Pro 2TB + 2xWD Black 4TB | ROG SWIFT PG279Q | Arctis 7 Pro Wireless | ROG Scope Deluxe red silent | ROG Chakram |

Permalänk
Medlem
Skrivet av hejsann:

(Varför vill man spela upp en film 94 gånger snabbare? )
Är det att en filmSnutt som encodeas på 1.5 min istället bara tar ~1 sek?

edit: Min nuvarande gissning är att det tar mindre (1/94:e del) cpukraft att spela upp en film... rätt?

Snabbare uppspelning gynnar också encoding. För att koda om en video behöver originalet spelas upp (avkodas). Finns många anledningar att att kunna spela upp videor snabbt, kanske någon AI som ska lära sig något snabbare än realtid.

Osäker på vad som optimerats i ffmpeg. Programmet används till olika saker. Det är både ljud och video som kan avkodas och kodas och mixas på olika sätt.

Permalänk
Medlem

Som artikeln nämner så är det de stora streamingföretagen som tjänar mest på detta. De som hanterar stora mängder videoinnehåll, kan dra nytta av snabbare kodning och avkodning, vilket förbättrar effektiviteten i deras tjänster.

Visa signatur

CPU : Intel Core i9 9900K
Moderkort : Asus ROG STRIX Z390-F GAMING
Grafikkort : Asus GeForce RTX 3080 TUF Gaming OC
Skärm: Acer Predator X34GS 180Hz

Permalänk
Hedersmedlem

Vet inte om man ska kalla det clickbait eller missuppfattning, men ffmpeg i helhet blir 100% garanterat inga 3 gånger snabbare av detta, för att inte nämna 94 gånger...

Ett fåtal funktioner av sannolikt tiotusentals tjänar bra på AVX-512, är vad vi kan säga från Twitter-inlägget. Detta är är alltså s.k. microbenchmarks, som testar en pytteliten del av något stort.

Från en slide ang just ffmpeg och AVX-512:

Citat:

dav1d project added AVX-512 support
• AV1 decoding, particularly beneficial owing to large block sizes
• 10-20% faster *overall* decoding

Om dav1d tjänar 10-20% i decoding på detta så kommer inte ffmpeg tjäna 3-94 gånger.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
NAS: 6700K/16GB/Debian+ZFS | Backup (offsite): 9600K/16GB/Debian+ZFS

Permalänk
Medlem

oj, förlåt, dricker ju inte ens kaffe och här höll jag på att dricka upp glöggen efter att.. nåväl.
erbjöd mig plita ihop en riiiktigt dålig kompilator åt en mer kompetent it-bekant som råkade håva in jättemånga timmars utvecklingstid till nåt som behövdes av nån kund för de han jobbar åt, härom veckan.
borland var ju kul, vad vi skulle med see hashtag förstår jag fortfarande inte, och vill nog bara att folk ska sluta säga 'seequel', men den båten gick ju i förran förrgår.
hej.

Visa signatur

Gapar ofta efter galen fågel i fel tunna.

Permalänk
Medlem

AVX2 är ju inte fyskam det heller, ger ganska bra ökning det också.

Visa signatur

< :: Intel i9 9900ks@5.0Ghz/Ring@4.5Ghz | 32Gb DDR4@3600Mhz | Geforce RTX 4070 :: >

Permalänk
Medlem
Skrivet av anon75480:

Som en fingervisning när det har implementerats i en video-encoder så har x265 AVX512 stöd, där ger det runt 10% på nyare Xeon och Zen5.

Jag uppgraderade nyligen från en 5950X till en 9950X som ju har stöd för AVX512. Skillnaden är helt galen, minst 400% snabbare. 9950X kan koda 2 videos snabbare än vad min 5950X gör 1 video - och det med ett långsammare preset (x265 slow vs x265 medium på den gamla - slow tar typiskt mer än dubbelt så lång tid som medium).

Visa signatur

Lian-Li LanCool 216, ASRock B650E Taichi Lite, Ryzen 9950X, Arctic Liquid Freezer III 360, 64GB Kingston CL30/6000 RAM, MSI RTX 3090 Suprim X, 5TB NVMe SSD + 16TB SATA SSD, Seasonic Focus GX 1000W, LG 32GP850 + LG 42C2 OLED

Permalänk
Medlem

Tänk hur mycket energi man kan spara med sådan effektivisering.

Visa signatur

Citera för svar

Permalänk
Medlem
Skrivet av osgorth:

Jag uppgraderade nyligen från en 5950X till en 9950X som ju har stöd för AVX512. Skillnaden är helt galen, minst 400% snabbare. 9950X kan koda 2 videos snabbare än vad min 5950X gör 1 video - och det med ett långsammare preset (x265 slow vs x265 medium på den gamla - slow tar typiskt mer än dubbelt så lång tid som medium).

Jäklar! Inte illa. Jag som rippar mina filmer till ett eget digitalt bibliotek blir sjukt sugen på att uppgradera. Men det får vänta nåt år tills priserna sjunkit.

Permalänk
Medlem
Skrivet av osgorth:

Jag uppgraderade nyligen från en 5950X till en 9950X som ju har stöd för AVX512. Skillnaden är helt galen, minst 400% snabbare. 9950X kan koda 2 videos snabbare än vad min 5950X gör 1 video - och det med ett långsammare preset (x265 slow vs x265 medium på den gamla - slow tar typiskt mer än dubbelt så lång tid som medium).

Inte illa. Då du kör med "slow" antar jag att du fokuserar på kvalitet snarare än filstorlek (även om man såklart kan se olika på saken), men hur står detta sig emot Nvidias, AMDs eller Intels GPU-encoding hastighetsmässigt?

Visa signatur

ASUS P8Z68-v Pro i7 2600K@4.5, 32GB RAM, RX 580, 4K Samsung u24e590, Intel SSD, Seagate SSHD, LG BH16NS55 BD/RW, MacOS Sonoma, Win 10+11, Linux Mint
***gamla grejor duger***
Macbook Pro 2009, 8GB RAM, SSD, MacOS Catalina + Windows 10; Macbook Pro 2015 16GB RAM 512GB SSD Radeon Mojave

Permalänk
Datavetare

Varför skriver man detta med assembler 2024?

Intel brände sig rejält på att tro att man kunde ta "vanlig" C eller C++ kod och från det generera bra SIMD-optimerad kod. Visade sig att det inte går utanför ett par rätt nischade fall p.g.a. att det helt enkelt saknas kritisk information för kompilatorn givet hur dessa språk definieras.

Är just detta problem Nvidia knäckte med CUDA och faktiskt även Intel knäckt för CPUer med deras ISPC-kompilator (som till deras fasa dess initiala grundare lade till ARM64 stöd för direkt efter han slutade på Intel, så med ISPC får man inte bara SSE, AVX, AVX2, AVX-512 stöd utan man får även NEON-stöd för ARM64).

Skrivet av Thomas:

Vet inte om man ska kalla det clickbait eller missuppfattning, men ffmpeg i helhet blir 100% garanterat inga 3 gånger snabbare av detta, för att inte nämna 94 gånger...

Ett fåtal funktioner av sannolikt tiotusentals tjänar bra på AVX-512, är vad vi kan säga från Twitter-inlägget. Detta är är alltså s.k. microbenchmarks, som testar en pytteliten del av något stort.

Från en slide ang just ffmpeg och AVX-512:
Om dav1d tjänar 10-20% i decoding på detta så kommer inte ffmpeg tjäna 3-94 gånger.

Exakt, det som nämns är att en specifik funktion såg x94 gånger speedup. Och det från ANSI-C versionen som helt saknar SIMD-optimeringar. I det specifika fallet blev ökningen i den funktionen x1,4 över AVX2.

Det stora lyftet kommer när man går till SSSE3, efter det är det relativt små ökningar.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem
Skrivet av Pirum:

Inte illa. Då du kör med "slow" antar jag att du fokuserar på kvalitet snarare än filstorlek (även om man såklart kan se olika på saken), men hur står detta sig emot Nvidias, AMDs eller Intels GPU-encoding hastighetsmässigt?

Precis, jag försöker skada filmerna så lite som möjligt. Har ett gediget bibliotek av fysisk media, som jag lägger på min NAS för enklare åtkomst.

Hårdvarukodning är ljusår efter vad gäller både kvalitet och filstorlek. De är rejält mycket snabbare (särskilt NVENC är galet snabb) men kvaliteten och filstorleken framförallt lämnar mycket att önska. De är nog mer tune:ade för streaming där prestanda är mer viktigt. Definitivt inget du använder för ditt filmbibliotek!

Visa signatur

Lian-Li LanCool 216, ASRock B650E Taichi Lite, Ryzen 9950X, Arctic Liquid Freezer III 360, 64GB Kingston CL30/6000 RAM, MSI RTX 3090 Suprim X, 5TB NVMe SSD + 16TB SATA SSD, Seasonic Focus GX 1000W, LG 32GP850 + LG 42C2 OLED

Permalänk
Medlem
Skrivet av Yoshman:

Exakt, det som nämns är att en specifik funktion såg x94 gånger speedup. Och det från ANSI-C versionen som helt saknar SIMD-optimeringar. I det specifika fallet blev ökningen i den funktionen x1,4 över AVX2.

Det är till och med värre än så. Enligt Hacker News så implementerar den naiva C-versionen ett 8-tap filter medan SIMD-varianterna implementerar ett billigare 6-tap filter, och jämförelsen gjordes med optimeringar av (-O0).

Det är heller inte en optimering i FFMPEG utan i dav1d som FFMPEG och många andra program använder.

Permalänk
Skrivet av Alling:

Låt säga att man har en Ryzen 9000. Vad är ett exempel på ett verkligt scenario där man kommer märka skillnad? (Hittade inget sådant i Tom's Hardwares artikel heller.)

Phoronix har en del tester med AVX 512. Zen 5 är bra men det handlar snarast om dubbelt så snabb....

Permalänk
99:e percentilen
Skrivet av Greyguy1948:

Phoronix har en del tester med AVX 512. Zen 5 är bra men det handlar snarast om dubbelt så snabb....

Skulle du kunna länka till källan du hänvisar till? Tack på förhand!

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem

Har inte kollat mycket på senste generationerna. Men min uppfattning är att CPU-encodad film fortfarande är mycket bättre när det kommer till kvalitet vid en given komprimeringsgrad jämfört med hårdvaran i GPU. Så för den som kör CPU-baserad encoding kan det såklart vara värt. Oklart såklart hur mycket dessa enskilda instruktioner gör för totalen, men det får vi förhoppningsvis se framöver.

Skrivet av anon75480:

Nu orkade jag inte efterforska allt för mycket, hade vart trevligt om det stod i nyheten, men vad jag kan se så är det inte en decoder eller encoder som har optimerats här, jag gissar på att det är någon form av funktion/converter som troligen inte är någon nämnvärd flaskhalls så i praktiken för ffmpeg användare så kommer det nog inte märkas.

Som en fingervisning när det har implementerats i en video-encoder så har x265 AVX512 stöd, där ger det runt 10% på nyare Xeon och Zen5.

Som jag förstår det är det instruktioner som används i decoding/encoding. Så beroende på deras vikt i arbetet så kan det nog göra en hel del skillnad totalt vid encoding på CPU.

Skrivet av Alling:

Låt säga att man har en Ryzen 9000. Vad är ett exempel på ett verkligt scenario där man kommer märka skillnad? (Hittade inget sådant i Tom's Hardwares artikel heller.)

Om du väljer att köra på CPU så kan du nog se en hel del skillnad, beroende på hur viktiga dessa instruktioner är för helheten. Kör du på hårdvaruencoder i GPU-delen så händer ingenting. Det sistnämnda är nog ändå snabbast, men med sämre kvalitet.

Skrivet av hejsann:

(Varför vill man spela upp en film 94 gånger snabbare? )
Är det att en filmSnutt som encodeas på 1.5 min istället bara tar ~1 sek?

edit: Min nuvarande gissning är att det tar mindre (1/94:e del) cpukraft att spela upp en film... rätt?

Du kanske vill encoda film snabbare?

Skrivet av MrBicce:

Som artikeln nämner så är det de stora streamingföretagen som tjänar mest på detta. De som hanterar stora mängder videoinnehåll, kan dra nytta av snabbare kodning och avkodning, vilket förbättrar effektiviteten i deras tjänster.

Streamingföretagen kör nog inte på CPU-baserad encoding/decoding. Men det är klart, blir det tillräckligt effektivt så kan man nog uppnå samma kvalitet på mindre bandbredd med bra CPU-encoding.
EDIT: Fick en släng av dum. Klart streamingföretagen prioriterar effektivt komprimerade filer framför encodinghastighet.

Skrivet av Thomas:

Vet inte om man ska kalla det clickbait eller missuppfattning, men ffmpeg i helhet blir 100% garanterat inga 3 gånger snabbare av detta, för att inte nämna 94 gånger...

Ett fåtal funktioner av sannolikt tiotusentals tjänar bra på AVX-512, är vad vi kan säga från Twitter-inlägget. Detta är är alltså s.k. microbenchmarks, som testar en pytteliten del av något stort.

Från en slide ang just ffmpeg och AVX-512:
Om dav1d tjänar 10-20% i decoding på detta så kommer inte ffmpeg tjäna 3-94 gånger.

Assembler-kodat AVX-512 stöd var väl just för att få det bra tillämpat där en vanlig kompilator misslyckas. Kan nog bli mer än 10-20% i slutändan.

Skrivet av Greyguy1948:

Phoronix har en del tester med AVX 512. Zen 5 är bra men det handlar snarast om dubbelt så snabb....

Det är väl bara AVX 512? Inte assemblerkodad AVX 512 som nyheten avser?