High-Performance FP16 General Matrix Multiplication on NVIDIA Ada Lovelace via CUTLASS and WMMA: A Benchmark and Pipeline-Depth Analysis
यह शोध पत्र NVIDIA के Ada Lovelace RTX 4060 पर cuBLAS, CUTLASS और कस्टम WMMA कार्यान्वयन पर FP16 GEMM प्रदर्शन का बेंचमार्किंग करता है, जो यह प्रकट करता है कि तीन की पाइपलाइन गहराई और विशिष्ट टाइल ज्यामिति (tile geometry) के साथ 52.7% पीक थ्रूपुट प्राप्त होता है और यह प्रदर्शित करता है कि पाइपलाइन गहराई के बजाय शेयर्ड-मेमोरी दबाव (shared-memory pressure), आगे के अनुकूलन को सीमित करने वाला प्राथमिक बॉटलनेक है।
मूल पेपर CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आपके पास एक सुपर-फास्ट किचन (एक GPU) है जिसमें टेंसर कोर्स (Tensor Cores) नामक विशेषज्ञ शेफ की एक टीम है। ये शेफ सामग्री को काटने और मिलाने (मैट्रिक्स मल्टीप्लिकेशन) में अविश्वसनीय रूप से तेज़ हैं ताकि एक विशाल दावत (डीप लर्निंग) तैयार की जा सके। नए "एडा लवलेस" (Ada Lovelace) चूल्हे (एक RTX 4060 ग्राफिक्स कार्ड) पर यह किचन सैद्धांतिक रूप से 60.55 TFLOPS (यानी 60.55 ट्रिलियन गणितीय ऑपरेशन प्रति सेकंड) सेवा करने में सक्षम है।
लेकिन यहाँ एक पेंच है: भले ही शेफ इतनी तेज़ी से काटने के सक्षम हों, इसका मतलब यह नहीं है कि वे वास्तव में उतनी तेज़ी से काट रहे हैं। उन्हें अक्सर पेंट्री से सामग्री आने का इंतज़ार करना पड़ता है।
बड़ा प्रयोग: शेफ को व्यस्त कैसे रखें
शोधकर्ता यह पता लगाना चाहते थे कि किचन को कैसे व्यवस्थित किया जाए ताकि शेफ कभी भी काटना बंद न करें। उन्होंने किचन चलाने के तीन अलग-अलग तरीके टेस्ट किए:
- ब्लैक बॉक्स (cuBLAS): NVIDIA से एक प्री-पैकेज्ड, क्लोज्ड-सोर्स रेसिपी जो आमतौर पर बहुत अच्छा काम करती है लेकिन यह आपको विवरणों में बदलाव करने की अनुमति नहीं देती।
- ओपन ब्लूप्रिंट (CUTLASS): एक लचीला, ओपन-सोर्स टूलकिट जो आपको शून्य से अपना खुद का किचन बनाने की अनुमति देता है।
- DIY दृष्टिकोण (WMMA): एक कस्टम-निर्मित किचन जहाँ आप शेफ की हर एक गतिविधि को नियंत्रित करते हैं, लेकिन इसे बनाना बहुत कठिन है।
उन्होंने 8192 × 8192 आकार की सामग्री के साथ एक बड़ा कुकिंग चैलेंज सेट किया और विभिन्न "पाइपलाइन डेप्थ" (pipeline depths) का परीक्षण किया। पाइपलाइन डेप्थ को सामग्री की ट्रे की संख्या के रूप में समझें जिन्हें किचन तैयार रखता है।
- पाइपलाइन डेप्थ 2: केवल 2 ट्रे तैयार।
- पाइपलाइन डेप्थ 3: 3 ट्रे तैयार।
- पाइपलाइन डेप्थ 4: 4 ट्रे तैयार।
सामान्य ज्ञान और एक सरल गणितीय मॉडल ने सुझाव दिया था कि अधिक ट्रे = अधिक गति। तर्क यह था: "यदि हमारे पास अधिक ट्रे होंगे, तो शेफ के पास सामग्री की कमी नहीं होगी, इसलिए वे तेज़ी से काम करेंगे।"
आश्चर्य: अधिक होना हमेशा बेहतर नहीं होता
शोधकर्ताओं ने किचन की गति मापी, और उन्हें यह पता चला:
- डेप्थ 2: किचन 25.6 TFLOPS पर चला। शेफ बहुत अधिक इंतज़ार कर रहे थे।
- डेप्थ 3: किचन की गति बढ़कर 31.9 TFLOPS (52.7% सैद्धांतिक अधिकतम का) हो गई। यह सबसे सटीक बिंदु (sweet spot) था!
- डेप्थ 4: किचन की गति वास्तव में घटकर 31.1 TFLOPS हो गई।
यह मुख्य निष्कर्ष है: चौथी ट्रे जोड़ने से कोई मदद नहीं मिली; इसने चीज़ों को और खराब कर दिया। एक साधारण गणितीय मॉडल ने भविष्यवाणी की थी कि गति बढ़कर 35.4 TFLOPS हो जानी चाहिए। लेकिन ऐसा नहीं हुआ। मॉडल 13.8% गलत था।
जोड़ने से काम उल्टा क्यों पड़ गया?
पेपर बताता है कि किचन में सीमित जगह होती है। जब उन्होंने चौथी ट्रे जोड़ी (जिससे "शेयर्ड मेमोरी" का उपयोग बढ़कर 96 KB हो गया), तो इसने किचन को एक ही समय में काम करने वाले शेफ की टीमों (थ्रेडब्लॉक्स) की संख्या कम करने के लिए मजबूर कर दिया।
- 3 ट्रे के साथ, किचन में प्रत्येक चूल्हे पर शेफ की 2 टीमें फिट हो सकती थीं।
- 4 ट्रे के साथ, किचन में केवल 1 टीम ही फिट हो सकी।
भले ही एक टीम के पास अधिक सामग्री थी, लेकिन उन्हें अधिक इंतज़ार करना पड़ा क्योंकि जब एक टीम अटक जाती है, तो बदलने के लिए दूसरी टीम उपलब्ध नहीं थी। किचन सामग्री से "भीड़भाड़" वाला हो गया लेकिन श्रमिकों से "खाली" हो गया। शोधकर्ताओं ने मापा कि ऑक्यूपेंसी (कितनी टीमें काम कर रही हैं) गिर गई, और शेफ को अधिक "रजिस्टर्स" (उनके व्यक्तिगत नोटपैड) का उपयोग करना पड़ा, जिससे उनकी गति भी धीमी हो गई।
विजेता और हारने वाले
- विजेता: CUTLASS टूलकिट, 3 ट्रे और 256 × 128 के विशिष्ट टाइल साइज के साथ। इसने 31.9 TFLOPS हासिल किया। यह इतना अच्छा था कि इसने मानक "ब्लैक बॉक्स" (cuBLAS) को मामूली रूप से, लगभग न के बराबर 1.3% से भी पीछे छोड़ दिया (लेखक कहते हैं कि यह संभवतः केवल शोर/noise है, लेकिन यह साबित करता है कि ओपन ब्लूप्रिंट क्लोज्ड वाले के बराबर पहुँच सकता है)।
- DIY रनर-अप: कस्टम WMMA कर्नेल (पूरी तरह से DIY किचन) ने थोड़े छोटे टेस्ट पर 25.1 TFLOPS प्रबंधित किया। यह इसलिए धीमा था क्योंकि इसने खाना पकाने के साथ सामग्री की डिलीवरी को ओवरलैप करने के लिए फैंसी "डबल बफरिंग" ट्रिक्स का उपयोग नहीं किया था।
- हारने वाला: यह विचार कि "अधिक पाइपलाइन डेप्थ हमेशा बेहतर होता है।" पेपर स्पष्ट रूप से इस विशेष हार्डवेयर के लिए इसे खारिज करता है।
वे कितने आश्वस्त हैं?
लेखक इन नंबरों को लेकर बहुत आश्वस्त हैं क्योंकि उन्होंने इन्हें सीधे हार्डवेयर पर मापकर, टेस्ट को 10 बार चलाकर और औसत निकालकर प्राप्त किया है। उन्होंने अपने गणित की जाँच NVIDIA के एक बिल्ट-इन टूल (प्रोफ़ाइलर) के विरुद्ध की और पाया कि उनका कस्टम कोड उससे पूरी तरह मेल खाता है।
हालाँकि, वे कुछ बातें स्वीकार करते हैं जो उन्होंने सिद्ध नहीं की हैं:
- उन्होंने केवल एक विशिष्ट समस्या आकार (8192) का परीक्षण किया। उन्हें नहीं पता कि "3 ट्रे सबसे अच्छी है" का नियम छोटे या अजीब आकार की समस्याओं के लिए भी लागू होगा या नहीं।
- वे 4 से अधिक पाइपलाइन डेप्थ का परीक्षण नहीं कर सके क्योंकि किचन में जगह खत्म हो गई थी (मेमोरी की कमी)।
- उन्हें विंडोज (Windows) पर अपने परीक्षण चलाने पड़े, जहाँ एक ड्राइवर ग्लिच के कारण वे एक ही रन में अपने कस्टम कोड और मानक कोड की तुलना नहीं कर सके (हालांकि उन्होंने इसे अलग-अलग रन में किया)।
मुख्य सीख (Takeaway)
यदि आप गणित-प्रधान कार्यों के लिए RTX 4060 जैसे कंज्यूमर ग्राफिक्स कार्ड का अधिकतम लाभ उठाना चाहते हैं, तो बस अधिक बफ़र्स जोड़ते न रहें। एक "गोल्डिलॉक्स" ज़ोन (Goldilocks zone) होता है। इस मामले में, तैयारी के 3 चरण एकदम सही थे। 4 चरणों पर जाने से किचन बहुत तंग हो गया, जिससे सब कुछ धीमा हो गया।
शोधकर्ताओं ने अपना सारा कोड ओपन-सोर्स के रूप में जारी किया है, ताकि कोई भी अपना खुद का किचन बना सके और देख सके कि क्या वे 31.9 TFLOPS का रिकॉर्ड तोड़ सकते हैं। वे सुझाव देते हैं कि भविष्य के कार्य में विभिन्न समस्या आकारों को देखना चाहिए और अधिक स्वच्छ डेटा के लिए लिनक्स (Linux) का उपयोग करना चाहिए, लेकिन फिलहाल, उन्होंने दिखाया है कि इस सेटअप के लिए 31.9 TFLOPS वर्तमान शिखर है, और 31.1 TFLOPS वह है जो तब होता है जब आप मेमोरी के साथ बहुत अधिक लालची होते हैं।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।