- आधुनिक high-level programming languages और उन्नत compilers software development को काफी सरल बनाते हैं और लागत घटाते हैं, लेकिन API की अक्षमताओं के कारण वे अक्सर आधुनिक hardware की performance capabilities को छिपा देते हैं
- FFmpeg developers के अनुसार, assembly code का उपयोग करने पर workload के हिसाब से performance में 3 गुना से 94 गुना तक सुधार हो सकता है
- FFmpeg के भीतर कुछ विशेष functions को तेज़ करने के लिए AVX-512 instruction set का उपयोग कर optimized code paths बनाए गए, और standard implementation की तुलना में कहीं बेहतर performance हासिल की गई
- AVX-512, 512-bit registers का उपयोग करता है, जिससे एक ही operation में 16 single-precision FLOP या 8 double-precision FLOP को process किया जा सकता है, इसलिए बड़े पैमाने पर data को parallel में संभाला जा सकता है
- benchmarking results के अनुसार, नया handwritten AVX-512 code path baseline C code, AVX2 और SSE3 जैसे lower SIMD instruction sets वाली अन्य implementations की तुलना में काफी तेज़ है
- यह development खास तौर पर उन users के लिए उपयोगी है जो AVX-512 support वाले hardware पर काम करते हैं, क्योंकि वे media content को कहीं अधिक दक्षता से process कर सकते हैं
- हालांकि, Intel ने 12th-gen, 13th-gen और 14th-gen Core processors में AVX-512 को disable कर दिया है, जिससे इन CPU के मालिक इसका उपयोग नहीं कर सकते
- दूसरी ओर, AMD की Ryzen 9000 series CPU में पूरी तरह enabled AVX-512 FPU मिलता है, इसलिए इन processors के मालिक FFmpeg के इस सुधार का लाभ उठा सकते हैं
- दुर्भाग्य से, AVX-512 की जटिलता और विशिष्टता के कारण ऐसे optimizations आम तौर पर performance-critical applications तक सीमित रहते हैं, और इनके लिए low-level programming तथा processor microarchitecture की विशेषज्ञ समझ चाहिए
( यह सामग्री Tom's Hardware के FFmpeg devs boast of up to 94x performance boost after implementing handwritten AVX-512 assembly code से ली गई है )
6 टिप्पणियां
पहले इस तरह के संबंधित काम को थोड़े समय के लिए करने का अनुभव रहा है, इसलिए कहूँ तो सबसे पहले 94x एक attention-grabber है।
जैसा कि टिप्पणियों में कहा गया है, scalar/vector code के अंतर की वजह से performance में बड़ा फर्क दिखा है।
लेकिन ज़्यादातर commercial codec assembly coding के ज़रिए optimization करते हैं।
"ज़्यादातर C code optimal assembly code में compile हो जाता है" यह बात सही है, लेकिन commercial product विकसित करने के लिए उस "ज़्यादातर" स्तर से ऊपर जाना पड़ता है। खासकर embedded क्षेत्र में यह और भी महत्वपूर्ण है।
Hacker News राय
Intel की नई Downfall AVX2/AVX-512 vulnerability और इसके कारण पड़ने वाला भारी performance impact
https://tuxcare.com/ko/blog/…
आह, तो Intel ने AVX-512 को हटाया ही इसलिए था।
मेरा मानना है कि वजह उससे ज़्यादा यह थी कि E-core AVX-512 को सपोर्ट नहीं करते थे, इसलिए इसे software स्तर पर ब्लॉक किया गया था।
P-core अनौपचारिक रूप से AVX-512 को सपोर्ट करते थे।
अच्छा, समझ गया। बताने के लिए धन्यवाद :)