- Modern yüksek seviyeli programlama dilleri ve gelişmiş derleyiciler, yazılım geliştirmeyi büyük ölçüde basitleştirip maliyeti düşürse de, API verimsizlikleri nedeniyle modern donanımın performans yeteneklerini gizleme eğiliminde
- FFmpeg geliştiricilerine göre, assembly kodu kullanımı iş yüküne bağlı olarak performansı 3 kat ile 94 kat arasında artırabiliyor
- FFmpeg içindeki belirli işlevleri hızlandırmak için AVX-512 komut setini kullanan optimize edilmiş kod yolları oluşturuldu ve standart uygulamaya kıyasla çok daha yüksek performans elde edildi
- AVX-512, 512 bitlik register'lar kullanarak tek işlemde 16 tek duyarlıklı FLOP veya 8 çift duyarlıklı FLOP işleyebildiği için büyük miktarda veriyi paralel olarak işleyebiliyor
- Benchmark sonuçlarına göre yeni elle yazılmış AVX-512 kod yolu, referans C kodu ile AVX2 ve SSE3 gibi daha düşük SIMD komut setlerini kullanan diğer uygulamalardan belirgin biçimde daha hızlı
- Bu geliştirme, özellikle AVX-512 destekli donanım kullanan kullanıcılar için faydalı ve medya içeriklerini çok daha verimli işlemeyi mümkün kılıyor
- Ancak Intel, 12., 13. ve 14. nesil Core işlemcilerde AVX-512'yi devre dışı bıraktığı için bu CPU'ların sahipleri bu özelliği kullanamıyor
- Buna karşılık AMD'nin Ryzen 9000 serisi CPU'ları tamamen etkin AVX-512 FPU ile geliyor; bu sayede bu işlemcilerin sahipleri FFmpeg'in bu kazanımlarından yararlanabiliyor
- Ne yazık ki AVX-512'nin karmaşıklığı ve uzmanlık gerektiren yapısı nedeniyle bu tür optimizasyonlar genellikle performansın kritik olduğu uygulamalarla sınırlı kalıyor ve düşük seviyeli programlama ile işlemci mikro mimarisi konusunda uzmanlık gerektiriyor
( Bu içerik, Tom's Hardware'deki FFmpeg devs boast of up to 94x performance boost after implementing handwritten AVX-512 assembly code yazısından alınmıştır )
6 yorum
Eskiden bununla ilgili kısa bir çalışma yapmış biri olarak söyleyebilirim ki, öncelikle 94 sayısı clickbait.
Yorumlarda da belirtildiği gibi, performans farkının büyük görünmesinin nedeni skaler/vektör kod farkı.
Ama ticari codec'lerin çoğu optimizasyonu assembly yazarak yapar.
"C kodlarının çoğu en iyi assembly koduna derlenir" ifadesi doğru sayılır, ancak ticari ürün geliştirmek için o "çoğu" seviyesinin üstüne çıkmak gerekir. Özellikle embedded tarafında bu daha da önemlidir.
Hacker News yorumları
Intel’in yeni Downfall AVX2/AVX-512 açığı ve bunun yol açtığı devasa performans etkisi
https://tuxcare.com/ko/blog/…
Ah, demek Intel AVX-512’yi bu yüzden geri çekmiş.
Sanırım asıl neden bu değil; E-core'lar AVX-512'yi desteklemediği için bunun yazılım düzeyinde engellendiğini biliyorum.
P-core'lar ise gayriresmî olarak AVX-512 desteğine sahipti.
Anladım. Haber verdiğiniz için teşekkürler :)