आरओसीएम

From Vigyanwiki
ROCm
Developer(s)AMD
Initial releaseNovember 14, 2016; 9 years ago (2016-11-14)
Stable release
5.3.0 / October 4, 2022; 3 years ago (2022-10-04)[1]
RepositoryMeta-repository
github.com/radeonopencompute/rocm
Written inC, C++, Python, Fortran, Julia
MiddlewareHIP
EngineAMDgpu kernel driver, HIPCC, a LLVM-based compiler
Operating systemLinux
PlatformSupported GPUs
PredecessorClose to metal, Stream, HSA
Size<2 GiB
TypeGPGPU libraries and APIs
LicenseLibre
Websitewww.amd.com/en/graphics/servers-solutions-rocm

आरओसीएम[2] ग्राफ़िक्स प्रोसेसिंग युनिट (जीपीयू) प्रोग्रामिंग के लिए ऍड्वांस्ड माइक्रो डिवाइसेज़ (एएमडी) सॉफ्टवेयर स्टैक है। आरओसीएम कई क्षेत्रों में फैला हुआ है: जनरल-पर्पस कंप्यूटिंग ऑन ग्राफिक्स प्रोसेसिंग यूनिट (जीपीजीपीयू), हाई-परफॉरमेंस कंप्यूटिंग (एचपीसी), हेटेरोगेनोस कंप्यूटिंग है। यह कई प्रोग्रामिंग मॉडल प्रदान करता है: एचआईपी (जीपीयू-कर्नेल-आधारित प्रोग्रामिंग), ओपनएमपी/मैसेज पासिंग इंटरफ़ेस(एमपीआई) निर्देश-आधारित प्रोग्रामिंग), ओपनसीएल है।

आरओसीएम मुफ़्त, कामचलाऊ और मुक्त स्रोत सॉफ्टवेयर है (जीपीयू बाइनरी ब्लॉब को छोड़कर[3]), यह विभिन्न अनुज्ञप्ति के तहत वितरित किया जाता है।

पृष्ठभूमि

एटीआई टेक्नोलॉजीज/एएमडी से पहला जीपीजीपीयू सॉफ्टवेयर स्टैक मेटल के करीब था, जो एएमडी स्ट्रीम प्रोसेसर सॉफ्टवेयर डेवलपमेंट किट बन गया।

आरओसीएम को 2016 के आसपास [4] बोल्ट्ज़मैन इनिशिएटिव (आरओसीएम) के साथ प्रारंभ किया गया था।[5] आरओसीएम स्टैक पिछले एएमडी जीपीयू स्टैक पर बनाता है, कुछ उपकरण जीपीयूओपन, अन्य हेटेरोगेनोस सिस्टम आर्किटेक्चर (एचएसए) पर वापस जाते हैं।

हेटेरोगेनोस सिस्टम आर्किटेक्चर

एचएसए का उद्देश्य मध्य-स्तर, हार्डवेयर-अज्ञेयवादी मध्यवर्ती प्रतिनिधित्व का उत्पादन करना था, जो उपयुक्त अंतिम रूप का उपयोग करके अंतिम हार्डवेयर (जीपीयू, एफपीजीए ...) के लिए जेआईटी-संकलित किया जा सकता है। आरओसीएम के लिए यह दृष्टिकोण हटा दिया गया था: अब यह एलएलवीएम का उपयोग करके केवल जीपीयू कोड बनाता है, और इसका एलएलवीएम बैकएंड जो उजान किया गया था,[6] हालांकि एलएलवीएम एमएलआईआर के साथ इस तरह के संवर्धित प्रतिरूपकता पर अभी भी शोध चल रहा है।[7]

माइक्रोसॉफ्ट एएमपी C ++ 1.2

प्रोग्रामिंग क्षमता

आरओसीएम स्टैक के रूप में कर्नेल ड्राइवर से लेकर एंड-यूज़र अनुप्रयोग तक होता है।एएमडी में एएमडी जीसीएन हार्डवेयर के बारे में [8] और आरओसीएम प्रोग्रामिंग[9] इसके लर्निंग पोर्टल के माध्यम से परिचयात्मक वीडियो हैं।[10]

स्टैक और आरओसीएम/एचआईपी प्रोग्रामिंग के बारे में सबसे अच्छे तकनीकी परिचयों में से एक, आज तक रेडिट पर पाया जाना बाकी है।[11]

उच्च स्तरीय प्रोग्रामिंग

एचआईपी प्रोग्रामिंग

एचआईपी (एचसीसी) कर्नेल भाषा

मेमोरी आवंटन

नुमा

हेटेरोगेनोस मेमोरी मॉडल और साझा वर्चुअल मेमोरी

आरओसीएम कोड ऑब्जेक्ट्स

कंप्यूट/ग्राफिक्स इंटरऑप

निम्न स्तर की प्रोग्रामिंग

हार्डवेयर समर्थन

आरओसीएम मुख्य रूप से असतत पेशेवर जीपीयू पर लक्षित है,[1], लेकिन अनौपचारिक समर्थन में वेगा- वर्ग और आरडीएनए2 उपभोक्ता जीपीयू शामिल हैं।

एएमडी Accelerated Processing Unit (APU) सक्षम हैं, लेकिन आधिकारिक रूप से समर्थित नहीं हैं। आरओसीएम के कार्यशील होने में शामिल है।[12]


प्रोफेशनल-ग्रेड जीपीयू

prosumer Radeon Pro के साथ एएमडी Instinct Accelerators प्रथम श्रेणी के आरओसीएम नागरिक हैं: वे ज्यादातर पूर्ण समर्थन देखते हैं।

जनवरी 2022 तक राडॉन VII (GCN 5 - वेगा) एकमात्र उपभोक्ता-ग्रेड जीपीयू है जिसे अपेक्षाकृत समान समर्थन प्राप्त है।

उपभोक्ता-ग्रेड जीपीयू

Name of जीपीयू series Southern
Islands
Sea
Islands
Volcanic
Islands
Arctic
Islands/Polaris
Vega Navi 1X Navi 2X
Released Jan 2012 Sep 2013 Jun 2015 Jun 2016 Jun 2017 Jul 2019 Nov 2020
Marketing Name Radeon HD 7000 Radeon Rx 200 Radeon Rx 300 Radeon RX 400/500 Radeon RX Vega/Radeon VII(7 nm) Radeon RX 5000 Radeon RX 6000
एएमडी support No Current
Instruction set GCN instruction set आरडीएनए instruction set
Microarchitecture GCN 1st gen GCN 2nd gen GCN 3rd gen GCN 4th gen GCN 5th gen आरडीएनए आरडीएनए 2
Type Unified shader model
आरओसीएम[13] No Yes No Yes
ओपनसीएल 1.2 (on Linux: 1.1 (no Image support) with Mesa 3D) 2.0 (Adrenalin driver on Win7+)
(on Linux: 1.1 (no Image support) with Mesa 3D, 2.0 with एएमडी drivers or एएमडी आरओसीएम)
2.0 2.1[14]
Vulkan 1.0
(Win 7+ or Mesa 17+)
1.2 (Adrenalin 20.1, Linux Mesa 3D 20.0)
Shader model 5.1 5.1
6.3
6.4 6.5
OpenGL 4.6 (on Linux: 4.6 (Mesa 3D 20.0))
Direct3D 11 (11_1)
12 (11_1)
11 (12_0)
12 (12_0)
11 (12_1)
12 (12_1)
11 (12_1)
12 (12_2)
/drm/amdgpu[lower-alpha 1] Experimental[15] Yes
  1. DRM (Direct Rendering Manager) is a component of the Linux kernel.


सॉफ्टवेयर पारिस्थितिकी तंत्र

सीखने के संसाधन

एएमडी आरओसीएम उत्पाद प्रबंधक ने स्टैक का दौरा किया।[16]


तृतीय-पक्ष एकीकरण

स्टैक के मुख्य उपभोक्ता मशीन लर्निंग और उच्च-प्रदर्शन कंप्यूटिंग/जीपीजीपीयू अनुप्रयोग हैं।

मशीन लर्निंग

विभिन्न डीप लर्निंग फ्रेमवर्क में आरओसीएम बैकएंड होता है:[17]

सुपरकंप्यूटिंग

आरओसीएम टॉप500 में महत्वपूर्ण कर्षण प्राप्त कर रहा है।[19] आरओसीएम का उपयोग Exascale सुपरकंप्यूटर ElCapitan (सुपरकंप्यूटर) के साथ किया जाता है[20][21] और फ्रंटियर (सुपरकंप्यूटर)

कुछ संबंधित सॉफ़्टवेयर एएमडी Infinity हब पर उपलब्ध हैं।

अन्य त्वरण और ग्राफिक्स इंटरऑपरेशन

संस्करण 3.0 के अनुसार, ब्लेंडर (सॉफ्टवेयर) अब अपने रेंडरिंग (कंप्यूटर ग्राफिक्स) चक्रों के लिए एचआईपी कंप्यूट कर्नेल का उपयोग कर सकता है।[22]


अन्य भाषाएँ

जूलिया

जूलिया (प्रोग्रामिंग भाषा) में AMDGPU.jl पैकेज है,[23] जो एलएलवीएम के साथ एकीकृत होता है और आरओसीएम स्टैक के घटकों का चयन करता है। एचआईपी के माध्यम से कोड संकलित करने के बजाय, एएमडीजीपीयू.जेएल सीधे एलएलवीएम आईआर उत्पन्न करने के लिए जूलिया के कंपाइलर का उपयोग करता है, जिसे बाद में एलएलवीएम द्वारा देशी डिवाइस कोड उत्पन्न करने के लिए उपयोग किया जाता है। AMDGPU.jl डिवाइस पर नेटिव कोड अपलोड करने और इसे निष्पादित करने के लिए ROCr के एचएसए कार्यान्वयन का उपयोग करता है, ठीक उसी तरह जिस तरह एचआईपी अपने स्वयं के जनरेट किए गए डिवाइस कोड को लोड करता है।

AMDGPU.jl भी आरओसीएम के rocBLAS (BLAS के लिए), rocRAND (यादृच्छिक संख्या पीढ़ी के लिए), और rocFFT (FFTs के लिए) के साथ एकीकरण का समर्थन करता है। RocALUTION, rocSOLVER, MIOpen, और कुछ अन्य आरओसीएम पुस्तकालयों के साथ भविष्य के एकीकरण की योजना बनाई गई है।

सॉफ्टवेयर वितरण

आधिकारिक

आरओसीएम सॉफ्टवेयर वर्तमान में दर्जनों सार्वजनिक गिटहब रिपॉजिटरी में फैला हुआ है। मुख्य सार्वजनिक [https://github.com/radeonopencompute/rocm मेटा-रिपॉजिटरी] के भीतर, प्रत्येक अधिकारी के लिए एक xml मेनिफ़ेस्ट है रिलीज़: git-repo का उपयोग करना, git के शीर्ष पर निर्मित संस्करण नियंत्रण उपकरण, स्टैक के साथ स्थानीय रूप से सिंक्रनाइज़ करने का अनुशंसित तरीका है।[24] आरओसीएम 5.1 की रिलीज आसन्न है, संभवत: फरवरी के मध्य में हर महीने एक मामूली रिलीज दी जाती है।[17]

Stack area Public GitHub organisation
Low-level (mostly) https://github.com/radeonopencompute
Mid-level (mostly) https://github.com/rocm-developer-tools
High-level (mostly) https://github.com/rocmsoftwareplatform/

एएमडी आरओसीएम के लिए कंटेनरीकृत अनुप्रयोगों का वितरण शुरू करता है, विशेष रूप से एएमडी Infinity Hub के तहत एकत्र किए गए वैज्ञानिक अनुसंधान अनुप्रयोगों के लिए।[25] एएमडी खुद को वितरित करता है विभिन्न लिनक्स वितरणों के अनुरूप पैकेज।


तृतीय-पक्ष

तृतीय-पक्ष पारिस्थितिकी तंत्र पैकेजिंग आरओसीएम बढ़ रहा है।

लिनक्स वितरण आधिकारिक तौर पर (मूल रूप से) आरओसीएम की पैकेजिंग कर रहे हैं, उन्नति की विभिन्न डिग्री के साथ: आर्क,[26] जेंटू,[27] डेबियन और फेडोरा,[28] जीएनयू गुइक्स, निक्सओएस।

स्पैक पैकेज हैं।[29]


अवयव

एक कर्नेल-स्पेस कंपोनेंट है, ROCk, और बाकी - स्टैक में लगभग सौ कंपोनेंट्स हैं - जो यूजर स्पेस | यूजर-स्पेस मॉड्यूल से बना है।

अनौपचारिक टाइपोग्राफ़िक नीति का उपयोग करना है: निम्न-स्तरीय पुस्तकालयों के लिए अपरकेस ROC लोअरकेस अनुसरण करना, यानी ROCt, और इसके विपरीत उपयोगकर्ता-सामना करने वाले पुस्तकालयों के लिए, यानी rocBLAS।[30] एएमडी एलएलवीएम समुदाय के साथ सक्रिय विकास कर रहा है, लेकिन अपस्ट्रीमिंग तात्कालिक नहीं है, और जनवरी 2022 तक, अभी भी पिछड़ रहा है।[31] एएमडी अभी भी आधिकारिक तौर पर विभिन्न एलएलवीएम फोर्क्स को पैकेज करता है[32][33][7]उन हिस्सों के लिए जो अभी तक उजान नहीं हुए हैं - कंपाइलर ऑप्टिमाइज़ेशन स्वामित्व, डीबग समर्थन, ओपनएमपी ऑफ़लोडिंग रहने के लिए नियत हैं ...

निम्न स्तर

रॉक - कर्नेल ड्राइवर


आरओसीएम - डिवाइस लाइब्रेरी

सपोर्ट लाइब्रेरी एलएलवीएम बिटकोड के रूप में लागू किया गया। ये मैथ ऑपरेशंस, एटॉमिक्स, प्रारंभ पैरामीटर्स के लिए क्वेश्चन, ऑन-डिवाइस कर्नेल प्रारंभ आदि के लिए विभिन्न यूटिलिटीज और फंक्शन प्रदान करते हैं।

आरओसीटी - थंक

thunk ढेर में जाने वाली सभी सोच और कतार के लिए ज़िम्मेदार है।

आरओसीआर - रनटाइम

ROC रनटाइम ROC कॉमन लैंग्वेज रनटाइम से इस मायने में अलग है कि यह एक ही चीज़ नहीं है।

आरओसीएम - कंपाइलर सपोर्ट

आरओसीएम कोड ऑब्जेक्ट मैनेजर एलएलवीएम इंटरमीडिएट प्रतिनिधित्व के साथ बातचीत करने के प्रभारी हैं।

मध्य स्तर

ROCclr सामान्य भाषा रनटाइम

सामान्य भाषा रनटाइम एक अप्रत्यक्ष परत है जो विंडोज़ पर Linux और PAL पर ROCr को कॉल्स को अनुकूलित करती है। यह एचएसएआईएल-कंपाइलर जैसे विभिन्न कंपाइलरों के बीच रूट करने में सक्षम होता था। यह अब ऊपरी अप्रत्यक्ष परतों (एचआईपी, ओपनसीएल) द्वारा अवशोषित किया जा रहा है।

ओपनसीएल

आरओसीएम अपने इंस्टाल करने योग्य क्लाइंट ड्राइवर ICD लोडर और एक ओपनसीएल को शिप करता है[34] कार्यान्वयन एक साथ बंडल। जनवरी 2022 तक, आरओसीएम 4.5.2 ओपनसीएल 2.2 को शिप करता है, और प्रतिस्पर्धा में पिछड़ रहा है।[35]


हिप - पोर्टेबिलिटी के लिए हेटेरोगेनोस इंटरफ़ेस

इसके जीपीयू के लिए एएमडी कार्यान्वयन को HIPAMD कहा जाता है। ज्यादातर प्रदर्शन उद्देश्यों के लिए CPU कार्यान्वयन भी है।

एचआईपीसीसी

एचआईपी एक `HIPCC` कंपाइलर बनाता है जो या तो बजना को लपेटता है और LLVM खुले AMDGPU बैकएंड के साथ संकलित करता है, या Nvidia CUDA कंपाइलर पर रीडायरेक्ट करता है।[36]


हिप्पी

HIPIFY एक सोर्स-टू-सोर्स कंपाइलिंग टूल है, यह CUDA को एचआईपी और रिवर्स में ट्रांसलेट करता है, या तो क्लैंग-बेस्ड टूल या सीड-जैसे पर्ल का उपयोग करता है लिखी हुई कहानी।

जीपीयूएफओआरटी

HIPIFY की तरह, GPUFORT एक टूल है जो स्रोत कोड को अन्य तीसरी पीढ़ी के भाषा स्रोतों में संकलित करता है, जिससे उपयोगकर्ता CUDA फोरट्रान से एचआईपी फोरट्रान में माइग्रेट कर सकते हैं। यह अनुसंधान परियोजनाओं के प्रदर्शनों की सूची में भी है, इससे भी ज्यादा।[37]


उच्च स्तर

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

इनमें से अधिकांश उपयोगकर्ता-सामना करने वाले पुस्तकालय दोहरे रूप में आते हैं: अप्रत्यक्ष परत के लिए हिप जो एनवीडिया हार्डवेयर को रूट कर सकता है, और एएमडी कार्यान्वयन के लिए आरओसी।[38]


रोकब्लास / हिपब्लास

rocBLAS और [2] उच्च-स्तरीय पुस्तकालयों में केंद्रीय हैं, यह बुनियादी रेखीय बीजगणित उपप्रोग्राम के लिए एएमडी कार्यान्वयन है। यह निजी तौर पर पुस्तकालय Tensile का उपयोग करता है।

रॉक्सोल्वर / हिप्सोल्वर

पुस्तकालयों की यह जोड़ी आरओसीएम के लिए LAPACK कार्यान्वयन का गठन करती है और इसे rocBLAS से मजबूती से जोड़ा जाता है।

उपयोगिताएँ

  • आरओसीएम डेवलपर टूल: डिबग, ट्रेसर, प्रोफाइलर, सिस्टम मैनेजमेंट इंटरफेस, वैलिडेशन सूट, क्लस्टर मैनेजमेंट।
  • जीपीयूओपन tools: जीपीयू विश्लेषक, मेमोरी विज़ुअलाइज़र...
  • बाहरी उपकरण: रैडॉनटॉप (पाठ-आधारित उपयोगकर्ता इंटरफ़ेस अवलोकन)

प्रतिस्पर्धियों के साथ तुलना

आरओसीएम जीपीयू कंप्यूटिंग के उद्देश्य से समान स्टैक का एक प्रतियोगी है: एनवीडिया सीयूडीए और वनएपीआई (कंप्यूट त्वरण)।

एनवीडिया क्यूडा

क्यूब्लास और ऐसी उच्च-स्तरीय लाइब्रेरी तक एनवीडिया क्लोज-सोर्स है।
Nvidia Nvidia CUDA Compiler (NVCC) के रूप में Clang फ्रंटएंड और इसके समानांतर थ्रेड निष्पादन (PTX) LLVM जीपीयू बैकएंड को वेंडर करता है।
इसके ऊपर एक ओपन-सोर्स लेयर है, उदाहरण के लिए RAPIDS

इंटेल वनएपीआई


यह भी देखें

  • एएमडी#सॉफ्टवेयर - एएमडी के ड्राइवरों, एपीआई और विकास प्रयासों का एक सामान्य अवलोकन।
  • जीपीयूओपन - एएमडी का पूरक ग्राफ़िक्स स्टैक
  • एएमडी Radeon Software - एएमडी का सॉफ्टवेयर वितरण चैनल

संदर्भ

  1. "ROCm 5.3 release". GitHub. October 4, 2022. Retrieved October 10, 2022.
  2. "Question: What does ROCm stand for? · Issue #1628 · RadeonOpenCompute/ROCm". Github.com. Retrieved January 18, 2022.
  3. "Debian -- Details of package firmware-amd-graphics in buster". Packages.debian.org. Retrieved January 18, 2022.
  4. "AMD @ SC16: Radeon Open Compute Platform (ROCm) 1.3 Released, Boltzmann Comes to Fruition". anandtech.com. Retrieved January 19, 2022.
  5. "AMD @ SC15: Boltzmann Initiative Announced - C++ and CUDA Compilers for AMD GPUs". anandtech.com. Retrieved January 19, 2022.
  6. "User Guide for AMDGPU