बुनियादी रैखिक बीजगणित उपप्रोग्राम

बेसिक लीनियर अलजेब्रा सबप्रोग्राम्स (बीएलएएस) एक विनिर्देश (तकनीकी मानक) है जो सदिश स्थल  जोड़, स्केलर गुणन, डॉट उत्पाद, रैखिक संयोजन और मैट्रिक्स गुणन जैसे सामान्य रैखिक बीजगणित संचालन करने के लिए निम्न-स्तरीय दिनचर्या का एक सेट निर्धारित करता है। वे रैखिक बीजगणित पुस्तकालयों के लिए वास्तविक मानक निम्न-स्तरीय रूटीन हैं; रूटीन में C (प्रोग्रामिंग भाषा) (CBLAS इंटरफ़ेस) और फोरट्रान (BLAS इंटरफ़ेस) दोनों के लिए बाइंडिंग है। यद्यपि बीएलएएस विनिर्देश सामान्य है, बीएलएएस कार्यान्वयन अक्सर किसी विशेष मशीन पर गति के लिए अनुकूलित होते हैं, इसलिए उनका उपयोग करने से पर्याप्त प्रदर्शन लाभ मिल सकता है। BLAS कार्यान्वयन विशेष फ़्लोटिंग पॉइंट हार्डवेयर जैसे वेक्टर रजिस्टर या SIMD निर्देशों का लाभ उठाएगा।

इसकी शुरुआत 1979 में फोरट्रान लाइब्रेरी के रूप में हुई थी और इसका इंटरफ़ेस BLAS टेक्निकल (BLAST) फोरम द्वारा मानकीकृत किया गया था, जिसकी नवीनतम BLAS रिपोर्ट नेटलिब वेबसाइट पर पाई जा सकती है। इस फोरट्रान लाइब्रेरी को संदर्भ कार्यान्वयन (कभी-कभी भ्रमित रूप से बीएलएएस लाइब्रेरी के रूप में संदर्भित) के रूप में जाना जाता है और यह गति के लिए अनुकूलित नहीं है लेकिन सार्वजनिक डोमेन में है। अधिकांश कंप्यूटिंग लाइब्रेरी जो रैखिक बीजगणित रूटीन की पेशकश करती हैं, सामान्य BLAS उपयोगकर्ता इंटरफ़ेस कमांड संरचनाओं के अनुरूप होती हैं, इस प्रकार उन लाइब्रेरीज़ (और संबंधित परिणाम) के लिए क्वेरीज़ अक्सर BLAS लाइब्रेरी शाखाओं के बीच पोर्टेबल होती हैं, जैसे CUDA#प्रोग्रामिंग_एबिलिटीज़ (एनवीडिया GPU, GPGPU), ROCm# rocBLAS_/_hipBLAS (amd GPU, GPGP), और OpenBLAS। यह अंतरसंचालनीयता तब कंप्यूटिंग आर्किटेक्चर के विषम कैस्केड (जैसे कि कुछ उन्नत क्लस्टरिंग कार्यान्वयन में पाए जाने वाले) के बीच कामकाजी समरूप कोड कार्यान्वयन का आधार है। सीपीयू-आधारित बीएलएएस लाइब्रेरी शाखाओं के उदाहरणों में शामिल हैं: ओपनबीएलएएस, बीएलआईएस (सॉफ्टवेयर) | बीएलआईएस (बीएलएएस-जैसे लाइब्रेरी इंस्टेंटिएशन सॉफ्टवेयर), आर्म परफॉर्मेंस लाइब्रेरीज़, स्वचालित रूप से ट्यून किए गए रैखिक बीजगणित सॉफ्टवेयर, और इंटेल गणित कर्नेल लाइब्रेरी (आईएमकेएल)। एएमडी बीएलआईएस का एक कांटा रखता है जो उन्नत लघु उपकरण प्लेटफॉर्म के लिए अनुकूलित है, हालांकि यह स्पष्ट नहीं है कि एकीकृत लोकपाल संसाधन उस विशेष सॉफ्टवेयर-हार्डवेयर कार्यान्वयन में मौजूद हैं या नहीं। एटलस एक पोर्टेबल लाइब्रेरी है जो स्वचालित रूप से एक मनमानी वास्तुकला के लिए खुद को अनुकूलित करती है। iMKL एक फ्रीवेयर है और मालिकाना इंटेल प्रोसेसर पर प्रदर्शन पर जोर देने के साथ विक्रेता लाइब्रेरी को x86 और x86-64 के लिए अनुकूलित किया गया है। ओपनबीएलएएस एक ओपन-सोर्स लाइब्रेरी है जिसे कई लोकप्रिय आर्किटेक्चर के लिए हाथ से अनुकूलित किया गया है। लिनपैक बेंचमार्क काफी हद तक बीएलएएस रूटीन पर निर्भर करते हैं  इसके प्रदर्शन माप के लिए.

कई संख्यात्मक सॉफ़्टवेयर एप्लिकेशन रैखिक बीजगणित गणना करने के लिए BLAS-संगत लाइब्रेरी का उपयोग करते हैं, जिनमें LAPACK, LINPACK, Armadilla (C++ लाइब्रेरी), GNU ऑक्टेव, मेथेमेटिका, शामिल हैं। मतलब, Numpy, आर (प्रोग्रामिंग भाषा), जूलिया (प्रोग्रामिंग भाषा) और लिस्प-स्टेट।

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

प्रारंभ में, इन सबरूटीन्स ने अपने निम्न-स्तरीय संचालन के लिए हार्ड-कोडेड लूप का उपयोग किया। उदाहरण के लिए, यदि किसी सबरूटीन को मैट्रिक्स गुणन करने की आवश्यकता होती है, तो सबरूटीन में तीन नेस्टेड लूप होंगे। रैखिक बीजगणित कार्यक्रमों में कई सामान्य निम्न-स्तरीय ऑपरेशन (तथाकथित कर्नेल ऑपरेशन, कर्नेल (ऑपरेटिंग सिस्टम) से संबंधित नहीं) होते हैं। 1973 और 1977 के बीच, इनमें से कई कर्नेल ऑपरेशनों की पहचान की गई। ये कर्नेल ऑपरेशन परिभाषित सबरूटीन बन गए जिन्हें गणित पुस्तकालय कॉल कर सकते थे। हार्ड-कोडेड लूप की तुलना में कर्नेल कॉल के फायदे थे: लाइब्रेरी रूटीन अधिक पठनीय होगी, बग की संभावना कम थी, और कर्नेल कार्यान्वयन को गति के लिए अनुकूलित किया जा सकता था। स्केलर (गणित) और वेक्टर रिक्त स्थान का उपयोग करके इन कर्नेल संचालन के लिए एक विनिर्देश, लेवल -1 बेसिक लीनियर अलजेब्रा सबरूटीन्स (बीएलएएस), 1979 में प्रकाशित किया गया था। BLAS का उपयोग रैखिक बीजगणित सबरूटीन लाइब्रेरी LINPACK को लागू करने के लिए किया गया था।

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

अन्य मशीन सुविधाएँ उपलब्ध हो गईं और उनका उपयोग भी किया जा सकता है। नतीजतन, बीएलएएस को 1984 से 1986 तक लेवल-2 कर्नेल ऑपरेशंस के साथ संवर्धित किया गया था जो कि वेक्टर-मैट्रिक्स ऑपरेशंस से संबंधित था। स्मृति पदानुक्रम को शोषण करने योग्य चीज़ के रूप में भी मान्यता दी गई थी। कई कंप्यूटरों में कैश मैमोरी होती है जो मुख्य मेमोरी से बहुत तेज़ होती है; मैट्रिक्स जोड़तोड़ को स्थानीयकृत रखने से कैश के बेहतर उपयोग की अनुमति मिलती है। 1987 और 1988 में, मैट्रिक्स-मैट्रिक्स संचालन करने के लिए स्तर 3 बीएलएएस की पहचान की गई थी। स्तर 3 बीएलएएस ने ब्लॉक-विभाजित एल्गोरिदम को प्रोत्साहित किया। LAPACK लाइब्रेरी लेवल 3 BLAS का उपयोग करती है।

मूल बीएलएएस केवल सघन रूप से संग्रहीत वैक्टर और मैट्रिक्स से संबंधित है। बीएलएएस के आगे के विस्तार, जैसे विरल मैट्रिक्स के लिए, पर ध्यान दिया गया है।

कार्यक्षमता
बीएलएएस कार्यक्षमता को रूटीन के तीन सेटों में वर्गीकृत किया गया है जिन्हें स्तर कहा जाता है, जो परिभाषा और प्रकाशन के कालानुक्रमिक क्रम के साथ-साथ एल्गोरिदम की जटिलताओं में बहुपद की डिग्री दोनों के अनुरूप है; स्तर 1 बीएलएएस संचालन में आम तौर पर रैखिक समय लगता है, $O(n)$, स्तर 2 संचालन द्विघात समय और स्तर 3 संचालन घन समय। आधुनिक बीएलएएस कार्यान्वयन आम तौर पर सभी तीन स्तर प्रदान करते हैं।

स्तर 1
इस स्तर में बीएलएएस (1979) की मूल प्रस्तुति में वर्णित सभी दिनचर्या शामिल हैं। जो किसी सरणी के स्ट्राइड पर केवल वेक्टर संचालन को परिभाषित करता है: डॉट उत्पाद, मानक (गणित), फॉर्म का एक सामान्यीकृत वेक्टर जोड़


 * $$\boldsymbol{y} \leftarrow \alpha \boldsymbol{x} + \boldsymbol{y}$$

(बुलाया, ए एक्स प्लस वाई ) और कई अन्य ऑपरेशन।

स्तर 2
इस स्तर में मैट्रिक्स-वेक्टर ऑपरेशन शामिल हैं, जिसमें अन्य चीजों के अलावा, एक सामान्यीकृत मैट्रिक्स-वेक्टर गुणन शामिल है :


 * $$\boldsymbol{y} \leftarrow \alpha \boldsymbol{A} \boldsymbol{x} + \beta \boldsymbol{y}$$

साथ ही इसके लिए एक सॉल्वर भी $x$रेखीय समीकरण में


 * $$\boldsymbol{T} \boldsymbol{x} = \boldsymbol{y}$$

साथ $T$त्रिकोणीय होना. लेवल 2 बीएलएएस का डिज़ाइन 1984 में शुरू हुआ, जिसके परिणाम 1988 में प्रकाशित हुए। लेवल 2 सबरूटीन्स का उद्देश्य विशेष रूप से वेक्टर प्रोसेसर पर बीएलएएस का उपयोग करके कार्यक्रमों के प्रदर्शन में सुधार करना है, जहां लेवल 1 बीएलएएस उप-इष्टतम हैं क्योंकि वे कंपाइलर से संचालन की मैट्रिक्स-वेक्टर प्रकृति को छिपाते हैं।

स्तर 3
यह स्तर, औपचारिक रूप से 1990 में प्रकाशित हुआ, इसमें मैट्रिक्स-मैट्रिक्स ऑपरेशन शामिल हैं, जिसमें सामान्य मैट्रिक्स गुणन शामिल है, फॉर्म का


 * $$\boldsymbol{C} \leftarrow \alpha \boldsymbol{A} \boldsymbol{B} + \beta \boldsymbol{C},$$

कहाँ $A$ और $B$ को वैकल्पिक रूप से खिसकाना  किया जा सकता है या हर्मिटियन संयुग्मित किया जा सकता है|रूटीन के अंदर हर्मिटियन-संयुग्मित किया जा सकता है, और तीनों मैट्रिक्स को स्ट्राइड किया जा सकता है। साधारण मैट्रिक्स गुणन $A B$सेटिंग द्वारा किया जा सकता है $α$ एक को और $C$ उचित आकार के एक पूर्ण-शून्य मैट्रिक्स के लिए।

लेवल 3 में कंप्यूटिंग के लिए रूटीन भी शामिल हैं


 * $$\boldsymbol{B} \leftarrow \alpha \boldsymbol{T}^{-1} \boldsymbol{B},$$

कहाँ T}अन्य कार्यक्षमताओं के साथ-साथ } एक त्रिकोणीय मैट्रिक्स है।

कई वैज्ञानिक अनुप्रयोगों में मैट्रिक्स गुणन की सर्वव्यापकता के कारण, जिसमें शेष स्तर 3 बीएलएएस का कार्यान्वयन भी शामिल है, और क्योंकि मैट्रिक्स-वेक्टर गुणन की स्पष्ट पुनरावृत्ति से परे तेज़ एल्गोरिदम मौजूद हैं,  बीएलएएस कार्यान्वयनकर्ताओं के लिए अनुकूलन का एक प्रमुख लक्ष्य है। उदाहरण के लिए, एक या दोनों को विघटित करके $A$, $B$ ब्लॉक मैट्रिक्स में,   मैट्रिक्स गुणन एल्गोरिथम#फूट डालो और जीतो एल्गोरिथम हो सकता है। यह शामिल करने के लिए प्रेरणाओं में से एक है $β$ पैरामीटर, ताकि पिछले ब्लॉकों के परिणाम जमा किये जा सकें। ध्यान दें कि इस अपघटन के लिए विशेष मामले की आवश्यकता होती है $β = 1$ जिसके लिए कई कार्यान्वयन अनुकूलित होते हैं, जिससे प्रत्येक मान के लिए एक गुणन समाप्त हो जाता है $C$. यह अपघटन उत्पाद में उपयोग किए गए डेटा के स्थान और समय दोनों में संदर्भ के बेहतर स्थानीयकरण की अनुमति देता है। यह, बदले में, सिस्टम पर सीपीयू कैश का लाभ उठाता है। एक से अधिक स्तर के कैश वाले सिस्टम के लिए, ब्लॉकिंग को उस क्रम में दूसरी बार लागू किया जा सकता है जिसमें गणना में ब्लॉक का उपयोग किया जाता है। अनुकूलन के इन दोनों स्तरों का उपयोग स्वचालित रूप से ट्यून किए गए रैखिक बीजगणित सॉफ़्टवेयर जैसे कार्यान्वयन में किया जाता है। अभी हाल ही में, हर एक परत के कार्यान्वयन से पता चला है कि केवल एल2 कैश के लिए ब्लॉक करना, अनुवाद लुकसाइड बफर मिस को कम करने के लिए सन्निहित मेमोरी में कॉपी करने के सावधानीपूर्वक परिशोधित विश्लेषण के साथ, स्वचालित रूप से ट्यून किए गए रैखिक बीजगणित सॉफ्टवेयर से बेहतर है। इन विचारों पर आधारित एक उच्च सुव्यवस्थित कार्यान्वयन गोटोब्लास, ओपनब्लास और बीएलआईएस (सॉफ्टवेयर) का हिस्सा है।

का एक सामान्य रूपांतर gemm है gemm3m, जो पारंपरिक चार वास्तविक मैट्रिक्स गुणन और दो वास्तविक मैट्रिक्स जोड़ के बजाय तीन वास्तविक मैट्रिक्स गुणन और पांच वास्तविक मैट्रिक्स जोड़ का उपयोग करके एक जटिल उत्पाद की गणना करता है, यह सड़क एल्गोरिदम के समान एक एल्गोरिदम है जिसे पहले पीटर अनगर द्वारा वर्णित किया गया था।

कार्यान्वयन

 * गति बढ़ाएं: macOS और IOS (Apple) के लिए Apple Inc. का ढांचा, जिसमें BLAS और LAPACK के ट्यून किए गए संस्करण शामिल हैं।
 * शाखा प्रदर्शन पुस्तकालय ़: आर्म परफॉर्मेंस लाइब्रेरीज़, आर्म 64-बिट AArch64-आधारित प्रोसेसर का समर्थन करती है, जो आर्म लिमिटेड से उपलब्ध है। ; एटलस: स्वचालित रूप से ट्यून किए गए रैखिक बीजगणित सॉफ्टवेयर, सी (प्रोग्रामिंग भाषा) और फोरट्रान के लिए बीएलएएस अप्लिकेशन प्रोग्रामिंग अंतरफलक का एक खुला स्रोत सॉफ्टवेयर  कार्यान्वयन।
 * बीएलआईएस (सॉफ्टवेयर): तीव्र इंस्टेंटिएशन के लिए बीएलएएस जैसा लाइब्रेरी इंस्टेंटिएशन सॉफ्टवेयर ढांचा। अधिकांश आधुनिक सीपीयू के लिए अनुकूलित। BLIS, GotoBLAS का पूर्ण रीफैक्टरिंग है जो किसी दिए गए प्लेटफ़ॉर्म के लिए लिखे जाने वाले कोड की मात्रा को कम करता है।
 * C++ AMP BLAS: C++ AMP BLAS लाइब्रेरी विज़ुअल C++ के लिए Microsoft के AMP भाषा एक्सटेंशन के लिए BLAS का एक ओपन-सोर्स सॉफ़्टवेयर कार्यान्वयन है।
 * cuBLAS: NVIDIA आधारित GPU कार्ड के लिए अनुकूलित BLAS, कुछ अतिरिक्त लाइब्रेरी कॉल की आवश्यकता होती है।
 * एनवीबीएलएएस: एनवीडिया आधारित जीपीयू कार्ड के लिए अनुकूलित बीएलएएस, केवल लेवल 3 फ़ंक्शन प्रदान करता है, लेकिन अन्य बीएलएएस पुस्तकालयों के लिए सीधे ड्रॉप-इन प्रतिस्थापन के रूप में।
 * सीएलबीएलएएस: एएमडी द्वारा बीएलएएस का एक ओपनसीएल कार्यान्वयन। एएमडी कंप्यूट लाइब्रेरीज़ का हिस्सा।
 * clBLAST: अधिकांश BLAS एपीआई का एक ट्यून किया गया OpenCL कार्यान्वयन।
 * Eigen BLAS: एक फोरट्रान और C (प्रोग्रामिंग भाषा) BLAS लाइब्रेरी, मोज़िला लाइसेंस-लाइसेंस प्राप्त Eigen (C++ लाइब्रेरी) के शीर्ष पर कार्यान्वित की गई है, जो x86, x86-64, ARM एआरएम वास्तुकला|ARM (NEON), और PowerPC आर्किटेक्चर का समर्थन करती है।
 * ईएसएसएल: आईबीएम की इंजीनियरिंग और वैज्ञानिक सबरूटीन लाइब्रेरी, AIX ऑपरेटिंग सिस्टम और लिनक्स के तहत पावरपीसी आर्किटेक्चर का समर्थन करती है।
 * गोटोब्लास: काज़ुशिगे गोटो का बीएलएएस का बीएसडी-लाइसेंस प्राप्त कार्यान्वयन, विशेष रूप से इंटेल नेहलेम (माइक्रोआर्किटेक्चर)/इंटेल एटम, वीआईए टेक्नोलॉजीज वीआईए नैनो, एएमडी ओपर्टन के लिए ट्यून किया गया है। ;जीएनयू वैज्ञानिक पुस्तकालय: कई संख्यात्मक दिनचर्या का बहु-मंच कार्यान्वयन। इसमें CBLAS इंटरफ़ेस शामिल है।
 * एचपी एमएलआईबी: हेवलेट पैकर्ड  की गणित लाइब्रेरी एचपी-यूएक्स और लिनक्स के तहत आईए-64, पीए-जोखिम, एक्स86 और ओपर्टन आर्किटेक्चर का समर्थन करती है।
 * इंटेल एमकेएल: इंटेल गणित कर्नेल लाइब्रेरी, x86 32-बिट्स और 64-बिट्स का समर्थन करती है, जो इंटेल से निःशुल्क उपलब्ध है। इंटेल पेंटियम (ब्रांड), इण्टेल कोर  और इंटेल ज़ीऑन सीपीयू और इंटेल ज़ीऑन फाई के लिए अनुकूलन शामिल हैं; Linux, Microsoft Windows और macOS के लिए समर्थन।
 * MathKeisan: NEC Corporation की गणित लाइब्रेरी, SUPER-UX के अंतर्गत NEC SX आर्किटेक्चर और Linux के अंतर्गत इटेनियम का समर्थन करती है
 * नेटलिब बीएलएएस: फोरट्रान में लिखा गया नेटलिब पर आधिकारिक संदर्भ कार्यान्वयन।
 * नेटलिब सीबीएलएएस: बीएलएएस के लिए संदर्भ सी (प्रोग्रामिंग भाषा) इंटरफ़ेस। सी से फोरट्रान बीएलएएस को कॉल करना भी संभव (और लोकप्रिय) है।
 * OpenBLAS: GotoBLAS पर आधारित अनुकूलित BLAS, x86, x86-64, MIPS आर्किटेक्चर और ARM आर्किटेक्चर प्रोसेसर का समर्थन करता है।
 * पीडीएलआईबी/एसएक्स: एनईसी एनईसी एसएक्स आर्किटेक्चर|एसएक्स-4 प्रणाली के लिए एनईसी कॉर्पोरेशन की सार्वजनिक डोमेन गणितीय लाइब्रेरी।
 * rocBLAS: कार्यान्वयन जो ROCm के माध्यम से AMD GPU पर चलता है।
 * एससीएसएल
 * सिलिकॉन ग्राफ़िक्स की वैज्ञानिक कंप्यूटिंग सॉफ्टवेयर लाइब्रेरी में एसजीआई के इरिक्स वर्कस्टेशन के लिए बीएलएएस और लैपैक कार्यान्वयन शामिल हैं।


 * सन परफॉर्मेंस लाइब्रेरी: सोलारिस 8, 9 और 10 के साथ-साथ लिनक्स के तहत SPARC, इंटेल कोर और AMD64 आर्किटेक्चर के लिए अनुकूलित BLAS और LAPACK।
 * यूबीएलएएस: एक सामान्य सी++ टेम्पलेट क्लास लाइब्रेरी जो बीएलएएस कार्यक्षमता प्रदान करती है। लाइब्रेरी को बूस्ट करें  का हिस्सा. यह एक एकीकृत नोटेशन में कई हार्डवेयर-त्वरित पुस्तकालयों को बाइंडिंग प्रदान करता है। इसके अलावा, uBLAS उन्नत C++ सुविधाओं का उपयोग करके एल्गोरिदम की शुद्धता पर ध्यान केंद्रित करता है।

बीएलएएस का उपयोग करने वाली लाइब्रेरी

 * आर्माडिलो: आर्माडिलो (सी++ लाइब्रेरी) एक सी++ रैखिक बीजगणित लाइब्रेरी है जिसका लक्ष्य गति और उपयोग में आसानी के बीच एक अच्छा संतुलन बनाना है। यह टेम्प्लेट कक्षाओं को नियोजित करता है, और इसमें BLAS/ATLAS और LAPACK के लिए वैकल्पिक लिंक हैं। यह NICTA (ऑस्ट्रेलिया में) द्वारा प्रायोजित है और इसे निःशुल्क लाइसेंस के तहत लाइसेंस प्राप्त है।
 * LAPACK: LAPACK BLAS पर निर्मित एक उच्च स्तरीय रैखिक बीजगणित पुस्तकालय है। बीएलएएस की तरह, एक संदर्भ कार्यान्वयन मौजूद है, लेकिन लिबफ्लेम और एमकेएल जैसे कई विकल्प मौजूद हैं।
 * मीर: डी (प्रोग्रामिंग भाषा) में लिखित विज्ञान और मशीन सीखने के लिए एक एलएलवीएम-त्वरित सामान्य संख्यात्मक पुस्तकालय। यह सामान्य रैखिक बीजगणित उपप्रोग्राम (GLAS) प्रदान करता है। इसे CBLAS कार्यान्वयन पर बनाया जा सकता है।

समान पुस्तकालय (बीएलएएस के साथ संगत नहीं)

 * एलिमेंटल: एलिमेंटल वितरित मेमोरी | वितरित-मेमोरी सघन और विरल-प्रत्यक्ष रैखिक बीजगणित और अनुकूलन के लिए एक खुला स्रोत सॉफ्टवेयर है।
 * HASEM: एक C++ टेम्प्लेट लाइब्रेरी है, जो रैखिक समीकरणों को हल करने और eigenvalues ​​​​की गणना करने में सक्षम है। इसे बीएसडी लाइसेंस के तहत लाइसेंस प्राप्त है।
 * लामा: त्वरित गणित अनुप्रयोगों के लिए लाइब्रेरी (त्वरित गणित अनुप्रयोगों के लिए लाइब्रेरी) वितरित मेमोरी सिस्टम पर विभिन्न प्रकार के हार्डवेयर (जैसे सीयूडीए या ओपनसीएल के माध्यम से जीपीयू) को लक्षित करने वाले संख्यात्मक सॉल्वर लिखने के लिए एक सी ++ टेम्पलेट लाइब्रेरी है, जो प्रोग्राम से हार्डवेयर विशिष्ट प्रोग्रामिंग को छिपाती है। डेवलपर
 * एमटीएल4: मैट्रिक्स टेम्पलेट लाइब्रेरी संस्करण 4 एक सामान्य सी++ टेम्प्लेट लाइब्रेरी है जो विरल और सघन बीएलएएस कार्यक्षमता प्रदान करती है। MTL4 सामान्य प्रोग्रामिंग  की बदौलत एक सहज इंटरफ़ेस (MATLAB के समान) और व्यापक प्रयोज्यता स्थापित करता है।

विरल BLAS
लाइब्रेरी के इतिहास के दौरान स्पार्स मैट्रिक्स को संभालने के लिए बीएलएएस के कई एक्सटेंशन सुझाए गए हैं; विरल मैट्रिक्स कर्नेल रूटीन का एक छोटा सेट अंततः 2002 में मानकीकृत किया गया था।

बैच किए गए BLAS
पारंपरिक बीएलएएस फ़ंक्शंस को ऐसे आर्किटेक्चर में भी पोर्ट किया गया है जो जीपीयू जैसे बड़ी मात्रा में समानता का समर्थन करते हैं। यहां, पारंपरिक बीएलएएस फ़ंक्शन बड़े मैट्रिक्स के लिए आम तौर पर अच्छा प्रदर्शन प्रदान करते हैं। हालाँकि, जब GEMM रूटीन का उपयोग करके कई छोटे मैट्रिक्स के मैट्रिक्स-मैट्रिक्स-उत्पादों की गणना की जाती है, तो वे आर्किटेक्चर महत्वपूर्ण प्रदर्शन हानि दिखाते हैं। इस समस्या के समाधान के लिए, 2017 में BLAS फ़ंक्शन का एक बैच संस्करण निर्दिष्ट किया गया है। एक उदाहरण के रूप में ऊपर से GEMM रूटीन लेते हुए, बैच संस्करण कई मैट्रिक्स के लिए एक साथ निम्नलिखित गणना करता है:

$$\boldsymbol{C}[k] \leftarrow \alpha \boldsymbol{A}[k] \boldsymbol{B}[k] + \beta \boldsymbol{C}[k] \quad \forall k $$ अनुक्रमणिका $$k$$ वर्गाकार कोष्ठकों में इंगित करता है कि ऑपरेशन सभी आव्यूहों के लिए किया गया है $$k$$ एक ढेर में. अक्सर, यह ऑपरेशन एक स्ट्राइड बैच्ड मेमोरी लेआउट के लिए कार्यान्वित किया जाता है जहां सभी मैट्रिक्स सरणी में संयोजित होते हैं $$A$$, $$B$$ और $$C$$.

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

यह भी देखें

 * संख्यात्मक पुस्तकालयों की सूची
 * गणित कर्नेल लाइब्रेरी, इंटेल आर्किटेक्चर के लिए अनुकूलित गणित लाइब्रेरी; इसमें BLAS, LAPACK शामिल हैं
 * संख्यात्मक रैखिक बीजगणित, समस्या का प्रकार जिसे BLAS हल करता है

अग्रिम पठन

 * 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 BLAS
 * 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 (BLAS), 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.
 * New BLAS
 * 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 (BLAS), 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.

बाहरी संबंध

 * BLAS homepage on Netlib.org
 * BLAS FAQ
 * BLAS Quick Reference Guide from LAPACK Users' Guide
 * Lawson Oral History One of the original authors of the BLAS 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 BLAS to LINPACK, the creation of higher level BLAS versions for new architectures, and his later work on the ATLAS system to automatically optimize BLAS 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 BLAS get such extreme performance? Ten naive 1000&times;1000 matrix multiplications (1010 floating point multiply-adds) takes 15.77 seconds on 2.6 GHz processor; BLAS implementation takes 1.32 seconds.
 * An Overview of the Sparse Basic Linear Algebra Subprograms: The New Standard from the BLAS Technical Forum