← नवीनतम पेपर
🤖 machine learning

Learning to Parallelize with OpenMP by Augmented Heterogeneous AST Representation

यह शोधपत्र Graph2Par का प्रस्ताव करता है, जो एक संवर्धित विषम (heterogeneous) AST प्रतिनिधित्व और एक नव निर्मित OMP_Serial डेटासेट का उपयोग करने वाला एक नवीन ग्राफ-आधारित शिक्षण दृष्टिकोण है, जो OpenMP-समानांतर करने योग्य लूप्स का पता लगाने में 85% सटीकता प्राप्त करता है और अत्याधुनिक टोकन-आधारित विधियों से बेहतर प्रदर्शन करता है।

मूल लेखक: Le Chen, Quazi Ishtiaque Mahmud, Hung Phan, Nesreen K. Ahmed, Ali Jannesari

प्रकाशित 2026-08-20
📖 6 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Le Chen, Quazi Ishtiaque Mahmud, Hung Phan, Nesreen K. Ahmed, Ali Jannesari

मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें

आधुनिक कंप्यूटर छोटे श्रमिकों के विशाल शहरों की तरह बन गए हैं, जिनमें से प्रत्येक एक सेकंड के अंश में एक कार्य करने में सक्षम है। इन मशीनों को तेज़ चलाने के लिए, प्रोग्रामर्स को उन्हें यह सिखाना होगा कि वे काम करने के लिए कई श्रमिकों को एक साथ बाहर भेजें, न कि उन्हें एक-एक करके काम करने के लिए कतार में खड़ा करें। यह अभ्यास, जिसे समानांतरकरण (parallelization) कहा जाता है, आज के शक्तिशाली हार्डवेयर का अधिकतम लाभ उठाने के लिए आवश्यक है। हालाँकि, कंप्यूटर को यह बताना कि वह अपने काम को कैसे विभाजित करे, कठिन है। इसके लिए इस बात की गहरी समझ की आवश्यकता होती है कि एक प्रोग्राम के विभिन्न भाग एक-दूसरे पर कैसे निर्भर हैं। यदि कोई प्रोग्रामर गलत अनुमान लगाता है, तो प्रोग्राम क्रैश हो सकता है या गलत उत्तर दे सकता है। दशकों से, विशेषज्ञों ने इन टीम वर्क के अवसरों को स्वचालित रूप से खोजने के लिए उपकरण बनाए हैं, लेकिन ये उपकरण अक्सर बहुत अधिक सुरक्षित खेलते हैं, जिससे तेज़ करने के कई अवसर छूट जाते हैं, या वे जटिल कोड संरचनाओं से भ्रमित हो जाते हैं।

हाल ही में एक अध्ययन में, शोधकर्ताओं ने कंप्यूटर को स्वयं इन अवसरों को पहचानने के लिए प्रशिक्षित करने का प्रयास किया, जो कि इस तरीके से प्रेरित है कि मशीनें भाषा को कैसे समझती हैं। आयोवा स्टेट यूनिवर्सिटी और इंटेल लैब्स के ली चेन और सहयोगियों के नेतृत्व वाली टीम ने सी (C) प्रोग्रामिंग भाषा में उपयोग किए जाने वाले एक विशिष्ट प्रकार के निर्देश पर ध्यान केंद्रित किया जिसे ओपनएमपी (OpenMP) कहा जाता है। ये निर्देश संकेतों की तरह कार्य करते हैं, जो कंप्यूटर को बताते हैं कि एक साथ कई श्रमिकों को शुरू करना कहाँ सुरक्षित है। चुनौती यह थी कि मौजूदा उपकरण, जो कठोर गणितीय नियमों पर निर्भर करते हैं, अक्सर पेड़ को देखते हुए जंगल को नहीं देख पाते। वे एक पूरी तरह से समानांतर करने योग्य लूप (loop) को भी मिस कर सकते हैं क्योंकि उसमें एक फंक्शन कॉल या एक नेस्टेड संरचना शामिल है जो एक पारंपरिक विश्लेषक को जटिल दिखती है। शोधकर्ताओं ने महसूस किया कि इसे हल करने के लिए, उन्हें कंप्यूटर को यह दिखाने के लिए एक नए तरीके की आवश्यकता थी कि कोड वास्तव में कैसा दिखता है, न कि केवल शब्दों की एक श्रृंखला के रूप में, बल्कि इसकी संरचना और अर्थ के एक मानचित्र के रूप में।

इस कार्य को करने के लिए, टीम को सबसे पहले उदाहरणों का एक विशाल पुस्तकालय बनाना था, एक डेटासेट जिसे उन्होंने ओएमपी सीरियल (OMP Serial) नाम दिया। उन्होंने लगभग 18,600 उदाहरण एकत्र किए जो पहले से ही समानांतर के रूप में चिह्नित लूप थे और लगभग 14,000 लूप जो नहीं थे। उन्होंने इन्हें इंटरनेट पर पाए गए हजारों वास्तविक दुनिया के सॉफ्टवेयर प्रोजेक्ट्स के साथ-साथ विशेष पैटर्न का परीक्षण करने के लिए सावधानीपूर्वक तैयार किए गए सिंथेटिक उदाहरणों से निकाला। इस संग्रह ने उन्हें सीखने के लिए एक समृद्ध आधार प्रदान किया। लेकिन डेटा होना केवल आधी लड़ाई थी; उन्हें इसे एक मशीन लर्निंग मॉडल में फीड करने के लिए एक तरीका चाहिए था जो वास्तव में कोड को समझ सके। कोड को किताब के एक वाक्य की तरह मानने के बजाय, जहाँ शब्दों का क्रम सबसे महत्वपूर्ण होता है, उन्होंने इसे एक जटिल मानचित्र की तरह मानने का निर्णय लिया। उन्होंने एक प्रतिनिधित्व बनाया जिसे 'ऑगमेंटेड हेट्रोजेनियस एब्स्ट्रैक्ट सिंटैक्स ट्री' (augmented heterogeneous abstract syntax tree) कहा जाता है। सरल शब्दों में, यह एक विस्तृत ग्राफ है जो कोड के हर हिस्से को जोड़ता है। यह न केवल प्रोग्राम के पदानुक्रम को दिखाता है—जैसे एक पैरेंट कमांड और उसके चाइल्ड कमांड—बल्कि यह भी दिखाता है कि कोड एक चरण से दूसरे चरण तक कैसे बहता है और कोड के शब्द टेक्स्ट में एक-दूसरे के बगल में कैसे बैठते हैं। यह मानचित्र प्रोग्राम के संरचनात्मक कंकाल को पकड़ता है और साथ ही विभिन्न भागों के बीच सूक्ष्म संबंधों को भी संरक्षित करता है जो शब्दों की एक साधारण सूची से छूट सकते हैं।

इस नए मानचित्र के साथ, शोधकर्ताओं ने हेट्रोजेनियस ग्राफ ट्रांसफार्मर (heterogeneous graph transformer) नामक एक परिष्कृत लर्निंग मॉडल को प्रशिक्षित किया। इस मॉडल की कल्पना एक ऐसे छात्र के रूप में करें जिसे हजारों ऐसे मानचित्र दिखाए जाते हैं, और साथ में प्रत्येक के लिए सही उत्तर भी दिया जाता है: कि क्या लूप समानांतर करने के लिए सुरक्षित है या नहीं। मॉडल उन छिपे हुए पैटर्न को पहचानना सीखता है जो सुरक्षा का संकेत देते हैं। यह मानचित्र में विभिन्न प्रकार के कनेक्शनों पर ध्यान देता है, यह समझते हुए कि एक फंक्शन कॉल और एक वेरिएबल के बीच का लिंक, दो गणितीय ऑपरेशन्स के बीच के लिंक से अलग हो सकता है। प्रशिक्षित होने के बाद, मॉडल का परीक्षण यह भविष्यवाणी करने की क्षमता पर किया गया कि किन लूप्स को समानांतर किया जा सकता है और, महत्वपूर्ण रूप से, इसे करने के लिए किस विशिष्ट प्रकार के निर्देश का उपयोग किया जाना चाहिए। परिणाम आश्चर्यजनक थे। मॉडल ने समानांतर करने योग्य क्षेत्रों का पता लगाने में 85 प्रतिशत सटीकता प्राप्त की, जो पारंपरिक स्टैटिक एनालिसिस पर निर्भर सर्वोत्तम मौजूदा उपकरणों से काफी बेहतर प्रदर्शन करती है।

अध्ययन ने यह भी खुलासा किया कि पुराने उपकरण वास्तव में कहाँ विफल हो रहे थे। शोधकर्ताओं ने पाया कि पारंपरिक सॉफ्टवेयर द्वारा की जाने वाली सबसे आम गलतियाँ उन लूप्स के साथ हुईं जिनमें फंक्शन कॉल शामिल थे, उन लूप्स के साथ जिन्होंने बड़ी मात्रा में डेटा को एक एकल मान में कम (reduce) किया था, और उन लूप्स के साथ जो अन्य लूप्स के अंदर नेस्टेड थे। ये वे पेचीदा मामले हैं जहाँ कोड एक कठोर विश्लेषक के लिए अव्यवस्थित दिखता है लेकिन वास्तव में समानांतर कार्य के लिए सुरक्षित है। इसके विपरीत, नए मशीन लर्निंग दृष्टिकोण ने इन जटिल संरचनाओं को बहुत अधिक सफलता के साथ संभाला। इसने केवल अनुमान नहीं लगाया; इसने कोड के आकार के अंतर्निहित तर्क को सीखा। शोधकर्ताओं ने प्रदर्शित किया कि कोड के समृद्ध, संरचनात्मक दृश्य को शक्तिशाली लर्निंग एल्गोरिदम के साथ जोड़कर, एक ऐसे कार्य को स्वचालित करना संभव है जिसके लिए लंबे समय से मानवीय अंतर्ज्ञान की आवश्यकता रही है। यह कार्य सुझाव देता है कि तेज़ सॉफ्टवेयर लिखने का भविष्य कंप्यूटर के लिए बेहतर नियम पुस्तिका बनाने में नहीं, बल्कि उन्हें कोड को एक कुशल मानव प्रोग्रामर की तरह देखना सिखाने में है: एक जीवित, परस्पर जुड़े सिस्टम के रूप में, न कि कमांड के एक स्थिर अनुक्रम के रूप में।

अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?

आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।

Digest आज़माएँ →