- Bahasa pemrograman tingkat tinggi modern dan compiler canggih modern sangat menyederhanakan pengembangan perangkat lunak serta menurunkan biaya, tetapi karena inefisiensi API, keduanya cenderung menyembunyikan kemampuan performa perangkat keras modern
- Menurut para pengembang FFmpeg, penggunaan kode assembly dapat meningkatkan performa dari 3 kali hingga 94 kali, tergantung pada bebannya
- Untuk mempercepat fungsi tertentu di dalam FFmpeg, mereka membuat jalur kode yang dioptimalkan menggunakan set instruksi AVX-512, dan mampu mencapai performa yang jauh lebih cepat dibanding implementasi standar
- AVX-512 menggunakan register 512-bit sehingga dapat memproses 16 single-precision FLOP atau 8 double-precision FLOP dalam satu operasi, memungkinkan pemrosesan data dalam jumlah besar secara paralel
- Hasil benchmarking menunjukkan bahwa jalur kode AVX-512 baru yang ditulis tangan jauh lebih cepat dibanding kode C acuan maupun implementasi lain yang memakai set instruksi SIMD yang lebih rendah seperti AVX2 dan SSE3
- Pengembangan ini sangat berguna khususnya bagi pengguna yang menjalankan perangkat keras dengan dukungan AVX-512, karena dapat memproses konten media dengan jauh lebih efisien
- Namun, Intel menonaktifkan AVX-512 pada prosesor Core generasi ke-12, ke-13, dan ke-14, sehingga pemilik CPU ini tidak dapat menggunakannya
- Sebaliknya, CPU AMD Ryzen 9000 series memiliki AVX-512 FPU yang aktif sepenuhnya, sehingga pemilik prosesor ini dapat memanfaatkan hasil kerja FFmpeg tersebut
- Sayangnya, karena kompleksitas dan sifat khusus AVX-512, optimasi seperti ini umumnya terbatas pada aplikasi yang sangat mementingkan performa dan memerlukan keahlian dalam pemrograman tingkat rendah serta mikroarsitektur prosesor
( Konten ini diambil dari Tom's Hardware, FFmpeg devs boast of up to 94x performance boost after implementing handwritten AVX-512 assembly code )
6 komentar
Saya pernah sempat mengerjakan hal terkait sebelumnya, jadi menurut saya angka 94 itu pada dasarnya clickbait.
Seperti yang disebutkan di komentar, perbedaan performa yang besar muncul dari perbedaan antara kode skalar dan vektor.
Namun, sebagian besar codec komersial melakukan optimisasi dengan pemrograman assembly.
Pernyataan bahwa "sebagian besar kode C dikompilasi menjadi kode assembly yang optimal" memang benar, tetapi untuk mengembangkan produk komersial Anda harus melampaui tingkat "sebagian besar" itu. Terutama di ranah embedded, hal ini lebih penting.
Komentar Hacker News
Kerentanan baru Intel Downfall AVX2/AVX-512 dan dampak performa besar yang ditimbulkannya
https://tuxcare.com/ko/blog/…
Ah, jadi karena inilah Intel menarik AVX-512.
Seingat saya, alasannya bukan itu; karena E-core tidak mendukung AVX-512, dukungan tersebut diblokir lewat software.
P-core sebelumnya secara tidak resmi memang mendukung AVX-512.
Begitu ya. Terima kasih sudah memberi tahu saya :)