AMD gpu के लिए SYCL और OpenCL
मेरे पास एक एएमडी 5700XT जीपीयू है और मैं एसवाईसीएल सीखने की कोशिश कर रहा हूं लेकिन मुझे एएमडी जीपीयू ड्राइवर स्टैक्स की वर्तमान स्थिति पर बहुत संदेह है। मैंने जो पढ़ा है, उसके अनुसार एएमडी जीपीयू के लिए कई ड्राइवर स्टैक हैं: मेसा, एमडग्पू और एमडगपू-प्रो। अगर मैं सही तरीके से समझूं, तो मीसा का अपना ओपेकल इम्प्लीमेंटेशन है और एमडग्पु ड्राइवर्स के लिए एक और इम्प्लीमेंटेशन है।
इसके अलावा, amd के पास ROCm है, जो इसका एक और OpenCL कार्यान्वयन, HIP है, जो CUDA और कुछ टूलिंग की तरह है, है ना?
कम से कम 2 कार्यान्वयन हैं, ComputeCpp और hipSYCL, जो संभवतः AMD gpus पर SYCL चला सकते हैं। क्लैंग कार्यान्वयन को AMD gpus पर भी चलाने में सक्षम होना चाहिए, क्योंकि छवि के अनुसार यह OpenCL और SPIR-V उपकरणों के साथ चलता है?
मैं सही ढंग से समझता हूं, एक भी है, जो कि SYCL (DCL ++) का कार्यान्वयन है, जिसमें कुछ एक्सटेंशन (SYCL 2020) और कुछ पुस्तकालय उस SYCL कार्यान्वयन के शीर्ष पर हैं (किस तरह के cuBLAS या cuSPARSE CUDA के लिए हैं)। क्या एक और SYCL कार्यान्वयन के शीर्ष पर OneAPI लाइब्रेरी चलाना संभव हो सकता है?
Fonally, अगर मैं ग्राफिक्स के लिए mesa (OpenGL और Vulkan) का उपयोग करता हूं, तो क्या इसके शीर्ष पर ROCm चलाना संभव है? आरसीओएम और ओपनसीएल मेसा कार्यान्वयन मेसा ग्राफिक ड्राइवरों के साथ कैसे बातचीत करता है?
जैसा कि आप देख सकते हैं कि मुझे सभी पारिस्थितिकी तंत्र के बारे में एक बड़ा भ्रम है। क्या कोई इस पर कुछ प्रकाश प्रदान कर सकता है?
जवाब
मेरी समझ यह है कि एक सिंगल कर्नेल ड्राइवर, amdgpu है। मेसा यूजरलैंड में रहता है और एक ओपनजीएल कार्यान्वयन है। amdgpu- प्रो वैकल्पिक क्लोज्ड-सोर्स यूजरलैंड लाइब्रेरी (ओपनजीएल, ओपनसीएल आदि) प्रदान करता है।
तिपतिया घास मेसा के शीर्ष पर एक OpenCL कार्यान्वयन है। मुझे यकीन नहीं है कि यह किस स्थिति में है (मेरी धारणा है कि यह कुछ समय के लिए बहुत अच्छी तरह से बनाए नहीं रखा गया था और विकास ठप हो गया है), लेकिन मुझे संदेह है कि यह एसवाईसीएल कार्यक्रम चलाने में सक्षम होगा।
आरओसीएम एक ओपनसीएल कार्यान्वयन से अधिक है। यह एएम का जीपीजीपीयू प्लेटफॉर्म है, जो एआई प्लेटफॉर्म, त्वरित लाइब्रेरी, टूल और कंपाइलर प्रदान करता है। इसमें एक OpenCL कार्यान्वयन भी शामिल है। HIP एक OpenCL कार्यान्वयन नहीं है, यह प्रभावी रूप से AMD के CUDA प्रोग्रामिंग मॉडल का कार्यान्वयन है।
मेरी जानकारी के लिए, दुर्भाग्य से हाल ही में कोई भी AMD OpenCL कार्यान्वयन SYCL कार्यक्रम चलाने में सक्षम नहीं है, क्योंकि AMD SPIR या SPIR-V का समर्थन नहीं करता है। AMD OpenCL ने SPIR-V का समर्थन कभी नहीं किया है, इसलिए DPC ++ / clang काम नहीं करेगा। ComputeCpp SPIR के साथ भी काम कर सकता है, लेकिन इसके लिए समर्थन AMD के OpenCL कार्यान्वयन से कुछ समय पहले हटा दिया गया था।
जहां तक एएमडी के लिए एसवाईसीएल समर्थन का संबंध है, हिपएसवाईसीएल आमतौर पर जाने का रास्ता है। दुर्भाग्य से, एएमडी आरओसीएम (जिस पर हिपएसवाईसीएल बनाता है) पर आपके विशिष्ट जीपीयू का समर्थन नहीं करता है क्योंकि वे उन चिप्स पर आरओसीएम समर्थन पर ध्यान केंद्रित करते हैं जो डेटा सेंटर कार्ड में भी उपयोग किए जाते हैं। अधिक जानकारी के लिए यहां देखें:https://github.com/RadeonOpenCompute/ROCm#supported-gpus
वनएपीआई उनके कम्प्यूट प्लेटफॉर्म के लिए इंटेल का छत्र शब्द है, जो पुस्तकालयों, उपकरणों और कंपाइलरों (आरओसीएम के समान) को प्रदान करता है। DPC ++ / LLVM SYCL / Intel SYCL वनएपीआई का हिस्सा है। वे सभी शब्द एक ही चीज़ का उल्लेख करते हैं, अर्थात् ख्रोनोस एसवाईसीएल 2020 मानक का इंटेल का कार्यान्वयन। बहुत ज्यादा इंटेल के सभी एक्सटेंशन को SYCL 2020 विनिर्देश में मिला दिया गया है, इसलिए DPC ++ के बारे में एक अलग भाषा के रूप में नहीं सोचें।
OneAPI पुस्तकालयों में अतिरिक्त बैकएंड जोड़ना संभव है, उदाहरण के लिए कोडप्ले ने NVIDIA के लिए ऐसा किया है। सिद्धांत रूप में यह संभव है कि उन्हें एक और एसवाईसीएल कार्यान्वयन के लिए पोर्ट किया जाए। हम हिप्एसवाईसीएल और डीपीसीएल ++ के बीच संगतता में सुधार करके हिपस्वाईसीएल के साथ उस दिशा में आगे बढ़ने के लिए कुछ आधार पर काम कर रहे हैं:https://www.urz.uni-heidelberg.de/en/2020-09-29-oneapi-coe-urz
मीसा के ऊपर आरओसीएम चलाना संभव नहीं है। यह GPU कम्प्यूट के लिए पूरी तरह से स्वतंत्र स्टैक है। जहां तक मुझे पता है कि आरओसीएम और मेसा के बीच कोई बातचीत नहीं है।