बुनियादी रैखिक बीजगणित उपप्रोग्राम
Stable release | 3.8.0
/ 12 November 2017 |
---|---|
Written in | कार्यान्वयन पर निर्भर करता है |
Platform | क्रॉस-प्लेटफॉर्म |
Type | लाइब्रेरी |
Website | www |
बुनियादी रैखिक बीजगणित उपप्रोग्राम (BLAS) एक विनिर्देश (तकनीकी मानक) है जो सदिश जोड़, अदिश गुणन, अदिश गुणनफल, रैखिक संयोजन और आव्यूह गुणन जैसे सामान्य रैखिक बीजगणित संचालन करने के लिए निम्न-स्तरीय नित्यक्रम का एक समुच्चय निर्धारित करता है। वे रैखिक बीजगणित लाइब्रेरीों के लिए वास्तविक मानक निम्न-स्तरीय नित्यक्रम हैं; नित्यक्रम में C ("सीबीएलएएस अंतरापृष्ठ") और फोरट्रान ("बीएलएएस अंतरापृष्ठ") दोनों के लिए आवश्यक है। यद्यपि बीएलएएस विनिर्देश सामान्य है, बीएलएएस कार्यान्वयन प्रायः किसी विशेष यंत्र पर गति के लिए अनुकूलित होते हैं, इसलिए उनका उपयोग करने से पर्याप्त प्रदर्शन लाभ मिल सकता है। बीएलएएस कार्यान्वयन विशेष चल बिन्दु हार्डवेयर जैसे सदिश पंजीयन या एसआईएमडी निर्देशों का लाभ उठाएगा।
इसका प्रारंभ 1979 में फोरट्रान लाइब्रेरी के रूप में हुआ था[1] और इसका अंतरापृष्ठ बीएलएएस तकनीकी (BLAST) गोष्ठी द्वारा मानकीकृत किया गया था, जिसका नवीनतम बीएलएएस विवरण नेटलिब वेबसाइट पर पाया जा सकता है।[2] इस फोरट्रान लाइब्रेरी को संदर्भ कार्यान्वयन (कभी-कभी भ्रमित रूप से बीएलएएस लाइब्रेरी के रूप में संदर्भित) के रूप में जाना जाता है और यह गति के लिए अनुकूलित नहीं है परन्तु सार्वजनिक कार्यक्षेत्र में है।[3][4]
अधिकांश अभिकलन लाइब्रेरी जो रैखिक बीजगणित नित्यक्रम की प्रस्तुति करती हैं, सामान्य बीएलएएस उपयोगकर्ता अंतरापृष्ठ समादेश संरचनाओं के अनुरूप होती हैं, इस प्रकार उन लाइब्रेरीज़ (और संबंधित परिणाम) के लिए प्रश्न प्रायः बीएलएएस लाइब्रेरी शाखाओं, जैसे क्यूबीएलएएस (एनवीडिया जीपीयू, जीपीजीपीयू), रौकबीएलएएस (एएमडी जीपीयू, जीपीजीपी) और ओपनबीएलएएस के मध्य सुवाह्य होते हैं। यह अंतरसंचालनीयता तब अभिकलन वास्तुकला के विषम सोपानी (जैसे कि कुछ उन्नत गुच्छन कार्यान्वयन में पाए जाने वाले) के मध्य कार्यशील समरूप कूट कार्यान्वयन का आधार है। सीपीयू-आधारित बीएलएएस लाइब्रेरी शाखाओं के उदाहरणों: ओपनबीएलएएस, बीएलआईएस (बीएलएएस-जैसे लाइब्रेरी दृष्टांतीकरण सॉफ्टवेयर), शाखा प्रदर्शन लाइब्रेरीज़,[5] एटलस, और इंटेल गणित कर्नेल लाइब्रेरी (iMKL) में सम्मिलित हैं। एएमडी बीएलआईएस का एक द्विशाख रखता है जो एएमडी प्लेटफॉर्म के लिए अनुकूलित है, हालांकि यह स्पष्ट नहीं है कि एकीकृत लोकपाल संसाधन उस विशेष सॉफ्टवेयर-हार्डवेयर कार्यान्वयन में उपस्थित हैं या नहीं।[6] एटलस एक सुवाह्य लाइब्रेरी है जो स्वचालित रूप से एक यादृच्छिक वास्तुकला के लिए स्वयं को अनुकूलित करती है। आईएमकेएल एक फ्रीवेयर है[7] और सांपत्तिक[8] इंटेल प्रोसेसर पर प्रदर्शन पर जोर देने के साथ x86 और x86-64 के लिए अनुकूलित किया गया है।[9] ओपनबीएलएएस एक मुक्त स्रोत लाइब्रेरी है जिसे कई लोकप्रिय वास्तुकला के लिए हाथ से अनुकूलित किया गया है। एलआईएनपीएसीके मानदण्ड अपने प्रदर्शन माप के लिए बीएलएएस नित्यक्रम gemm
पर बहुत अधिक निर्भर करते हैं।
कई संख्यात्मक सॉफ़्टवेयर एप्लिकेशन रैखिक बीजगणित गणना करने के लिए बीएलएएस-संगत लाइब्रेरीज़ का उपयोग करते हैं, जिनमें एलएपीएसीके, एलआईएनपीएसीके, आर्मडिला, जीएनयू ऑक्टेव, मैथमैटिका, [10] एमएटीएलएबी,[11] न्यूमपी,[12] आर, जूलिया और लिस्प-स्टेट सम्मिलित हैं।।
पृष्ठभूमि
संख्यात्मक प्रोग्रामिंग के आगमन के साथ, परिष्कृत उप-नित्यक्रम लाइब्रेरी उपयोगी हो गईं। इन लाइब्रेरीज़ में सामान्य उच्च-स्तरीय गणितीय संचालन जैसे मूलनिर्धारण, आव्यूह व्युत्क्रमण और समीकरणों की प्रणाली को हल करने के लिए उप-नित्यक्रम सम्मिलित होंगे। चयन की भाषा फोरट्रान थी। सबसे प्रमुख संख्यात्मक प्रोग्रामिंग लाइब्रेरी आईबीएम का वैज्ञानिक उप-नित्यक्रम संवेष्टक (SSP) थी।[13] इन उप-नित्यक्रम लाइब्रेरीज़ ने प्रोग्रामर्स को अपनी विशिष्ट समस्याओं पर ध्यान केंद्रित करने और प्रसिद्ध कलन विधि को पुनः अनुप्रयुक्त करने से बचने की अनुमति दी। लाइब्रेरी नित्यक्रम भी औसत कार्यान्वयन से श्रेष्ठतर होगी; उदाहरण के लिए, आव्यूह कलन विधि, उन्नत संख्यात्मक सटीकता प्राप्त करने के लिए पूर्ण कीलकन का उपयोग कर सकता है। लाइब्रेरी नित्यक्रम में भी अधिक कुशल नित्यक्रम होगा। उदाहरण के लिए, किसी लाइब्रेरी में ऊपरी त्रिकोणीय आव्यूह को हल करने के लिए एक प्रोग्राम सम्मिलित हो सकता है। लाइब्रेरीज़ में कुछ कलन विधि के एकल-सटीक और दोहरे-सटीक संस्करण सम्मिलित होंगे।
प्रारंभ में, इन उप-नित्यक्रमों ने अपने निम्न-स्तरीय संचालनों के लिए हार्ड-कोडित लूप का उपयोग किया। उदाहरण के लिए, यदि किसी उप-नित्यक्रमों को आव्यूह गुणन करने की आवश्यकता होती है, तो उप-नित्यक्रमों में तीन स्थिर लूप होंगे। रैखिक बीजगणित प्रोग्रामों में कई सामान्य निम्न-स्तरीय संचालन (तथाकथित "कर्नेल" संचालन, संचालन प्रणाली से संबंधित नहीं) होते हैं।[14] 1973 और 1977 के मध्य, इनमें से कई कर्नेल संचालनों की पहचान की गई।[15] ये कर्नेल संचालन परिभाषित उप-नित्यक्रम बन गए जिन्हें गणित लाइब्रेरीज़ कॉल कर सकते थे। हार्ड-कोडित लूप की तुलना में कर्नेल कॉल के लाभ थे: लाइब्रेरी नित्यक्रम अधिक पठनीय होगी, बग की संभावना कम थी और कर्नेल कार्यान्वयन को गति के लिए अनुकूलित किया जा सकता था। अदिश और सदिश का उपयोग करके इन कर्नेल संचालनों के लिए एक विनिर्देश, स्तर -1 बुनियादी रैखिक बीजगणित उप-नित्यक्रम (BLAS), 1979 में प्रकाशित किया गया था।[16] बीएलएएस का उपयोग रैखिक बीजगणित उप-नित्यक्रम लाइब्रेरी एलआईएनपीएसीके को अनुप्रयुक्त करने के लिए किया गया था।
बीएलएएस संक्षिप्तीकरण उच्च प्रदर्शन के लिए अनुकूलन की अनुमति देता है। उदाहरण के लिए, एलआईएनपीएसीके एक सामान्य प्रयोजन लाइब्रेरी है जिसका उपयोग बिना किसी संशोधन के कई अलग-अलग यंत्रों पर किया जा सकता है। एलआईएनपीएसीके बीएलएएस के सामान्य संस्करण का उपयोग कर सकता है। प्रदर्शन प्राप्त करने के लिए, विभिन्न यंत्र बीएलएएस के अनुरूप संस्करणों का उपयोग कर सकती हैं। जैसे-जैसे परिकलक वास्तुकला अधिक परिष्कृत होते गए, सदिश प्रोसेसर सामने आया। एक सदिश यंत्र के लिए बीएलएएस यंत्र के तीव्र सदिश संचालन का उपयोग कर सकता है। हालांकि सदिश प्रोसेसर अंततः चयन से बाहर हो गए, आधुनिक सीपीयू में सदिश निर्देश बीएलएएस नित्यक्रम में इष्टतम प्रदर्शन के लिए आवश्यक हैं।
अन्य यंत्र सुविधाएँ उपलब्ध हो गईं और उनका उपयोग भी किया जा सकता है। परिणामस्वरूप, बीएलएएस को 1984 से 1986 तक स्तर-2 कर्नेल संचालनों के साथ संवर्धित किया गया था जो कि सदिश-आव्यूह संचालनों से संबंधित था। मेमोरी पदानुक्रम को शोषण करने योग्य चीज़ के रूप में भी मान्यता दी गई थी। कई परिकलकों में कैश मैमोरी होती है जो मुख्य मेमोरी से बहुत तीव्र होती है; आव्यूह प्रकलन को स्थानीयकृत रखने से कैश के उन्नत उपयोग की अनुमति मिलती है। 1987 और 1988 में, आव्यूह संचालन करने के लिए स्तर 3 बीएलएएस की पहचान की गई थी। स्तर 3 बीएलएएस ने खंड-विभाजित कलन विधि को प्रोत्साहित किया। एलएपीएसीके लाइब्रेरी स्तर 3 बीएलएएस का उपयोग करती है।[17]
मूल बीएलएएस केवल सघन रूप से संग्रहीत सदिश और आव्यूह से संबंधित है। बीएलएएस के अतिरिक्त विस्तार, जैसे विरल आव्यूहों, पर ध्यान दिया गया है।[18]
क्रियात्मकता
बीएलएएस क्रियात्मकता को नित्यक्रम के तीन समूहों में वर्गीकृत किया गया है जिन्हें स्तर कहा जाता है, जो परिभाषा और प्रकाशन के कालानुक्रमिक क्रम के साथ-साथ कलन विधि की जटिलताओं में बहुपद की डिग्री दोनों के अनुरूप है; स्तर 1 बीएलएएस संचालन में सामान्यतः रैखिक समय, O(n), स्तर 2 संचालन द्विघात समय और स्तर 3 संचालन घन समय लगता है।आधुनिक बीएलएएस कार्यान्वयन सामान्यतः सभी तीन स्तर प्रदान करते हैं।
स्तर 1
इस स्तर में बीएलएएस (1979) की मूल प्रस्तुति में वर्णित सभी नित्यक्रम सम्मिलित हैं।[1]जो किसी सरणी के क्रमभंग पर केवल सदिश संचालन को परिभाषित करता है: अदिश गुणनफल, मानक (गणित), शैली का एक सामान्यीकृत सदिश जोड़ हैं।
(जिसे axpy
, "a x और y" ) और कई अन्य संचालन कहा जाता है।
स्तर 2
इस स्तर में आव्यूह-सदिश संचालन सम्मिलित हैं, जिसमें अन्य चीजों के अतिरिक्त, एक सामान्यीकृत आव्यूह-सदिश गुणन (gemv
) सम्मिलित है:
साथ ही रैखिक समीकरण में x के लिए एक समाधानकर्ता भी है।
T त्रिकोणीय होने के साथ है। स्तर 2 बीएलएएस का प्रारुप 1984 में प्रारंभ हुआ, जिसके परिणाम 1988 में प्रकाशित हुए।[19]स्तर 2 उप-नित्यक्रम का उद्देश्य विशेष रूप से सदिश प्रोसेसर पर बीएलएएस का उपयोग करके प्रोग्रामों के प्रदर्शन में सुधार करना है, जहां स्तर 1 बीएलएएस उप-इष्टतम हैं क्योंकि वे संकलनकर्ता से संचालन की आव्यूह-सदिश प्रकृति को छिपाते हैं।[19]
स्तर 3
जहाँ A और B को वैकल्पिक रूप से नित्यक्रम के भीतर स्थानांतरित किया जा सकता है या हर्मिटियन-संयुग्मित किया जा सकता है और तीनों आव्यूहों को क्रमभंग किया जा सकता है। सामान्य आव्यूह गुणन A B, α को एक और C को उचित आकार के पूर्ण-शून्य आव्यूह पर व्यवस्थित करके किया जा सकता है।
स्तर 3 में अभिकलन के लिए नित्यक्रम भी सम्मिलित हैं:
जहाँ T अन्य क्रियात्मकताओं के मध्य एक त्रिकोणीय आव्यूह है।
कई वैज्ञानिक अनुप्रयोगों में आव्यूह गुणन की सर्वव्यापकता के कारण, जिसमें शेष स्तर 3 बीएलएएस का कार्यान्वयन भी सम्मिलित है,[20]और क्योंकि आव्यूह-सदिश गुणन की स्पष्ट पुनरावृत्ति से परे तीव्र कलन विधि उपस्थित हैं, gemm
अनुकूलन का एक प्रमुख लक्ष्य है बीएलएएस कार्यान्वयनकर्ता है। उदाहरण के लिए, A, B में से एक या दोनों को खंड आव्यूह में विघटित करके, gemm
को पुनरावर्ती रूप से कार्यान्वित किया जा सकता है। यह β मापदण्ड को सम्मिलित करने के लिए प्रेरणाओं में से एक है,[dubious ] ताकि पिछले खंडों के परिणाम जमा किये जा सकें। ध्यान दें कि इस अपघटन के लिए विशेष स्थिति β = 1 की आवश्यकता होती है जिसके लिए कई कार्यान्वयन अनुकूलित होते हैं, जिससे C के प्रत्येक मान के लिए एक गुणन समाप्त हो जाता है। यह अपघटन उत्पाद में उपयोग किए गए डेटा के स्थान और समय दोनों में संदर्भ के उन्नत स्थानीयकरण की अनुमति देता है। यह, बदले में, प्रणाली पर सीपीयू कैश का लाभ उठाता है।[21] एक से अधिक स्तर के कैश वाली प्रणाली के लिए, खंडकीयन को उस क्रम में दूसरी बार अनुप्रयुक्त किया जा सकता है जिसमें गणना में खंड का उपयोग किया जाता है। अनुकूलन के इन दोनों स्तरों का उपयोग एटीएलएएस जैसे कार्यान्वयन में किया जाता है। अभी हाल ही में, काज़ुशिगे गोटो के कार्यान्वयन से पता चला है कि केवल एल2 कैश के लिए खंड करना, टीएलबी मिस को कम करने के लिए सन्निहित मेमोरी में कॉपी करने के सावधानीपूर्वक परिशोधन के साथ मिलकर, एटीएलएएस से श्रेष्ठतर है।[22]इन विचारों पर आधारित एक उच्च सुव्यवस्थित कार्यान्वयन गोटोबीएलएएस, ओपनबीएलएएस और बीएलआईएस (सॉफ्टवेयर) का भाग है।
gemm
का एक सामान्य रूप gemm3m
है, जो "पारंपरिक चार वास्तविक आव्यूह गुणन और दो वास्तविक आव्यूह जोड़ के बजाय तीन वास्तविक आव्यूह गुणन और पांच वास्तविक आव्यूह जोड़" का उपयोग करके एक जटिल उत्पाद की गणना करता है, जो पीटर उंगर द्वारा पहली बार वर्णित स्ट्रैसन कलन विधि के समान कलन विधि है।[23]
कार्यान्वयन
- त्वरित
- मैकओएस और आईओएस के लिए एप्पल प्राधार, जिसमें बीएलएएस और एलएपीएसीके के समायोजित किए गए संस्करण सम्मिलित हैं।[24][25]
- शाखा प्रदर्शन लाइब्रेरी
- शाखा प्रदर्शन लाइब्रेरीज़, शाखा से उपलब्ध शाखा 64-बिट एआर्क64-आधारित प्रोसेसर का समर्थन करती है।[5]
एटीएलएएस
- स्वचालित रूप से समायोजित किए गए रैखिक बीजगणित सॉफ्टवेयर, C और फोरट्रान के लिए बीएलएएस एपीआई का एक मुक्त स्रोत सॉफ्टवेयर कार्यान्वयन है।[26]
- बीएलआईएस
- त्वरित दृष्टांतीकरण के लिए बीएलएएस जैसा लाइब्रेरी इंस्टेंटिएशन सॉफ्टवेयर प्राधार है। अधिकांश आधुनिक सीपीयू के लिए अनुकूलित है। बीएलआईएस, गोटोबीएलएएस का पूर्ण रीफैक्टरिंग है जो किसी दिए गए प्लेटफ़ॉर्म के लिए लिखे जाने वाले कोड की मात्रा को कम करता है।[27][28]
- सी++एएमपी बीएलएएस
- सी++एएमपी बीएलएएस लाइब्रेरी विज़ुअल सी++ के लिए माइक्रोसॉफ्ट के एएमपी भाषा विस्तार के लिए बीएलएएस का एक मुक्त स्रोत सॉफ़्टवेयर कार्यान्वयन है।[29]
- क्यूबीएलएएस
- एनवीडिया आधारित जीपीयू कार्ड के लिए अनुकूलित बीएलएएस, कुछ अतिरिक्त लाइब्रेरी कॉल की आवश्यकता होती है।[30]
- एनवीबीएलएएस
- एनवीडिया आधारित जीपीयू कार्ड के लिए अनुकूलित बीएलएएस, केवल स्तर 3 क्रिया प्रदान करता है, परन्तु अन्य बीएलएएस लाइब्रेरीज़ के लिए सीधे अंतःपात प्रतिस्थापन के रूप में है।[31]
- सीएलबीएलएएस
- एएमडी द्वारा बीएलएएस का एक ओपनसीएल कार्यान्वयन है। एएमडी अभिकलन लाइब्रेरीज़ का भाग है।[32]
- सीएलबीएलएएसटी
- अधिकांश बीएलएएस एपीआई का एक समायोजित किया गया ओपनसीएल कार्यान्वयन है।[33]
- ईजेन बीएलएएस
- एमपीएल अनुज्ञप्त प्राप्त ईजेन लाइब्रेरी के शीर्ष पर एक फोरट्रान 77 और सी बीएलएएस लाइब्रेरी कार्यान्वित की गई है, जो एक्स86, एक्स86-64, एआरएम (NEON) और पावरपीसी वास्तुकला का समर्थन करती है।
- ईएसएसएल
- आईबीएम की अभियांत्रिकी और वैज्ञानिक उप-नित्यक्रम लाइब्रेरी, एआईएक्स और लिनक्स के अंतर्गत पावरपीसी वास्तुकला का समर्थन करती है। [34]
- गोटोबीएलएएस
- कज़ुशिगे गोटो का बीएलएएस का बीएसडी-अनुज्ञप्त प्राप्त कार्यान्वयन, विशेष रूप से इंटेल नेहलेम/एटम, वीआईए नैनोप्रोसेसर, एएमडी ओपर्टन के लिए समायोजित किया गया है।[35]
जीएनयू वैज्ञानिक लाइब्रेरी
- कई संख्यात्मक नित्यक्रमों का बहु-प्लेटफॉर्म कार्यान्वयन है। इसमें सीबीएलएएस अंतरापृष्ठ सम्मिलित है।
- एचपी एमएलआईबी
- एचपी की गणित लाइब्रेरी एचपी-यूएक्स और लिनक्स के अंतर्गत आईए-64, पीए-आरआईएससी, एक्स86 और ओपर्टन वास्तुकला का समर्थन करती है।
- इंटेल एमकेएल
- इंटेल गणित कर्नेल लाइब्रेरी, एक्स86 32-बिट्स और 64-बिट्स का समर्थन करती है, जो इंटेल से निःशुल्क उपलब्ध है।[7]इंटेल पेंटियम, इंटेल कोर और इंटेल ज़ीऑन सीपीयू और इंटेल ज़ीऑन फाई के लिए अनुकूलन सम्मिलित हैं; लिनक्स, माइक्रोसॉफ़्ट विंडोज़ और मैक ओएस के लिए समर्थन।[36]
- मैथकीसन
- एनईसी की गणित लाइब्रेरी, सुपर-यूएक्स के अंतर्गत एनईसी एसएक्स वास्तुकला और लिनक्स के अंतर्गत इटेनियम का समर्थन करती है[37]
- नेटलिब बीएलएएस
- नेटलिब पर आधिकारिक संदर्भ कार्यान्वयन, फोरट्रान 77 में लिखा गया है।[38]
- नेटलिब सीबीएलएएस
- बीएलएएस के लिए संदर्भ C अंतरापृष्ठ है। C से फोरट्रान बीएलएएस को कॉल करना भी संभव (और लोकप्रिय) है।[39]
- ओपनबीएलएएस
- गोटोबीएलएएस पर आधारित अनुकूलित बीएलएएस, एक्स86, एक्स86-64, एमआईपीएस वास्तुकला और एआरएम वास्तुकला प्रोसेसर का समर्थन करता है।[40]
- पीडीएलआईबी/एसएक्स
- एनईसी एसएक्स-4 प्रणाली के लिए एनईसी की सार्वजनिक कार्यक्षेत्र गणितीय लाइब्रेरी है।[41]
- रौकबीएलएएस
- कार्यान्वयन जो आरओसीएम के माध्यम से एएमडी जीपीयू पर चलता है।[42]
- एससीएसएल
- एसजीआई की वैज्ञानिक अभिकलन सॉफ्टवेयर लाइब्रेरी में एसजीआई के आईरिक्स वर्कस्टेशन के लिए बीएलएएस और एलएपीएसीके कार्यान्वयन सम्मिलित हैं।[43]
- सन परफॉर्मेंस लाइब्रेरी
- सोलारिस 8, 9 और 10 के साथ-साथ लिनक्स के अंतर्गत एसपीएआरसी, कोर और एएमडी64 वास्तुकला के लिए अनुकूलित बीएलएएस और एलएपीएसीके हैं।[44]
- यूबीएलएएस
- एक सामान्य सी++ टेम्पलेट श्रेणी लाइब्रेरी जो बीएलएएस कार्यक्षमता प्रदान करती है। बूस्ट लाइब्रेरी का भाग है। यह एक एकीकृत संकेत पद्धति में कई हार्डवेयर-त्वरित लाइब्रेरीज़ को अनुबंधन प्रदान करता है। इसके अतिरिक्त, यूबीएलएएस उन्नत सी++ सुविधाओं का उपयोग करके कलन विधि की शुद्धता पर ध्यान केंद्रित करता है।[45]
बीएलएएस का उपयोग करने वाली लाइब्रेरी
- आर्माडिलो
- आर्माडिलो एक सी++ रैखिक बीजगणित लाइब्रेरी है जिसका लक्ष्य गति और उपयोग में सरलता के मध्य एक अच्छा संतुलन बनाना है। यह टेम्प्लेट श्रेणियों को नियोजित करता है और इसमें बीएलएएस/एटीएलएएस और एलएपीएसीके के लिए वैकल्पिक लिंक हैं। यह एनआईसीटीए (ऑस्ट्रेलिया में) द्वारा प्रायोजित है और इसे निःशुल्क अनुज्ञापत्र के अंतर्गत अनुज्ञप्त प्राप्त है।[46]
- एलएपीएसीके
- एलएपीएसीके बीएलएएस पर निर्मित एक उच्च स्तरीय रैखिक बीजगणित लाइब्रेरी है। बीएलएएस की तरह, एक संदर्भ कार्यान्वयन उपस्थित है, परन्तु लिबफ्लेम और एमकेएल जैसे कई विकल्प उपस्थित हैं।
- मीर
- D (प्रोग्रामिंग भाषा) में लिखित विज्ञान और यंत्र अधिगम के लिए एक एलएलवीएम-त्वरित सामान्य संख्यात्मक लाइब्रेरी है। यह सामान्य रैखिक बीजगणित उप-प्रोग्राम (GLAS) प्रदान करता है। इसे सीबीएलएएस कार्यान्वयन पर बनाया जा सकता है।[47]
समान लाइब्रेरी (बीएलएएस के साथ संगत नहीं)
- मौलिक
- मौलिक वितरित-मेमोरी सघन और विरल-प्रत्यक्ष रैखिक बीजगणित और अनुकूलन के लिए एक मुक्त स्रोत सॉफ्टवेयर है।[48]
- एचएएसईएम
- एक सी++ टेम्प्लेट लाइब्रेरी है, जो रैखिक समीकरणों को हल करने और ईजेन मानों की गणना करने में सक्षम है। इसे बीएसडी अनुज्ञापत्र के अंतर्गत अनुज्ञप्त प्राप्त है।[49]
- एलएएमए
- त्वरित गणित अनुप्रयोगों के लिए लाइब्रेरी (त्वरित गणित अनुप्रयोगों के लिए लाइब्रेरी) वितरित मेमोरी प्रणाली पर विभिन्न प्रकार के हार्डवेयर (जैसे सीयूडीए या ओपनसीएल के माध्यम से जीपीयू) को लक्षित करने वाले संख्यात्मक सॉल्वर लिखने के लिए एक सी++ टेम्पलेट लाइब्रेरी है, जो प्रोग्राम विकासक से हार्डवेयर विशिष्ट प्रोग्रामिंग को छुपाता है।
- एमटीएल4
- आव्यूह टेम्पलेट लाइब्रेरी संस्करण 4 एक सामान्य सी++ टेम्प्लेट लाइब्रेरी है जो विरल और सघन बीएलएएस कार्यक्षमता प्रदान करती है। एमटीएल4 सामान्य प्रोग्रामिंग के कारण एक सहज अंतरापृष्ठ (एमएटीएलएबी के समान) और व्यापक प्रयोज्यता स्थापित करता है।
विरल बीएलएएस
लाइब्रेरी के इतिहास के पर्यन्त विरल आव्यूहों को नियंत्रित करने के लिए बीएलएएस के कई विस्तार सुझाए गए हैं; विरल आव्यूह कर्नेल नित्यक्रम का एक छोटा समुच्चय अंततः 2002 में मानकीकृत किया गया था।[50]
प्रचयित बीएलएएस
पारंपरिक बीएलएएस फलन को ऐसे वास्तुकला में भी पोर्ट किया गया है जो जीपीयू जैसे बड़ी मात्रा में समानता का समर्थन करते हैं। यहां, पारंपरिक बीएलएएस फलन बड़े आव्यूह के लिए सामान्यतः अच्छा प्रदर्शन प्रदान करते हैं। हालाँकि, जब जीईएमएम नित्यक्रम का उपयोग करके कई छोटे आव्यूह के आव्यूह उत्पादों की गणना की जाती है, तो वे वास्तुकला महत्वपूर्ण प्रदर्शन हानि दर्शाते हैं। इस समस्या के समाधान के लिए, 2017 में बीएलएएस फलन का एक प्रचयित संस्करण निर्दिष्ट किया गया है।[51]
एक उदाहरण के रूप में, ऊपर से जीईएमएम नित्यक्रम लेते हुए, प्रचयित संस्करण कई आव्यूहों के लिए एक साथ निम्नलिखित गणना करता है:
अनुक्रमणिका वर्गाकार कोष्ठकों में इंगित करता है कि एक स्तंभ में प्रायः संचालन सभी आव्यूहों के लिए किया गया है, यह संचालन एक क्रमभंग प्रचयित मेमोरी अभिन्यास के लिए कार्यान्वित किया जाता है जहां सभी आव्यूह सरणी , और में संयोजित होते हैं।
प्रचयित बीएलएएस फलन एक बहुमुखी उपकरण हो सकते हैं और उदाहरण के लिए अनुमति दे सकते हैं। घातीय समाकलक और मैग्नस समाकलक का तीव्रता से कार्यान्वयन जो कई समय चरणों के साथ लंबी एकीकरण अवधि को नियंत्रित करते हैं।[52] यहां, आव्यूह घातांक, एकीकरण का अभिकलनीयतः बहुमूल्य भाग, प्रचयित बीएलएएस फलन का उपयोग करके सभी समय-चरणों के लिए समानांतर में कार्यान्वित किया जा सकता है।
यह भी देखें
- संख्यात्मक लाइब्रेरीों की सूची
- गणित कर्नेल लाइब्रेरी, इंटेल वास्तुकला के लिए अनुकूलित गणित लाइब्रेरी; इसमें बीएलएएस, एलएपीएसीके सम्मिलित हैं।
- संख्यात्मक रैखिक बीजगणित, समस्या का प्रकार जिसे बीएलएएस हल करता है।
संदर्भ
- ↑ 1.0 1.1 *Lawson, C. L.; Hanson, R. J.; Kincaid, D.; Krogh, F. T. (1979). "Basic Linear Algebra Subprograms for FORTRAN usage". ACM Trans. Math. Softw. 5 (3): 308–323. doi:10.1145/355841.355847. hdl:2060/19780018835. S2CID 6585321. Algorithm 539.
- ↑ "बीएलएएस तकनीकी फोरम". netlib.org. Retrieved 2017-07-07.
- ↑ blaseman Archived 2016-10-12 at the Wayback Machine "The products are the implementations of the public domain BLAS (Basic Linear Algebra Subprograms) and LAPACK (Linear Algebra PACKage), which have been developed by groups of people such as Prof. Jack Dongarra, University of Tennessee, USA and all published on the WWW (URL: http://www.netlib.org/)."[permanent dead link]
- ↑ Jack Dongarra; Gene Golub; Eric Grosse; Cleve Moler; Keith Moore. "Netlib and NA-Net: building a scientific computing community" (PDF). netlib.org. Retrieved 2016-02-13.
The Netlib software repository was created in 1984 to facilitate quick distribution of public domain software routines for use in scientific computation.
- ↑ 5.0 5.1 "शाखा प्रदर्शन पुस्तकालय". Arm. 2020. Retrieved 2020-12-16.
- ↑ "BLAS Library".
- ↑ 7.0 7.1 "इंटेल मैथ कर्नेल लाइब्रेरी (एमकेएल) के लिए कोई लागत विकल्प नहीं, स्वयं का समर्थन करें, रॉयल्टी-मुक्त". Intel. 2015. Retrieved 2015-08-31.
- ↑ "इंटेल गणित कर्नेल लाइब्रेरी (इंटेल एमकेएल)". Intel. 2015. Retrieved 2015-08-25.
- ↑ "अनुकूलन सूचना". Intel. 2012. Retrieved 2013-04-10.
- ↑ Douglas Quinney (2003). "So what's new in Mathematica 5.0?" (PDF). MSOR Connections. The Higher Education Academy. 3 (4). Archived from the original (PDF) on 2013-10-29.
- ↑ Cleve Moler (2000). "मैटलैब में लैपैक शामिल है". MathWorks. Retrieved 2013-10-26.
- ↑ Stéfan van der Walt; S. Chris Colbert & Gaël Varoquaux (2011). "The NumPy array: a structure for efficient numerical computation". Computing in Science and Engineering. 13 (2): 22–30. arXiv:1102.1523. Bibcode:2011CSE....13b..22V. doi:10.1109/MCSE.2011.37. S2CID 16907816.
- ↑ Boisvert, Ronald F. (2000). "Mathematical software: past, present, and future". Mathematics and Computers in Simulation. 54 (4–5): 227–241. arXiv:cs/0004004. Bibcode:2000cs........4004B. doi:10.1016/S0378-4754(00)00185-3. S2CID 15157725.
- ↑ Even the SSP (which appeared around 1966) had some basic routines such as RADD (add rows), CADD (add columns), SRMA (scale row and add to another row), and RINT (row interchange). These routines apparently were not used as kernel operations to implement other routines such as matrix inversion. See IBM (1970), System/360 Scientific Subroutine Package, Version III, Programmer's Manual (5th ed.), International Business Machines, GH20-0205-4.
- ↑ BLAST Forum 2001, p. 1.
- ↑ Lawson et al. 1979.
- ↑ BLAST Forum 2001, pp. 1–2.
- ↑ BLAST Forum 2001, p. 2.
- ↑ 19.0 19.1 Dongarra, Jack J.; Du Croz, Jeremy; Hammarling, Sven; Hanson, Richard J. (1988). "फोरट्रान बेसिक लीनियर अलजेब्रा सबप्रोग्राम्स का एक विस्तारित सेट". ACM Trans. Math. Softw. 14: 1–17. CiteSeerX 10.1.1.17.5421. doi:10.1145/42288.42291. S2CID 3579623.
- ↑ Goto, Kazushige; van de Geijn, Robert A. (2008). "High-performance implementation of the level-3 BLAS" (PDF). ACM Transactions on Mathematical Software. 35 (1): 1–14. doi:10.1145/1377603.1377607. S2CID 14722514.
- ↑ Golub, Gene H.; Van Loan, Charles F. (1996), Matrix Computations (3rd ed.), Johns Hopkins, ISBN 978-0-8018-5414-9
- ↑ Goto, Kazushige; van de Geijn, Robert A. (2008). "Anatomy of High-Performance Matrix Multiplication". ACM Transactions on Mathematical Software. 34 (3): 12:1–12:25. CiteSeerX 10.1.1.111.3873. doi:10.1145/1356052.1356053. ISSN 0098-3500. S2CID 9359223. (25 pages) [1]
- ↑ Van Zee, Field G.; Smith, Tyler M. (2017-07-24). "Implementing High-performance Complex Matrix Multiplication via the 3m and 4m Methods". ACM Transactions on Mathematical Software. 44 (1): 1–36. doi:10.1145/3086466. S2CID 25580883.
- ↑ "मार्गदर्शिकाएँ और नमूना कोड". developer.apple.com. Retrieved 2017-07-07.
- ↑ "मार्गदर्शिकाएँ और नमूना कोड". developer.apple.com. Retrieved 2017-07-07.
- ↑ "स्वचालित रूप से ट्यून किए गए रैखिक बीजगणित सॉफ्टवेयर (एटीएलएएस)". math-atlas.sourceforge.net. Retrieved 2017-07-07.
- ↑ blis: BLAS-like Library Instantiation Software Framework, flame, 2017-06-30, retrieved 2017-07-07
- ↑ BLIS GitHub Repository, 2021-10-15
- ↑ "सी++ एएमपी ब्लास लाइब्रेरी". CodePlex (in English). Retrieved 2017-07-07.
- ↑ "क्यूब्लास". NVIDIA Developer (in English). 2013-07-29. Retrieved 2017-07-07.
- ↑ "एनवीबीएलएएस". NVIDIA Developer (in English). 2018-05-15. Retrieved 2018-05-15.
- ↑ clBLAS: a software library containing BLAS functions written in OpenCL, clMathLibraries, 2017-07-03, retrieved 2017-07-07
- ↑ Nugteren, Cedric (2017-07-05), CLBlast: Tuned OpenCL BLAS, retrieved 2017-07-07
- ↑ IBM Knowledge Centre: Engineering and Scientific Subroutine Library
- ↑ Milfeld, Kent. "GotoBLAS2". Texas Advanced Computing Center. Archived from the original on 2020-03-23. Retrieved 2013-08-28.
- ↑ "Intel Math Kernel Library (Intel MKL) | Intel Software". software.intel.com (in English). Retrieved 2017-07-07.
- ↑ Mathkeisan, NEC. "उन्होंने सीखा". www.mathkeisan.com (in English). Retrieved 2017-07-07.
- ↑ "बीएलएएस (बुनियादी रैखिक बीजगणित उपप्रोग्राम)". www.netlib.org. Retrieved 2017-07-07.
- ↑ "बीएलएएस (बुनियादी रैखिक बीजगणित उपप्रोग्राम)". www.netlib.org. Retrieved 2017-07-07.
- ↑ "OpenBLAS : An optimized BLAS library". www.openblas.net. Retrieved 2017-07-07.
- ↑ "PDLIB/SX: Business Solution | NEC". Archived from the original on 2007-02-22. Retrieved 2007-05-20.
- ↑ "रॉकब्लास". rocmdocs.amd.com. Retrieved 2021-05-21.
- ↑ "SGI - SCSL Scientific Library: Home Page". Archived from the original on 2007-05-13. Retrieved 2007-05-20.
- ↑ "ओरेकल डेवलपर स्टूडियो". www.oracle.com. Retrieved 2017-07-07.
- ↑ "Boost Basic Linear Algebra - 1.60.0". www.boost.org. Retrieved 2017-07-07.
- ↑ "Armadillo: C++ linear algebra library". arma.sourceforge.net. Retrieved 2017-07-07.
- ↑ "डेलांग न्यूमेरिकल और सिस्टम लाइब्रेरीज़". GitHub.
- ↑ "Elemental: distributed-memory dense and sparse-direct linear algebra and optimization — Elemental". libelemental.org. Retrieved 2017-07-07.
- ↑ "बेसम". SourceForge (in English). 2015-08-17. Retrieved 2017-07-07.
- ↑ Duff, Iain S.; Heroux, Michael A.; Pozo, Roldan (2002). "An Overview of the Sparse Basic Linear Algebra Subprograms: The New Standard from the BLAS Technical Forum". ACM Transactions on Mathematical Software. 28 (2): 239–267. doi:10.1145/567806.567810. S2CID 9411006.
- ↑ Dongarra, Jack; Hammarling, Sven; Higham, Nicholas J.; Relton, Samuel D.; Valero-Lara, Pedro; Zounon, Mawussi (2017). "आधुनिक उच्च-प्रदर्शन कंप्यूटिंग सिस्टम पर बैचेड बीएलएएस का डिजाइन और प्रदर्शन". Procedia Computer Science. 108: 495–504. doi:10.1016/j.procs.2017.05.138.
- ↑ Herb, Konstantin; Welter, Pol (2022). "बैचेड बीएलएएस (बेसिक लीनियर अलजेब्रा सबप्रोग्राम्स) रूटीन का उपयोग करके समानांतर समय एकीकरण". Computer Physics Communications. 270: 108181. arXiv:2108.07126. doi:10.1016/j.cpc.2021.108181. S2CID 237091802.
अग्रिम पठन
- BLAST Forum (2001-08-21), Basic Linear Algebra Subprograms Technical (BLAST) Forum Standard, Knoxville, TN: University of Tennessee
- Dodson, D. S.; Grimes, R. G. (1982), "Remark on algorithm 539: Basic Linear Algebra Subprograms for Fortran usage", ACM Trans. Math. Softw., 8 (4): 403–404, doi:10.1145/356012.356020, S2CID 43081631
- Dodson, D. S. (1983), "Corrigendum: Remark on "Algorithm 539: Basic Linear Algebra Subroutines for FORTRAN usage"", ACM Trans. Math. Softw., 9: 140, doi:10.1145/356022.356032, S2CID 22163977
- J. J. Dongarra, J. Du Croz, S. Hammarling, and R. J. Hanson, Algorithm 656: An extended set of FORTRAN Basic Linear Algebra Subprograms, ACM Trans. Math. Softw., 14 (1988), pp. 18–32.
- J. J. Dongarra, J. Du Croz, I. S. Duff, and S. Hammarling, A set of Level 3 Basic Linear Algebra Subprograms, ACM Trans. Math. Softw., 16 (1990), pp. 1–17.
- J. J. Dongarra, J. Du Croz, I. S. Duff, and S. Hammarling, Algorithm 679: A set of Level 3 Basic Linear Algebra Subprograms, ACM Trans. Math. Softw., 16 (1990), pp. 18–28.
- New बीएलएएस
- L. S. Blackford, J. Demmel, J. Dongarra, I. Duff, S. Hammarling, G. Henry, M. Heroux, L. Kaufman, A. Lumsdaine, A. Petitet, R. Pozo, K. Remington, R. C. Whaley, An Updated Set of Basic Linear Algebra Subprograms (बीएलएएस), ACM Trans. Math. Softw., 28-2 (2002), pp. 135–151.
- J. Dongarra, Basic Linear Algebra Subprograms Technical Forum Standard, International Journal of High Performance Applications and Supercomputing, 16(1) (2002), pp. 1–111, and International Journal of High Performance Applications and Supercomputing, 16(2) (2002), pp. 115–199.
बाहरी संबंध
- बीएलएएस homepage on Netlib.org
- बीएलएएस FAQ
- बीएलएएस Quick Reference Guide from एलएपीएसीके Users' Guide
- Lawson Oral History One of the original authors of the बीएलएएस discusses its creation in an oral history interview. Charles L. Lawson Oral history interview by Thomas Haigh, 6 and 7 November 2004, San Clemente, California. Society for Industrial and Applied Mathematics, Philadelphia, PA.
- Dongarra Oral History In an oral history interview, Jack Dongarra explores the early relationship of बीएलएएस to एलआईएनपीएसीके, the creation of higher level बीएलएएस versions for new architectures, and his later work on the ATLAS system to automatically optimize बीएलएएस for particular machines. Jack Dongarra, Oral history interview by Thomas Haigh, 26 April 2005, University of Tennessee, Knoxville TN. Society for Industrial and Applied Mathematics, Philadelphia, PA
- How does बीएलएएस get such extreme performance? Ten naive 1000×1000 matrix multiplications (1010 floating point multiply-adds) takes 15.77 seconds on 2.6 GHz processor; बीएलएएस implementation takes 1.32 seconds.
- An Overview of the Sparse Basic Linear Algebra Subprograms: The New Standard from the बीएलएएस Technical Forum [2]