वीसीसी, एक क्लैंग-आधारित कंपाइलर जिसे वल्कन में निष्पादन योग्य कोड उत्पन्न करने के लिए डिज़ाइन किया गया है

VCC

वीसीसी: वल्कन क्लैंग कंपाइलर

ग्राफ़िक्स एपीआई परिदृश्य में, छायांकन भाषाओं को एक सीमा का सामना करना पड़ा है, क्योंकि GLSL, HLSL और C++ के बीच एक सामान्य उपसमूह में कोड लिखने की संभावना के बावजूद, वर्तमान प्रतिबंध मौजूद हैं।

इसी कारण Vcc का जन्म हुआ (वल्कन क्लैंग कंपाइलर) वल्कन क्लैंग कंपाइलर, जो एक परियोजना है जो 3 वर्षों से विकास में थी, इन सीमाओं और चुनौतियों की प्रतिक्रिया के रूप में उभरता है. यह परियोजना न केवल अभिव्यंजक प्रतिबंधों को दूर करने का प्रयास करती है, बल्कि छायांकन भाषाओं की अवधारणा को भी खत्म करने का प्रयास करती है।

सम्मिलित करके संपूर्ण भाषा परिवार C / C ++ वल्कन को, वीसीसी ने वल्कन शेडर्स में पहले कभी नहीं देखे गए फीचर्स पेश किए हैं, जैसे भौतिक सूचक, सामान्य सूचक, वास्तविक फ़ंक्शन कॉल और पूर्ण नियंत्रण प्रवाह।

यह पहल ग्राफिक्स और कंप्यूट एपीआई के बीच सॉफ्टवेयर अंतर को पाटना चाहता है। वल्कन को अन्य जीपीयू कंप्यूटिंग एपीआई के साथ संगत बनाकर, वीसीसी को ग्राफिक्स और कंप्यूटिंग में प्रोग्रामिंग को एकीकृत करने, बड़े पैमाने पर अपनाने और कार्यान्वयन की गुणवत्ता के साथ संरेखित करने की दिशा में एक महत्वपूर्ण कदम के रूप में प्रस्तुत किया गया है जिसके लिए वल्कन जाना जाता है।

वीसीसी के बारे में

Vcc एक क्लैंग-आधारित कंपाइलर है जिसे वल्कन में निष्पादन योग्य कोड उत्पन्न करने के लिए डिज़ाइन किया गया है, इसका उद्देश्य है स्वयं को C++ कोड का अनुवाद करने में सक्षम कंपाइलर के रूप में स्थापित करें एक प्रतिनिधित्व में जो GPU पर चल सकता है जो वल्कन ग्राफिक्स एपीआई का समर्थन करता है। जीएलएसएल और एचएलएसएल शेडर भाषाओं पर आधारित जीपीयू प्रोग्रामिंग मॉडल के विपरीत, वीसीसी अलग-अलग शेडर भाषाओं के उपयोग को पूरी तरह से समाप्त करने का विचार लेता है और वल्कन के लिए सीधे सी/सी++ कोड संकलित करने की क्षमता प्रदान करता है।

हालांकि जीएलएसएल और एचएलएसएल का प्रतिस्पर्धी माना जा सकता है, इस परियोजना के पीछे का असली इरादा इससे भी आगे जाता है Vcc C/C++ भाषा परिवार को वल्कन में शामिल करना चाहता है, वल्कन शेडर्स में कई सुविधाएँ पेश करना।

Vcc केवल शैडी, एक IR और एक कंपाइलर के लिए एक इंटरफ़ेस है जिसे उपरोक्त निर्माणों के समर्थन के साथ SPIR-V का विस्तार करने के लिए डिज़ाइन किया गया है। शैडी को अपेक्षाकृत पारंपरिक आईआर के रूप में प्रस्तुत किया गया है और इसमें एलएलवीएम आईआर को पार्स करने के लिए समर्थन शामिल है। SPIR-V 3 के वर्तमान संस्करणों में नहीं पाए जाने वाले सभी अतिरिक्त सुविधाओं की कमी और अनुकरण को संभालता है।

बेशक, ऐसी कई अनूठी विशेषताएं हैं जो केवल शेडर्स में पाई जाती हैं। इन्हें वीसीसी में आंतरिक और एनोटेशन का उपयोग करके उजागर किया जाता है, जिससे आपको कोड लिखने की अनुमति मिलती है जो वल्कन चैनल की विभिन्न विशेषताओं के साथ इंटरैक्ट करता है।

वीसीसी में संकलन प्रक्रिया में एलएलवीएम और क्लैंग परियोजना घटकों का उपयोग शामिल है इंटरफ़ेस के रूप में. GPU, Vcc पर निष्पादन के लिए अपना स्वयं का मध्यवर्ती शेडर प्रतिनिधित्व "छायादार" विकसित करता है, कोड को इस प्रतिनिधित्व में परिवर्तित करने के लिए एक समर्पित कंपाइलर के साथ। यह दृष्टिकोण मानक C/C++ कोड के संकलन की अनुमति देता है और GPU की क्षमताओं का लाभ उठाने के लिए विशिष्ट अंतर्निहित कार्यों द्वारा पूरक है।

VCC प्रोग्राम प्रवाह को नियंत्रित करने के लिए मूल C/C++ फ़ंक्शंस का समर्थन करने के लिए जाना जाता है, यहां तक ​​कि "गोटो" निर्देश के उपयोग की भी अनुमति दी गई है। इसके अतिरिक्त, यह फ़ंक्शंस को कॉल करने, फ़ंक्शंस को पुनरावर्ती रूप से निष्पादित करने और विभिन्न प्रकार के पॉइंटर्स, जैसे भौतिक पॉइंटर्स, टैग किए गए पॉइंटर्स और फ़ंक्शन पॉइंटर्स का उपयोग करने की क्षमता प्रदान करता है। इसके अतिरिक्त, यह पॉइंटर्स पर अंकगणितीय ऑपरेशन करना और मेमोरी में टाइप लेआउट निर्धारित करना आसान बनाता है।

शेडी शेडर मध्यवर्ती प्रतिनिधित्व SPIR-V 3 पर आधारित है और इसे C/C++ सुविधाओं में निहित विशेष निर्माणों का समर्थन करने के लिए विस्तारित किया गया है। इम्यूलेशन का उपयोग उन्नत क्षमताओं को लागू करने के लिए किया जाता है जो सीधे SPIR-V पर लागू नहीं होते हैं। वीसीसी में प्रोग्रामों को शेडर्स की विशिष्ट क्षमताओं का कुशलतापूर्वक उपयोग करने की अनुमति देने के लिए अंतर्निहित फ़ंक्शन और एनोटेशन शामिल हैं, इस प्रकार जीपीयू अनुप्रयोगों को विकसित करने के लिए एक बहुमुखी और शक्तिशाली वातावरण प्रदान किया जाता है।

अंत में, यह उल्लेख करने योग्य है कि सब कुछ गुलाबी नहीं है औरकार्यान्वयन की कुछ सीमाओं को ध्यान में रखना आवश्यक है। उदाहरण के लिए, Vcc C++ अपवादों का समर्थन नहीं करता है, और Malloc/free कार्यक्षमता उपलब्ध नहीं है। इसके अतिरिक्त, होस्ट सिस्टम और GPU के बीच फ़ंक्शंस और पॉइंटर्स की पोर्टेबिलिटी पर प्रतिबंध है। कुशल और परेशानी मुक्त तैनाती सुनिश्चित करने के लिए वीसीसी का उपयोग करने वाले अनुप्रयोगों के विकास की योजना बनाते समय ये विचार महत्वपूर्ण हैं।

अगर तुम हो इसके बारे में और जानने में दिलचस्पी है, आप परामर्श ले सकते हैं स्थल और कोड में रुचि रखने वालों के लिए, आपको पता होना चाहिए कि यह उपलब्ध है यहाँ.


अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: एबी इंटरनेट नेटवर्क 2008 SL
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।