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

From Vigyanwiki
(Created page with "{{Short description|Routines for performing common linear algebra operations}} {{Use dmy dates|date=March 2020|cs1-dates=y}} {{Infobox software | name = BLAS...")
 
No edit summary
Line 2: Line 2:
{{Use dmy dates|date=March 2020|cs1-dates=y}}
{{Use dmy dates|date=March 2020|cs1-dates=y}}
{{Infobox software
{{Infobox software
| name                  = BLAS
| name                  = बीएलएएस
| logo                  = <!-- Image name is enough -->
| logo                  = <!-- Image name is enough -->
| logo alt              =  
| logo alt              =  
Line 18: Line 18:
| latest preview date    = <!-- {{Start date and age|YYYY|MM|DD|df=yes}} -->
| latest preview date    = <!-- {{Start date and age|YYYY|MM|DD|df=yes}} -->
| status                =  
| status                =  
| programming language  = depends on implementation
| programming language  = कार्यान्वयन पर निर्भर करता है
| operating system      =  
| operating system      =  
| platform              = [[Cross-platform]]
| platform              = [[क्रॉस-प्लेटफॉर्म]]
| size                  =  
| size                  =  
| language              =  
| language              =  
| language count        = <!-- Number only -->
| language count        = <!-- Number only -->
| language footnote      =  
| language footnote      =  
| genre                  = [[Library (computing)|Library]]
| genre                  = [[Library (computing)|पुस्तकालय]]
| license                =  
| license                =  
| alexa                  =  
| alexa                  =  
Line 33: Line 33:
}}
}}


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


इसकी शुरुआत 1979 में फोरट्रान लाइब्रेरी के रूप में हुई थी<ref name="lawson79">*{{cite journal |last1=Lawson |first1=C. L. |last2=Hanson |first2=R. J. |last3=Kincaid |first3=D. |last4=Krogh |first4=F. T. |title=Basic Linear Algebra Subprograms for FORTRAN usage |journal=ACM Trans. Math. Softw. |volume=5 |issue=3 |pages=308–323 |date=1979 |id=Algorithm 539 |doi=10.1145/355841.355847 |hdl=2060/19780018835|s2cid=6585321 |hdl-access=free }}</ref> और इसका इंटरफ़ेस BLAS टेक्निकल (BLAST) फोरम द्वारा मानकीकृत किया गया था, जिसकी नवीनतम BLAS रिपोर्ट [[नेटलिब]] वेबसाइट पर पाई जा सकती है।<ref>{{Cite web |url=http://netlib.org/blas/blast-forum|title=बीएलएएस तकनीकी फोरम|website=netlib.org |access-date=2017-07-07}}</ref> इस फोरट्रान लाइब्रेरी को [[संदर्भ कार्यान्वयन]] (कभी-कभी भ्रमित रूप से बीएलएएस लाइब्रेरी के रूप में संदर्भित) के रूप में जाना जाता है और यह गति के लिए अनुकूलित नहीं है लेकिन सार्वजनिक डोमेन में है।<ref>[http://www.lahey.com/docs/blaseman_lin62.pdf blaseman] {{webarchive |url=https://web.archive.org/web/20161012014431/http://www.lahey.com/docs/blaseman_lin62.pdf |date=2016-10-12}} ''"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/)."''{{dead link|date=October 2016 |bot=InternetArchiveBot |fix-attempted=yes }}</ref><ref>{{cite web |url=http://www.netlib.org/utk/people/JackDongarra/PAPERS/netlib-history6.pdf |title=Netlib and NA-Net: building a scientific computing community |author=Jack Dongarra |author2=Gene Golub |author3=Eric Grosse |author4=Cleve Moler |author5=Keith Moore |quote=The Netlib software repository was created in 1984 to facilitate quick distribution of public domain software routines for use in scientific computation. |publisher=netlib.org |access-date=2016-02-13}}</ref>
इसकी प्रारंभ 1979 में फोरट्रान पुस्तकालय के रूप में हुई थी<ref name="lawson79">*{{cite journal |last1=Lawson |first1=C. L. |last2=Hanson |first2=R. J. |last3=Kincaid |first3=D. |last4=Krogh |first4=F. T. |title=Basic Linear Algebra Subprograms for FORTRAN usage |journal=ACM Trans. Math. Softw. |volume=5 |issue=3 |pages=308–323 |date=1979 |id=Algorithm 539 |doi=10.1145/355841.355847 |hdl=2060/19780018835|s2cid=6585321 |hdl-access=free }}</ref> और इसका अंतरापृष्ठ बीएलएएस टेक्निकल (बीएलएएसT) फोरम द्वारा मानकीकृत किया गया था, जिसकी नवीनतम बीएलएएस रिपोर्ट [[नेटलिब]] वेबसाइट पर पाई जा सकती है।<ref>{{Cite web |url=http://netlib.org/blas/blast-forum|title=बीएलएएस तकनीकी फोरम|website=netlib.org |access-date=2017-07-07}}</ref> इस फोरट्रान पुस्तकालय को [[संदर्भ कार्यान्वयन]] (कभी-कभी भ्रमित रूप से बीएलएएस पुस्तकालय के रूप में संदर्भित) के रूप में जाना जाता है और यह गति के लिए अनुकूलित नहीं है परन्तु सार्वजनिक कार्यक्षेत्र में है।<ref>[http://www.lahey.com/docs/blaseman_lin62.pdf blaseman] {{webarchive |url=https://web.archive.org/web/20161012014431/http://www.lahey.com/docs/blaseman_lin62.pdf |date=2016-10-12}} ''"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/)."''{{dead link|date=October 2016 |bot=InternetArchiveBot |fix-attempted=yes }}</ref><ref>{{cite web |url=http://www.netlib.org/utk/people/JackDongarra/PAPERS/netlib-history6.pdf |title=Netlib and NA-Net: building a scientific computing community |author=Jack Dongarra |author2=Gene Golub |author3=Eric Grosse |author4=Cleve Moler |author5=Keith Moore |quote=The Netlib software repository was created in 1984 to facilitate quick distribution of public domain software routines for use in scientific computation. |publisher=netlib.org |access-date=2016-02-13}}</ref>
अधिकांश कंप्यूटिंग लाइब्रेरी जो रैखिक बीजगणित रूटीन की पेशकश करती हैं, सामान्य BLAS उपयोगकर्ता इंटरफ़ेस कमांड संरचनाओं के अनुरूप होती हैं, इस प्रकार उन लाइब्रेरीज़ (और संबंधित परिणाम) के लिए क्वेरीज़ अक्सर BLAS लाइब्रेरी शाखाओं के बीच पोर्टेबल होती हैं, जैसे CUDA#प्रोग्रामिंग_एबिलिटीज़ (एनवीडिया GPU, [[GPGPU]]), ROCm# rocBLAS_/_hipBLAS (amd GPU, GPGP), और [[OpenBLAS]]। यह अंतरसंचालनीयता तब कंप्यूटिंग आर्किटेक्चर के विषम कैस्केड (जैसे कि कुछ उन्नत क्लस्टरिंग कार्यान्वयन में पाए जाने वाले) के बीच कामकाजी समरूप कोड कार्यान्वयन का आधार है। सीपीयू-आधारित बीएलएएस लाइब्रेरी शाखाओं के उदाहरणों में शामिल हैं: ओपनबीएलएएस, [[बीएलआईएस (सॉफ्टवेयर)]] | बीएलआईएस (बीएलएएस-जैसे लाइब्रेरी इंस्टेंटिएशन सॉफ्टवेयर), आर्म परफॉर्मेंस लाइब्रेरीज़,<ref name="Arm Performance Libraries">{{cite web|date=2020 |title=शाखा प्रदर्शन पुस्तकालय|publisher=[[Arm]] |url=https://www.arm.com/products/development-tools/server-and-hpc/allinea-studio/performance-libraries |access-date=2020-12-16}}</ref> स्वचालित रूप से ट्यून किए गए रैखिक बीजगणित सॉफ्टवेयर, और [[इंटेल गणित कर्नेल लाइब्रेरी]] (आईएमकेएल)। एएमडी बीएलआईएस का एक कांटा रखता है जो [[उन्नत लघु उपकरण]] प्लेटफॉर्म के लिए अनुकूलित है, हालांकि यह स्पष्ट नहीं है कि एकीकृत लोकपाल संसाधन उस विशेष सॉफ्टवेयर-हार्डवेयर कार्यान्वयन में मौजूद हैं या नहीं।<ref>{{Cite web|url=https://developer.amd.com/amd-aocl/blas-library/|title=BLAS Library}}</ref> एटलस एक पोर्टेबल लाइब्रेरी है जो स्वचालित रूप से एक मनमानी वास्तुकला के लिए खुद को अनुकूलित करती है। iMKL एक फ्रीवेयर है<ref name="MKLfree">{{cite web |date=2015 |title=इंटेल मैथ कर्नेल लाइब्रेरी (एमकेएल) के लिए कोई लागत विकल्प नहीं, स्वयं का समर्थन करें, रॉयल्टी-मुक्त|publisher=[[Intel]] |url=http://software.intel.com/articles/free_mkl |access-date=31 August 2015}}</ref> और मालिकाना<ref name="MKLintel">{{cite web |date=2015 |title=इंटेल गणित कर्नेल लाइब्रेरी (इंटेल एमकेएल)|publisher=[[Intel]] |url=http://software.intel.com/intel-mkl |access-date=25 August 2015}}</ref> [[इंटेल]] प्रोसेसर पर प्रदर्शन पर जोर देने के साथ विक्रेता लाइब्रेरी को x86 और x86-64 के लिए अनुकूलित किया गया है।<ref name="optnotice">{{cite web |year=2012 |title=अनुकूलन सूचना|publisher=[[Intel]] |url=http://software.intel.com/articles/optimization-notice |access-date=10 April 2013}}</ref> ओपनबीएलएएस एक ओपन-सोर्स लाइब्रेरी है जिसे कई लोकप्रिय आर्किटेक्चर के लिए हाथ से अनुकूलित किया गया है। [[लिनपैक बेंचमार्क]] काफी हद तक बीएलएएस रूटीन पर निर्भर करते हैं <code>[[General Matrix Multiply|gemm]]</code> इसके प्रदर्शन माप के लिए.
अधिकांश अभिकलन पुस्तकालय जो रैखिक बीजगणित नित्यक्रम की प्रस्तुति करती हैं, सामान्य बीएलएएस उपयोगकर्ता अंतरापृष्ठ कमांड संरचनाओं के अनुरूप होती हैं, इस प्रकार उन पुस्तकालयज़ (और संबंधित परिणाम) के लिए क्वेरीज़ प्रायः बीएलएएस पुस्तकालय शाखाओं के मध्य पोर्टेबल होती हैं, जैसे CUDA#प्रोग्रामिंग_एबिलिटीज़ (एनवीडिया GPU, [[GPGPU]]), ROCm# rocबीएलएएस_/_hipबीएलएएस (amd GPU, GPGP), और [[OpenBLAS|Openबीएलएएस]]। यह अंतरसंक्रियाीयता तब अभिकलन वास्तुकला के विषम कैस्केड (जैसे कि कुछ उन्नत क्लस्टरिंग कार्यान्वयन में पाए जाने वाले) के मध्य कामकाजी समरूप कोड कार्यान्वयन का आधार है। सीपीयू-आधारित बीएलएएस पुस्तकालय शाखाओं के उदाहरणों में सम्मिलित हैं: ओपनबीएलएएस, [[बीएलआईएस (सॉफ्टवेयर)]] | बीएलआईएस (बीएलएएस-जैसे पुस्तकालय इंस्टेंटिएशन सॉफ्टवेयर), आर्म परफॉर्मेंस पुस्तकालयज़,<ref name="Arm Performance Libraries">{{cite web|date=2020 |title=शाखा प्रदर्शन पुस्तकालय|publisher=[[Arm]] |url=https://www.arm.com/products/development-tools/server-and-hpc/allinea-studio/performance-libraries |access-date=2020-12-16}}</ref> स्वचालित रूप से ट्यून किए गए रैखिक बीजगणित सॉफ्टवेयर, और [[इंटेल गणित कर्नेल लाइब्रेरी|इंटेल गणित कर्नेल पुस्तकालय]] (आईएमकेएल)। एएमडी बीएलआईएस का एक कांटा रखता है जो [[उन्नत लघु उपकरण]] प्लेटफॉर्म के लिए अनुकूलित है, हालांकि यह स्पष्ट नहीं है कि एकीकृत लोकपाल संसाधन उस विशेष सॉफ्टवेयर-हार्डवेयर कार्यान्वयन में उपस्थित हैं या नहीं।<ref>{{Cite web|url=https://developer.amd.com/amd-aocl/blas-library/|title=BLAS Library}}</ref> एटलस एक पोर्टेबल पुस्तकालय है जो स्वचालित रूप से एक मनमानी वास्तुकला के लिए खुद को अनुकूलित करती है। iMKL एक फ्रीवेयर है<ref name="MKLfree">{{cite web |date=2015 |title=इंटेल मैथ कर्नेल लाइब्रेरी (एमकेएल) के लिए कोई लागत विकल्प नहीं, स्वयं का समर्थन करें, रॉयल्टी-मुक्त|publisher=[[Intel]] |url=http://software.intel.com/articles/free_mkl |access-date=31 August 2015}}</ref> और मालिकाना<ref name="MKLintel">{{cite web |date=2015 |title=इंटेल गणित कर्नेल लाइब्रेरी (इंटेल एमकेएल)|publisher=[[Intel]] |url=http://software.intel.com/intel-mkl |access-date=25 August 2015}}</ref> [[इंटेल]] प्रोसेसर पर प्रदर्शन पर जोर देने के साथ विक्रेता पुस्तकालय को x86 और x86-64 के लिए अनुकूलित किया गया है।<ref name="optnotice">{{cite web |year=2012 |title=अनुकूलन सूचना|publisher=[[Intel]] |url=http://software.intel.com/articles/optimization-notice |access-date=10 April 2013}}</ref> ओपनबीएलएएस एक मुक्त स्रोत पुस्तकालय है जिसे कई लोकप्रिय वास्तुकला के लिए हाथ से अनुकूलित किया गया है। [[लिनपैक बेंचमार्क]] काफी हद तक बीएलएएस नित्यक्रम पर निर्भर करते हैं <code>[[General Matrix Multiply|जीईएमएम]]</code> इसके प्रदर्शन माप के लिए.


कई संख्यात्मक सॉफ़्टवेयर एप्लिकेशन रैखिक बीजगणित गणना करने के लिए BLAS-संगत लाइब्रेरी का उपयोग करते हैं, जिनमें [[LAPACK]], [[LINPACK]], Armadilla (C++ लाइब्रेरी), GNU ऑक्टेव, [[मेथेमेटिका]], शामिल हैं।<ref>{{cite journal |author=Douglas Quinney |date=2003 |title=So what's new in Mathematica 5.0? |journal=MSOR Connections |volume=3 |number=4 |publisher=The Higher Education Academy |url=http://78.158.56.101/archive/msor/headocs/34mathematica5.pdf |url-status=dead |archive-url=https://web.archive.org/web/20131029204826/http://78.158.56.101/archive/msor/headocs/34mathematica5.pdf |archive-date=2013-10-29 }}</ref> [[मतलब]],<ref>{{cite web |author=Cleve Moler |date=2000 |title=मैटलैब में लैपैक शामिल है|publisher=[[MathWorks]] |url=http://www.mathworks.com/company/newsletters/articles/matlab-incorporates-lapack.html |access-date=26 October 2013}}</ref> [[Numpy]],<ref name="cise">{{cite journal |title=The NumPy array: a structure for efficient numerical computation |author=Stéfan van der Walt |author2=S. Chris Colbert |author3=Gaël Varoquaux |name-list-style=amp |date=2011 |journal=Computing in Science and Engineering |volume=13 |issue=2 |pages=22–30 |arxiv=1102.1523|bibcode=2011CSE....13b..22V |doi=10.1109/MCSE.2011.37|s2cid=16907816 }}</ref> [[आर (प्रोग्रामिंग भाषा)]], [[जूलिया (प्रोग्रामिंग भाषा)]] और लिस्प-स्टेट।
कई संख्यात्मक सॉफ़्टवेयर एप्लिकेशन रैखिक बीजगणित गणना करने के लिए बीएलएएस-संगत पुस्तकालय का उपयोग करते हैं, जिनमें [[LAPACK|एलएपीएसीके]], [[LINPACK]], Armadilla (C++ पुस्तकालय), GNU ऑक्टेव, [[मेथेमेटिका]], सम्मिलित हैं।<ref>{{cite journal |author=Douglas Quinney |date=2003 |title=So what's new in Mathematica 5.0? |journal=MSOR Connections |volume=3 |number=4 |publisher=The Higher Education Academy |url=http://78.158.56.101/archive/msor/headocs/34mathematica5.pdf |url-status=dead |archive-url=https://web.archive.org/web/20131029204826/http://78.158.56.101/archive/msor/headocs/34mathematica5.pdf |archive-date=2013-10-29 }}</ref> [[मतलब]],<ref>{{cite web |author=Cleve Moler |date=2000 |title=मैटलैब में लैपैक शामिल है|publisher=[[MathWorks]] |url=http://www.mathworks.com/company/newsletters/articles/matlab-incorporates-lapack.html |access-date=26 October 2013}}</ref> [[Numpy]],<ref name="cise">{{cite journal |title=The NumPy array: a structure for efficient numerical computation |author=Stéfan van der Walt |author2=S. Chris Colbert |author3=Gaël Varoquaux |name-list-style=amp |date=2011 |journal=Computing in Science and Engineering |volume=13 |issue=2 |pages=22–30 |arxiv=1102.1523|bibcode=2011CSE....13b..22V |doi=10.1109/MCSE.2011.37|s2cid=16907816 }}</ref> [[आर (प्रोग्रामिंग भाषा)]], [[जूलिया (प्रोग्रामिंग भाषा)]] और लिस्प-स्टेट।


==पृष्ठभूमि==
==पृष्ठभूमि==
संख्यात्मक प्रोग्रामिंग के आगमन के साथ, परिष्कृत सबरूटीन लाइब्रेरी उपयोगी हो गईं। इन पुस्तकालयों में सामान्य उच्च-स्तरीय गणितीय संचालन जैसे रूट खोज, मैट्रिक्स उलटा और समीकरणों की प्रणाली को हल करने के लिए सबरूटीन शामिल होंगे। पसंद की भाषा [[फोरट्रान]] थी। सबसे प्रमुख संख्यात्मक प्रोग्रामिंग लाइब्रेरी [[आईबीएम]] का [[वैज्ञानिक सबरूटीन पैकेज]] (एसएसपी) थी।<ref>{{Cite journal | last1 = Boisvert | first1 = Ronald F. | year = 2000 | title = Mathematical software: past, present, and future | journal = Mathematics and Computers in Simulation | volume = 54 | issue = 4–5 | pages = 227–241 | doi = 10.1016/S0378-4754(00)00185-3 | arxiv = cs/0004004| bibcode = 2000cs........4004B | s2cid = 15157725 }}</ref> इन सबरूटीन लाइब्रेरीज़ ने प्रोग्रामर्स को अपनी विशिष्ट समस्याओं पर ध्यान केंद्रित करने और प्रसिद्ध एल्गोरिदम को फिर से लागू करने से बचने की अनुमति दी। पुस्तकालय की दिनचर्या भी औसत कार्यान्वयन से बेहतर होगी; उदाहरण के लिए, मैट्रिक्स एल्गोरिदम, बेहतर संख्यात्मक सटीकता प्राप्त करने के लिए पूर्ण पिवोटिंग का उपयोग कर सकता है। पुस्तकालय की दिनचर्या में भी अधिक कुशल दिनचर्या होगी। उदाहरण के लिए, किसी लाइब्रेरी में ऊपरी त्रिकोणीय मैट्रिक्स को हल करने के लिए एक प्रोग्राम शामिल हो सकता है। पुस्तकालयों में कुछ एल्गोरिदम के एकल-सटीक और दोहरे-सटीक संस्करण शामिल होंगे।
संख्यात्मक प्रोग्रामिंग के आगमन के साथ, परिष्कृत सबनित्यक्रम पुस्तकालय उपयोगी हो गईं। इन पुस्तकालयों में सामान्य उच्च-स्तरीय गणितीय संक्रिया जैसे रूट खोज, आव्यूह उलटा और समीकरणों की प्रणाली को हल करने के लिए सबनित्यक्रम सम्मिलित होंगे। पसंद की भाषा [[फोरट्रान]] थी। सबसे प्रमुख संख्यात्मक प्रोग्रामिंग पुस्तकालय [[आईबीएम]] का [[वैज्ञानिक सबरूटीन पैकेज|वैज्ञानिक सबनित्यक्रम पैकेज]] (एसएसपी) थी।<ref>{{Cite journal | last1 = Boisvert | first1 = Ronald F. | year = 2000 | title = Mathematical software: past, present, and future | journal = Mathematics and Computers in Simulation | volume = 54 | issue = 4–5 | pages = 227–241 | doi = 10.1016/S0378-4754(00)00185-3 | arxiv = cs/0004004| bibcode = 2000cs........4004B | s2cid = 15157725 }}</ref> इन सबनित्यक्रम पुस्तकालयज़ ने प्रोग्रामर्स को अपनी विशिष्ट समस्याओं पर ध्यान केंद्रित करने और प्रसिद्ध कलन विधि को फिर से अनुप्रयुक्त करने से बचने की अनुमति दी। पुस्तकालय की दिनचर्या भी औसत कार्यान्वयन से बेहतर होगी; उदाहरण के लिए, आव्यूह कलन विधि, बेहतर संख्यात्मक सटीकता प्राप्त करने के लिए पूर्ण पिवोटिंग का उपयोग कर सकता है। पुस्तकालय की दिनचर्या में भी अधिक कुशल दिनचर्या होगी। उदाहरण के लिए, किसी पुस्तकालय में ऊपरी त्रिकोणीय आव्यूह को हल करने के लिए एक प्रोग्राम सम्मिलित हो सकता है। पुस्तकालयों में कुछ कलन विधि के एकल-सटीक और दोहरे-सटीक संस्करण सम्मिलित होंगे।


प्रारंभ में, इन सबरूटीन्स ने अपने निम्न-स्तरीय संचालन के लिए हार्ड-कोडेड लूप का उपयोग किया। उदाहरण के लिए, यदि किसी सबरूटीन को मैट्रिक्स गुणन करने की आवश्यकता होती है, तो सबरूटीन में तीन नेस्टेड लूप होंगे। रैखिक बीजगणित कार्यक्रमों में कई सामान्य निम्न-स्तरीय ऑपरेशन (तथाकथित कर्नेल ऑपरेशन, [[कर्नेल (ऑपरेटिंग सिस्टम)]] से संबंधित नहीं) होते हैं।<ref>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 {{Citation |last=IBM |title=System/360 Scientific Subroutine Package, Version III, Programmer's Manual |edition=5th |publisher=International Business Machines |date=1970 |id=GH20-0205-4}}.</ref> 1973 और 1977 के बीच, इनमें से कई कर्नेल ऑपरेशनों की पहचान की गई।{{sfn|BLAST Forum|2001|p=1}} ये कर्नेल ऑपरेशन परिभाषित सबरूटीन बन गए जिन्हें गणित पुस्तकालय कॉल कर सकते थे। हार्ड-कोडेड लूप की तुलना में कर्नेल कॉल के फायदे थे: लाइब्रेरी रूटीन अधिक पठनीय होगी, बग की संभावना कम थी, और कर्नेल कार्यान्वयन को गति के लिए अनुकूलित किया जा सकता था। स्केलर (गणित) और वेक्टर रिक्त स्थान का उपयोग करके इन कर्नेल संचालन के लिए एक विनिर्देश, लेवल -1 बेसिक लीनियर अलजेब्रा सबरूटीन्स (बीएलएएस), 1979 में प्रकाशित किया गया था।{{sfn|Lawson|Hanson|Kincaid|Krogh|1979}} BLAS का उपयोग रैखिक बीजगणित सबरूटीन लाइब्रेरी LINPACK को लागू करने के लिए किया गया था।
प्रारंभ में, इन प्रक्रिया ने अपने निम्न-स्तरीय संक्रिया के लिए हार्ड-कोडेड लूप का उपयोग किया। उदाहरण के लिए, यदि किसी सबनित्यक्रम को आव्यूह गुणन करने की आवश्यकता होती है, तो सबनित्यक्रम में तीन नेस्टेड लूप होंगे। रैखिक बीजगणित कार्यक्रमों में कई सामान्य निम्न-स्तरीय संक्रिया (तथाकथित कर्नेल संक्रिया, [[कर्नेल (ऑपरेटिंग सिस्टम)|कर्नेल (ऑपरेटिंग प्रणाली)]] से संबंधित नहीं) होते हैं।<ref>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 {{Citation |last=IBM |title=System/360 Scientific Subroutine Package, Version III, Programmer's Manual |edition=5th |publisher=International Business Machines |date=1970 |id=GH20-0205-4}}.</ref> 1973 और 1977 के मध्य, इनमें से कई कर्नेल संक्रियाों की पहचान की गई।{{sfn|BLAST Forum|2001|p=1}} ये कर्नेल संक्रिया परिभाषित सबनित्यक्रम बन गए जिन्हें गणित पुस्तकालय कॉल कर सकते थे। हार्ड-कोडेड लूप की तुलना में कर्नेल कॉल के फायदे थे: पुस्तकालय नित्यक्रम अधिक पठनीय होगी, बग की संभावना कम थी, और कर्नेल कार्यान्वयन को गति के लिए अनुकूलित किया जा सकता था। स्केलर (गणित) और सदिश रिक्त स्थान का उपयोग करके इन कर्नेल संक्रिया के लिए एक विनिर्देश, लेवल -1 बेसिक लीनियर बीजगणित प्रक्रिया (बीएलएएस), 1979 में प्रकाशित किया गया था।{{sfn|Lawson|Hanson|Kincaid|Krogh|1979}} बीएलएएस का उपयोग रैखिक बीजगणित सबनित्यक्रम पुस्तकालय LINPACK को अनुप्रयुक्त करने के लिए किया गया था।


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


अन्य मशीन सुविधाएँ उपलब्ध हो गईं और उनका उपयोग भी किया जा सकता है। नतीजतन, बीएलएएस को 1984 से 1986 तक लेवल-2 कर्नेल ऑपरेशंस के साथ संवर्धित किया गया था जो कि वेक्टर-मैट्रिक्स ऑपरेशंस से संबंधित था। स्मृति पदानुक्रम को शोषण करने योग्य चीज़ के रूप में भी मान्यता दी गई थी। कई कंप्यूटरों में [[कैश मैमोरी]] होती है जो मुख्य मेमोरी से बहुत तेज़ होती है; मैट्रिक्स जोड़तोड़ को स्थानीयकृत रखने से कैश के बेहतर उपयोग की अनुमति मिलती है। 1987 और 1988 में, मैट्रिक्स-मैट्रिक्स संचालन करने के लिए स्तर 3 बीएलएएस की पहचान की गई थी। स्तर 3 बीएलएएस ने ब्लॉक-विभाजित एल्गोरिदम को प्रोत्साहित किया। LAPACK लाइब्रेरी लेवल 3 BLAS का उपयोग करती है।{{sfn|BLAST Forum|2001|pp=1&ndash;2}}
अन्य यंत्र सुविधाएँ उपलब्ध हो गईं और उनका उपयोग भी किया जा सकता है। नतीजतन, बीएलएएस को 1984 से 1986 तक लेवल-2 कर्नेल ऑपरेशंस के साथ संवर्धित किया गया था जो कि सदिश-आव्यूह ऑपरेशंस से संबंधित था। स्मृति पदानुक्रम को शोषण करने योग्य चीज़ के रूप में भी मान्यता दी गई थी। कई परिकलकों में [[कैश मैमोरी]] होती है जो मुख्य मेमोरी से बहुत तीव्र होती है; आव्यूह जोड़तोड़ को स्थानीयकृत रखने से कैश के बेहतर उपयोग की अनुमति मिलती है। 1987 और 1988 में, आव्यूह-आव्यूह संक्रिया करने के लिए स्तर 3 बीएलएएस की पहचान की गई थी। स्तर 3 बीएलएएस ने खंड-विभाजित कलन विधि को प्रोत्साहित किया। एलएपीएसीके पुस्तकालय लेवल 3 बीएलएएस का उपयोग करती है।{{sfn|BLAST Forum|2001|pp=1&ndash;2}}


मूल बीएलएएस केवल सघन रूप से संग्रहीत वैक्टर और मैट्रिक्स से संबंधित है। बीएलएएस के आगे के विस्तार, जैसे विरल मैट्रिक्स के लिए, पर ध्यान दिया गया है।{{sfn|BLAST Forum|2001|p=2}}
मूल बीएलएएस केवल सघन रूप से संग्रहीत सदिश और आव्यूह से संबंधित है। बीएलएएस के आगे के विस्तार, जैसे विरल आव्यूह के लिए, पर ध्यान दिया गया है।{{sfn|BLAST Forum|2001|p=2}}


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


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


:<math>\boldsymbol{y} \leftarrow \alpha \boldsymbol{x} + \boldsymbol{y}</math>
:<math>\boldsymbol{y} \leftarrow \alpha \boldsymbol{x} + \boldsymbol{y}</math>
(बुलाया<code>axpy</code>, ए एक्स प्लस वाई ) और कई अन्य ऑपरेशन।
(बुलाया<code>axpy</code>, ए एक्स प्लस वाई ) और कई अन्य संक्रिया।


===स्तर 2===
===स्तर 2===
इस स्तर में मैट्रिक्स-वेक्टर ऑपरेशन शामिल हैं, जिसमें अन्य चीजों के अलावा, एक सामान्यीकृत मैट्रिक्स-वेक्टर गुणन शामिल है (<code>gemv</code>):
इस स्तर में आव्यूह-सदिश संक्रिया सम्मिलित हैं, जिसमें अन्य चीजों के अतिरिक्त, एक सामान्यीकृत आव्यूह-सदिश गुणन सम्मिलित है (<code>gemv</code>):


:<math>\boldsymbol{y} \leftarrow \alpha \boldsymbol{A} \boldsymbol{x} + \beta \boldsymbol{y}</math>
:<math>\boldsymbol{y} \leftarrow \alpha \boldsymbol{A} \boldsymbol{x} + \beta \boldsymbol{y}</math>
Line 67: Line 67:


:<math>\boldsymbol{T} \boldsymbol{x} = \boldsymbol{y}</math>
:<math>\boldsymbol{T} \boldsymbol{x} = \boldsymbol{y}</math>
साथ {{math|'''''T'''''}}त्रिकोणीय होना. लेवल 2 बीएलएएस का डिज़ाइन 1984 में शुरू हुआ, जिसके परिणाम 1988 में प्रकाशित हुए।<ref name="dongarra88"/>लेवल 2 सबरूटीन्स का उद्देश्य विशेष रूप से वेक्टर प्रोसेसर पर बीएलएएस का उपयोग करके कार्यक्रमों के प्रदर्शन में सुधार करना है, जहां लेवल 1 बीएलएएस उप-इष्टतम हैं क्योंकि वे कंपाइलर से संचालन की मैट्रिक्स-वेक्टर प्रकृति को छिपाते हैं।<ref name="dongarra88">{{cite journal |first1=Jack J. |last1=Dongarra |first2=Jeremy |last2=Du Croz |first3=Sven |last3=Hammarling |first4=Richard J. |last4=Hanson |title=फोरट्रान बेसिक लीनियर अलजेब्रा सबप्रोग्राम्स का एक विस्तारित सेट|journal=ACM Trans. Math. Softw. |volume=14 |date=1988 |pages=1–17 |doi=10.1145/42288.42291 |citeseerx=10.1.1.17.5421 |s2cid=3579623 }}</ref>
साथ {{math|'''''T'''''}}त्रिकोणीय होना. लेवल 2 बीएलएएस का डिज़ाइन 1984 में शुरू हुआ, जिसके परिणाम 1988 में प्रकाशित हुए।<ref name="dongarra88"/>लेवल 2 प्रक्रिया का उद्देश्य विशेष रूप से सदिश प्रोसेसर पर बीएलएएस का उपयोग करके कार्यक्रमों के प्रदर्शन में सुधार करना है, जहां लेवल 1 बीएलएएस उप-इष्टतम हैं क्योंकि वे कंपाइलर से संक्रिया की आव्यूह-सदिश प्रकृति को छिपाते हैं।<ref name="dongarra88">{{cite journal |first1=Jack J. |last1=Dongarra |first2=Jeremy |last2=Du Croz |first3=Sven |last3=Hammarling |first4=Richard J. |last4=Hanson |title=फोरट्रान बेसिक लीनियर अलजेब्रा सबप्रोग्राम्स का एक विस्तारित सेट|journal=ACM Trans. Math. Softw. |volume=14 |date=1988 |pages=1–17 |doi=10.1145/42288.42291 |citeseerx=10.1.1.17.5421 |s2cid=3579623 }}</ref>




===स्तर 3===
===स्तर 3===
यह स्तर, औपचारिक रूप से 1990 में प्रकाशित हुआ,<ref name="level3">{{Cite journal |last1=Dongarra |first1=Jack J. |last2=Du Croz |first2=Jeremy |last3=Hammarling |first3=Sven |last4=Duff |first4=Iain S. |title=A set of level 3 basic linear algebra subprograms |doi=10.1145/77626.79170 |date=1990 |journal=[[ACM Transactions on Mathematical Software]] |issn=0098-3500 |volume=16 |issue=1 |pages=1–17|s2cid=52873593 }}</ref> इसमें मैट्रिक्स-मैट्रिक्स ऑपरेशन शामिल हैं, जिसमें सामान्य मैट्रिक्स गुणन शामिल है (<code>gemm</code>), फॉर्म का
यह स्तर, औपचारिक रूप से 1990 में प्रकाशित हुआ,<ref name="level3">{{Cite journal |last1=Dongarra |first1=Jack J. |last2=Du Croz |first2=Jeremy |last3=Hammarling |first3=Sven |last4=Duff |first4=Iain S. |title=A set of level 3 basic linear algebra subprograms |doi=10.1145/77626.79170 |date=1990 |journal=[[ACM Transactions on Mathematical Software]] |issn=0098-3500 |volume=16 |issue=1 |pages=1–17|s2cid=52873593 }}</ref> इसमें आव्यूह-आव्यूह संक्रिया सम्मिलित हैं, जिसमें सामान्य आव्यूह गुणन सम्मिलित है (<code>जीईएमएम</code>), फॉर्म का


:<math>\boldsymbol{C} \leftarrow \alpha \boldsymbol{A} \boldsymbol{B} + \beta \boldsymbol{C},</math>
:<math>\boldsymbol{C} \leftarrow \alpha \boldsymbol{A} \boldsymbol{B} + \beta \boldsymbol{C},</math>
कहाँ {{math|'''''A'''''}} और {{math|'''''B'''''}} को वैकल्पिक रूप से [[ खिसकाना ]] किया जा सकता है या [[हर्मिटियन संयुग्म]]ित किया जा सकता है|रूटीन के अंदर हर्मिटियन-संयुग्मित किया जा सकता है, और तीनों मैट्रिक्स को स्ट्राइड किया जा सकता है। साधारण मैट्रिक्स गुणन {{math|'''''A B'''''}}सेटिंग द्वारा किया जा सकता है {{math|''α''}} एक को और {{math|'''''C'''''}} उचित आकार के एक पूर्ण-शून्य मैट्रिक्स के लिए।
जहाँ {{math|'''''A'''''}} और {{math|'''''B'''''}} को वैकल्पिक रूप से [[ खिसकाना ]] किया जा सकता है या [[हर्मिटियन संयुग्म]]ित किया जा सकता है|नित्यक्रम के अंदर हर्मिटियन-संयुग्मित किया जा सकता है, और तीनों आव्यूह को स्ट्राइड किया जा सकता है। साधारण आव्यूह गुणन {{math|'''''A B'''''}}समूहिंग द्वारा किया जा सकता है {{math|''α''}} एक को और {{math|'''''C'''''}} उचित आकार के एक पूर्ण-शून्य आव्यूह के लिए।


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


:<math>\boldsymbol{B} \leftarrow \alpha \boldsymbol{T}^{-1} \boldsymbol{B},</math>
:<math>\boldsymbol{B} \leftarrow \alpha \boldsymbol{T}^{-1} \boldsymbol{B},</math>
कहाँ {{math|'''''T'''''}अन्य कार्यक्षमताओं के साथ-साथ } एक [[त्रिकोणीय मैट्रिक्स]] है।
<nowiki>जहाँ {{math|</nowiki>'''''T'''''}अन्य कार्यक्षमताओं के साथ-साथ } एक [[त्रिकोणीय मैट्रिक्स|त्रिकोणीय आव्यूह]] है।


कई वैज्ञानिक अनुप्रयोगों में मैट्रिक्स गुणन की सर्वव्यापकता के कारण, जिसमें शेष स्तर 3 बीएलएएस का कार्यान्वयन भी शामिल है,<ref name="Geijn_2008"/>और क्योंकि मैट्रिक्स-वेक्टर गुणन की स्पष्ट पुनरावृत्ति से परे तेज़ एल्गोरिदम मौजूद हैं, <code>gemm</code> बीएलएएस कार्यान्वयनकर्ताओं के लिए अनुकूलन का एक प्रमुख लक्ष्य है। उदाहरण के लिए, एक या दोनों को विघटित करके {{math|'''''A'''''}}, {{math|'''''B'''''}} [[ब्लॉक मैट्रिक्स]] में, <code>gemm</code> मैट्रिक्स गुणन एल्गोरिथम#फूट डालो और जीतो एल्गोरिथम हो सकता है। यह शामिल करने के लिए प्रेरणाओं में से एक है {{math|''β''}} पैरामीटर,{{dubious|Reason for beta parameter|date=January 2015}} ताकि पिछले ब्लॉकों के परिणाम जमा किये जा सकें। ध्यान दें कि इस अपघटन के लिए विशेष मामले की आवश्यकता होती है {{math|''β'' {{=}} 1}} जिसके लिए कई कार्यान्वयन अनुकूलित होते हैं, जिससे प्रत्येक मान के लिए एक गुणन समाप्त हो जाता है {{math|'''''C'''''}}. यह अपघटन उत्पाद में उपयोग किए गए डेटा के स्थान और समय दोनों में संदर्भ के बेहतर स्थानीयकरण की अनुमति देता है। यह, बदले में, सिस्टम पर [[सीपीयू कैश]] का लाभ उठाता है।<ref>{{Citation | last1=Golub | first1=Gene H. | author1-link=Gene H. Golub | last2=Van Loan | first2=Charles F. | author2-link=Charles F. Van Loan | title=Matrix Computations | publisher=Johns Hopkins | edition=3rd | isbn=978-0-8018-5414-9 |date=1996}}</ref> एक से अधिक स्तर के कैश वाले सिस्टम के लिए, ब्लॉकिंग को उस क्रम में दूसरी बार लागू किया जा सकता है जिसमें गणना में ब्लॉक का उपयोग किया जाता है। अनुकूलन के इन दोनों स्तरों का उपयोग स्वचालित रूप से ट्यून किए गए रैखिक बीजगणित सॉफ़्टवेयर जैसे कार्यान्वयन में किया जाता है। अभी हाल ही में, [[हर एक परत]] के कार्यान्वयन से पता चला है कि केवल [[एल2 कैश]] के लिए ब्लॉक करना, अनुवाद लुकसाइड बफर मिस को कम करने के लिए सन्निहित मेमोरी में कॉपी करने के सावधानीपूर्वक परिशोधित विश्लेषण के साथ, स्वचालित रूप से ट्यून किए गए रैखिक बीजगणित सॉफ्टवेयर से बेहतर है।<ref name="Kazushige_2008"/>इन विचारों पर आधारित एक उच्च सुव्यवस्थित कार्यान्वयन [[गोटोब्लास]], ओपनब्लास और बीएलआईएस (सॉफ्टवेयर) का हिस्सा है।
कई वैज्ञानिक अनुप्रयोगों में आव्यूह गुणन की सर्वव्यापकता के कारण, जिसमें शेष स्तर 3 बीएलएएस का कार्यान्वयन भी सम्मिलित है,<ref name="Geijn_2008"/>और क्योंकि आव्यूह-सदिश गुणन की स्पष्ट पुनरावृत्ति से परे तीव्र कलन विधि उपस्थित हैं, <code>जीईएमएम</code> बीएलएएस कार्यान्वयनकर्ताओं के लिए अनुकूलन का एक प्रमुख लक्ष्य है। उदाहरण के लिए, एक या दोनों को विघटित करके {{math|'''''A'''''}}, {{math|'''''B'''''}} [[ब्लॉक मैट्रिक्स|खंड आव्यूह]] में, <code>जीईएमएम</code> आव्यूह गुणन एल्गोरिथम#फूट डालो और जीतो एल्गोरिथम हो सकता है। यह सम्मिलित करने के लिए प्रेरणाओं में से एक है {{math|''β''}} मापदण्ड,{{dubious|Reason for beta parameter|date=January 2015}} ताकि पिछले खंडों के परिणाम जमा किये जा सकें। ध्यान दें कि इस अपघटन के लिए विशेष मामले की आवश्यकता होती है {{math|''β'' {{=}} 1}} जिसके लिए कई कार्यान्वयन अनुकूलित होते हैं, जिससे प्रत्येक मान के लिए एक गुणन समाप्त हो जाता है {{math|'''''C'''''}}. यह अपघटन उत्पाद में उपयोग किए गए डेटा के स्थान और समय दोनों में संदर्भ के बेहतर स्थानीयकरण की अनुमति देता है। यह, बदले में, प्रणाली पर [[सीपीयू कैश]] का लाभ उठाता है।<ref>{{Citation | last1=Golub | first1=Gene H. | author1-link=Gene H. Golub | last2=Van Loan | first2=Charles F. | author2-link=Charles F. Van Loan | title=Matrix Computations | publisher=Johns Hopkins | edition=3rd | isbn=978-0-8018-5414-9 |date=1996}}</ref> एक से अधिक स्तर के कैश वाले प्रणाली के लिए, खंडिंग को उस क्रम में दूसरी बार अनुप्रयुक्त किया जा सकता है जिसमें गणना में खंड का उपयोग किया जाता है। अनुकूलन के इन दोनों स्तरों का उपयोग स्वचालित रूप से ट्यून किए गए रैखिक बीजगणित सॉफ़्टवेयर जैसे कार्यान्वयन में किया जाता है। अभी हाल ही में, [[हर एक परत]] के कार्यान्वयन से पता चला है कि केवल [[एल2 कैश]] के लिए खंड करना, अनुवाद लुकसाइड बफर मिस को कम करने के लिए सन्निहित मेमोरी में कॉपी करने के सावधानीपूर्वक परिशोधित विश्लेषण के साथ, स्वचालित रूप से ट्यून किए गए रैखिक बीजगणित सॉफ्टवेयर से बेहतर है।<ref name="Kazushige_2008"/>इन विचारों पर आधारित एक उच्च सुव्यवस्थित कार्यान्वयन [[गोटोब्लास]], ओपनब्लास और बीएलआईएस (सॉफ्टवेयर) का हिस्सा है।


का एक सामान्य रूपांतर {{code|gemm}} है {{code|gemm3m}}, जो पारंपरिक चार वास्तविक मैट्रिक्स गुणन और दो वास्तविक मैट्रिक्स जोड़ के बजाय तीन वास्तविक मैट्रिक्स गुणन और पांच वास्तविक मैट्रिक्स जोड़ का उपयोग करके एक जटिल उत्पाद की गणना करता है, यह [[सड़क एल्गोरिदम]] के समान एक एल्गोरिदम है जिसे पहले पीटर अनगर द्वारा वर्णित किया गया था।<ref>{{cite journal |last1=Van Zee |first1=Field G. |last2=Smith |first2=Tyler M. |title=Implementing High-performance Complex Matrix Multiplication via the 3m and 4m Methods |journal=ACM Transactions on Mathematical Software |date=24 July 2017 |volume=44 |issue=1 |pages=1–36 |doi=10.1145/3086466|s2cid=25580883 }}</ref>
का एक सामान्य रूपांतर {{code|gemm}} है {{code|gemm3m}}, जो पारंपरिक चार वास्तविक आव्यूह गुणन और दो वास्तविक आव्यूह जोड़ के बजाय तीन वास्तविक आव्यूह गुणन और पांच वास्तविक आव्यूह जोड़ का उपयोग करके एक जटिल उत्पाद की गणना करता है, यह [[सड़क एल्गोरिदम|सड़क कलन विधि]] के समान एक कलन विधि है जिसे पहले पीटर अनगर द्वारा वर्णित किया गया था।<ref>{{cite journal |last1=Van Zee |first1=Field G. |last2=Smith |first2=Tyler M. |title=Implementing High-performance Complex Matrix Multiplication via the 3m and 4m Methods |journal=ACM Transactions on Mathematical Software |date=24 July 2017 |volume=44 |issue=1 |pages=1–36 |doi=10.1145/3086466|s2cid=25580883 }}</ref>




==कार्यान्वयन==
==कार्यान्वयन==
; गति बढ़ाएं: [[macOS]] और [[IOS (Apple)]] के लिए Apple Inc. का ढांचा, जिसमें [[BLAS]] और LAPACK के ट्यून किए गए संस्करण शामिल हैं।<ref>{{Cite web|url=https://developer.apple.com/library/mac/#releasenotes/Performance/RN-vecLib/|title=मार्गदर्शिकाएँ और नमूना कोड|website=developer.apple.com|access-date=2017-07-07}}</ref><ref>{{Cite web|url=https://developer.apple.com/library/ios/#documentation/Accelerate/Reference/AccelerateFWRef/|title=मार्गदर्शिकाएँ और नमूना कोड|website=developer.apple.com|access-date=2017-07-07}}</ref>
; गति बढ़ाएं: [[macOS]] और [[IOS (Apple)]] के लिए Apple Inc. का ढांचा, जिसमें [[BLAS|बीएलएएस]] और एलएपीएसीके के ट्यून किए गए संस्करण सम्मिलित हैं।<ref>{{Cite web|url=https://developer.apple.com/library/mac/#releasenotes/Performance/RN-vecLib/|title=मार्गदर्शिकाएँ और नमूना कोड|website=developer.apple.com|access-date=2017-07-07}}</ref><ref>{{Cite web|url=https://developer.apple.com/library/ios/#documentation/Accelerate/Reference/AccelerateFWRef/|title=मार्गदर्शिकाएँ और नमूना कोड|website=developer.apple.com|access-date=2017-07-07}}</ref>
; [[ शाखा प्रदर्शन पुस्तकालय ]]़: आर्म परफॉर्मेंस लाइब्रेरीज़, आर्म 64-बिट [[AArch64]]-आधारित प्रोसेसर का समर्थन करती है, जो आर्म लिमिटेड से उपलब्ध है।<ref name="Arm Performance Libraries"/>; एटलस: स्वचालित रूप से ट्यून किए गए रैखिक बीजगणित सॉफ्टवेयर, सी (प्रोग्रामिंग भाषा) और फोरट्रान के लिए बीएलएएस [[अप्लिकेशन प्रोग्रामिंग अंतरफलक]] का एक [[ खुला स्रोत सॉफ्टवेयर ]] कार्यान्वयन।<ref>{{Cite web|url=http://math-atlas.sourceforge.net/|title=स्वचालित रूप से ट्यून किए गए रैखिक बीजगणित सॉफ्टवेयर (एटीएलएएस)|website=math-atlas.sourceforge.net|access-date=2017-07-07}}</ref>
; [[ शाखा प्रदर्शन पुस्तकालय ]]़: आर्म परफॉर्मेंस पुस्तकालयज़, आर्म 64-बिट [[AArch64]]-आधारित प्रोसेसर का समर्थन करती है, जो आर्म लिमिटेड से उपलब्ध है।<ref name="Arm Performance Libraries"/>; एटलस: स्वचालित रूप से ट्यून किए गए रैखिक बीजगणित सॉफ्टवेयर, सी (प्रोग्रामिंग भाषा) और फोरट्रान के लिए बीएलएएस [[अप्लिकेशन प्रोग्रामिंग अंतरफलक]] का एक [[ खुला स्रोत सॉफ्टवेयर ]] कार्यान्वयन।<ref>{{Cite web|url=http://math-atlas.sourceforge.net/|title=स्वचालित रूप से ट्यून किए गए रैखिक बीजगणित सॉफ्टवेयर (एटीएलएएस)|website=math-atlas.sourceforge.net|access-date=2017-07-07}}</ref>
; बीएलआईएस (सॉफ्टवेयर): तीव्र इंस्टेंटिएशन के लिए बीएलएएस जैसा लाइब्रेरी इंस्टेंटिएशन सॉफ्टवेयर ढांचा। अधिकांश आधुनिक सीपीयू के लिए अनुकूलित। BLIS, GotoBLAS का पूर्ण रीफैक्टरिंग है जो किसी दिए गए प्लेटफ़ॉर्म के लिए लिखे जाने वाले कोड की मात्रा को कम करता है।<ref>{{Citation|title=blis: BLAS-like Library Instantiation Software Framework|date=2017-06-30|url=https://github.com/flame/blis|publisher=flame|access-date=2017-07-07}}</ref><ref>{{Citation|title=BLIS GitHub Repository|date=15 October 2021|url=https://github.com/flame/blis}}</ref>
; बीएलआईएस (सॉफ्टवेयर): तीव्र इंस्टेंटिएशन के लिए बीएलएएस जैसा पुस्तकालय इंस्टेंटिएशन सॉफ्टवेयर ढांचा। अधिकांश आधुनिक सीपीयू के लिए अनुकूलित। BLIS, Gotoबीएलएएस का पूर्ण रीफैक्टरिंग है जो किसी दिए गए प्लेटफ़ॉर्म के लिए लिखे जाने वाले कोड की मात्रा को कम करता है।<ref>{{Citation|title=blis: BLAS-like Library Instantiation Software Framework|date=2017-06-30|url=https://github.com/flame/blis|publisher=flame|access-date=2017-07-07}}</ref><ref>{{Citation|title=BLIS GitHub Repository|date=15 October 2021|url=https://github.com/flame/blis}}</ref>
; [[C++ AMP]] BLAS: C++ AMP BLAS लाइब्रेरी विज़ुअल C++ के लिए Microsoft के AMP भाषा एक्सटेंशन के लिए BLAS का एक ओपन-सोर्स सॉफ़्टवेयर कार्यान्वयन है।<ref>{{Cite web|url=http://ampblas.codeplex.com/|title=सी++ एएमपी ब्लास लाइब्रेरी|website=CodePlex|language=en|access-date=2017-07-07}}</ref>
; [[C++ AMP|C++एएमपी]] बीएलएएस: C++एएमपी बीएलएएस पुस्तकालय विज़ुअल C++ के लिए Microsoft केएएमपी भाषा एक्सटेंशन के लिए बीएलएएस का एक मुक्त स्रोत सॉफ़्टवेयर कार्यान्वयन है।<ref>{{Cite web|url=http://ampblas.codeplex.com/|title=सी++ एएमपी ब्लास लाइब्रेरी|website=CodePlex|language=en|access-date=2017-07-07}}</ref>
; cuBLAS: NVIDIA आधारित GPU कार्ड के लिए अनुकूलित BLAS, कुछ अतिरिक्त लाइब्रेरी कॉल की आवश्यकता होती है।<ref>{{Cite news|url=http://developer.nvidia.com/cublas|title=क्यूब्लास|date=2013-07-29|work=NVIDIA Developer|access-date=2017-07-07|language=en}}</ref>
; cuबीएलएएस: NVIDIA आधारित GPU कार्ड के लिए अनुकूलित बीएलएएस, कुछ अतिरिक्त पुस्तकालय कॉल की आवश्यकता होती है।<ref>{{Cite news|url=http://developer.nvidia.com/cublas|title=क्यूब्लास|date=2013-07-29|work=NVIDIA Developer|access-date=2017-07-07|language=en}}</ref>
; एनवीबीएलएएस: एनवीडिया आधारित जीपीयू कार्ड के लिए अनुकूलित बीएलएएस, केवल लेवल 3 फ़ंक्शन प्रदान करता है, लेकिन अन्य बीएलएएस पुस्तकालयों के लिए सीधे ड्रॉप-इन प्रतिस्थापन के रूप में।<ref>{{Cite news|url=https://docs.nvidia.com/cuda/nvblas/index.htmls|title=एनवीबीएलएएस|date=2018-05-15|work=NVIDIA Developer|access-date=2018-05-15|language=en}}</ref>
; एनवीबीएलएएस: एनवीडिया आधारित जीपीयू कार्ड के लिए अनुकूलित बीएलएएस, केवल लेवल 3 फलन प्रदान करता है, परन्तु अन्य बीएलएएस पुस्तकालयों के लिए सीधे ड्रॉप-इन प्रतिस्थापन के रूप में।<ref>{{Cite news|url=https://docs.nvidia.com/cuda/nvblas/index.htmls|title=एनवीबीएलएएस|date=2018-05-15|work=NVIDIA Developer|access-date=2018-05-15|language=en}}</ref>
; सीएलबीएलएएस: एएमडी द्वारा बीएलएएस का एक [[ओपनसीएल]] कार्यान्वयन। एएमडी कंप्यूट लाइब्रेरीज़ का हिस्सा।<ref name="github.com">{{Citation|title=clBLAS: a software library containing BLAS functions written in OpenCL|date=2017-07-03|url=https://github.com/clMathLibraries/clBLAS|publisher=clMathLibraries|access-date=2017-07-07}}</ref>
; सीएलबीएलएएस: एएमडी द्वारा बीएलएएस का एक [[ओपनसीएल]] कार्यान्वयन। एएमडी कंप्यूट पुस्तकालयज़ का हिस्सा।<ref name="github.com">{{Citation|title=clBLAS: a software library containing BLAS functions written in OpenCL|date=2017-07-03|url=https://github.com/clMathLibraries/clBLAS|publisher=clMathLibraries|access-date=2017-07-07}}</ref>
; clBLAST: अधिकांश BLAS एपीआई का एक ट्यून किया गया OpenCL कार्यान्वयन।<ref name= https://github.com/CNugteren/CLBlast >{{Citation|last=Nugteren|first=Cedric|title=CLBlast: Tuned OpenCL BLAS|date=2017-07-05|url=https://github.com/CNugteren/CLBlast|access-date=2017-07-07}}</ref>
; clबीएलएएसT: अधिकांश बीएलएएस एपीआई का एक ट्यून किया गया OpenCL कार्यान्वयन।<ref name= https://github.com/CNugteren/CLBlast >{{Citation|last=Nugteren|first=Cedric|title=CLBlast: Tuned OpenCL BLAS|date=2017-07-05|url=https://github.com/CNugteren/CLBlast|access-date=2017-07-07}}</ref>
; Eigen BLAS: एक फोरट्रान और C (प्रोग्रामिंग भाषा) BLAS लाइब्रेरी, [[मोज़िला लाइसेंस]]-लाइसेंस प्राप्त Eigen (C++ लाइब्रेरी) के शीर्ष पर कार्यान्वित की गई है, जो x[[86]], [[x86-64]], ARM [[एआरएम वास्तुकला]]|ARM (NEON), और PowerPC आर्किटेक्चर का समर्थन करती है।
; Eigen बीएलएएस: एक फोरट्रान और C (प्रोग्रामिंग भाषा) बीएलएएस पुस्तकालय, [[मोज़िला लाइसेंस]]-लाइसेंस प्राप्त Eigen (C++ पुस्तकालय) के शीर्ष पर कार्यान्वित की गई है, जो x[[86]], [[x86-64]], ARM [[एआरएम वास्तुकला]]|ARM (NEON), और PowerPC वास्तुकला का समर्थन करती है।
; ईएसएसएल: आईबीएम की इंजीनियरिंग और वैज्ञानिक सबरूटीन लाइब्रेरी, [[AIX ऑपरेटिंग सिस्टम]] और [[लिनक्स]] के तहत [[पावरपीसी]] आर्किटेक्चर का समर्थन करती है। <ref name= https://www.ibm.com/support/knowledgecenter/en/SSFHY8/essl_welcome.html >{{Citation|title=IBM Knowledge Centre: Engineering and Scientific Subroutine Library|url=https://www.ibm.com/support/knowledgecenter/en/SSFHY8/essl_welcome.html}}</ref>
; ईएसएसएल: आईबीएम की इंजीनियरिंग और वैज्ञानिक सबनित्यक्रम पुस्तकालय, [[AIX ऑपरेटिंग सिस्टम|AIX ऑपरेटिंग प्रणाली]] और [[लिनक्स]] के अंतर्गत [[पावरपीसी]] वास्तुकला का समर्थन करती है। <ref name= https://www.ibm.com/support/knowledgecenter/en/SSFHY8/essl_welcome.html >{{Citation|title=IBM Knowledge Centre: Engineering and Scientific Subroutine Library|url=https://www.ibm.com/support/knowledgecenter/en/SSFHY8/essl_welcome.html}}</ref>
; गोटोब्लास: काज़ुशिगे गोटो का बीएलएएस का बीएसडी-लाइसेंस प्राप्त कार्यान्वयन, विशेष रूप से इंटेल नेहलेम (माइक्रोआर्किटेक्चर)/[[इंटेल एटम]], [[वीआईए टेक्नोलॉजीज]] वीआईए नैनो, [[एएमडी]] [[ओपर्टन]] के लिए ट्यून किया गया है।<ref name="GotoBLAS2"/>;[[जीएनयू वैज्ञानिक पुस्तकालय]]: कई संख्यात्मक दिनचर्या का बहु-मंच कार्यान्वयन। इसमें CBLAS इंटरफ़ेस शामिल है।
; गोटोब्लास: काज़ुशिगे गोटो का बीएलएएस का बीएसडी-लाइसेंस प्राप्त कार्यान्वयन, विशेष रूप से इंटेल नेहलेम (माइक्रोवास्तुकला)/[[इंटेल एटम]], [[वीआईए टेक्नोलॉजीज]] वीआईए नैनो, [[एएमडी]] [[ओपर्टन]] के लिए ट्यून किया गया है।<ref name="GotoBLAS2"/>;[[जीएनयू वैज्ञानिक पुस्तकालय]]: कई संख्यात्मक दिनचर्या का बहु-मंच कार्यान्वयन। इसमें Cबीएलएएस अंतरापृष्ठ सम्मिलित है।
; एचपी एमएलआईबी: [[ हेवलेट पैकर्ड ]] की गणित लाइब्रेरी [[एचपी-यूएक्स]] और लिनक्स के तहत [[आईए-64]], [[पीए-जोखिम]], एक्स86 और ओपर्टन आर्किटेक्चर का समर्थन करती है।
; एचपी एमएलआईबी: [[ हेवलेट पैकर्ड ]] की गणित पुस्तकालय [[एचपी-यूएक्स]] और लिनक्स के अंतर्गत [[आईए-64]], [[पीए-जोखिम]], एक्स86 और ओपर्टन वास्तुकला का समर्थन करती है।
; इंटेल एमकेएल: इंटेल [[गणित कर्नेल लाइब्रेरी]], x86 32-बिट्स और 64-बिट्स का समर्थन करती है, जो इंटेल से निःशुल्क उपलब्ध है।<ref name="MKLfree" />इंटेल [[पेंटियम (ब्रांड)]], [[ इण्टेल कोर ]] और इंटेल ज़ीऑन सीपीयू और इंटेल ज़ीऑन फाई के लिए अनुकूलन शामिल हैं; Linux, [[Microsoft Windows]] और macOS के लिए समर्थन।<ref>{{Cite web|url=http://software.intel.com/en-us/intel-mkl/|title=Intel Math Kernel Library (Intel MKL) {{!}} Intel Software|website=software.intel.com|language=en|access-date=2017-07-07}}</ref>
; इंटेल एमकेएल: इंटेल [[गणित कर्नेल लाइब्रेरी|गणित कर्नेल पुस्तकालय]], x86 32-बिट्स और 64-बिट्स का समर्थन करती है, जो इंटेल से निःशुल्क उपलब्ध है।<ref name="MKLfree" />इंटेल [[पेंटियम (ब्रांड)]], [[ इण्टेल कोर ]] और इंटेल ज़ीऑन सीपीयू और इंटेल ज़ीऑन फाई के लिए अनुकूलन सम्मिलित हैं; Linux, [[Microsoft Windows]] और macOS के लिए समर्थन।<ref>{{Cite web|url=http://software.intel.com/en-us/intel-mkl/|title=Intel Math Kernel Library (Intel MKL) {{!}} Intel Software|website=software.intel.com|language=en|access-date=2017-07-07}}</ref>
; MathKeisan: [[NEC Corporation]] की गणित लाइब्रेरी, [[SUPER-UX]] के अंतर्गत NEC SX आर्किटेक्चर और Linux के अंतर्गत [[इटेनियम]] का समर्थन करती है<ref>{{Cite web|url=http://www.mathkeisan.com/|title=उन्होंने सीखा|last=Mathkeisan|first=NEC|website=www.mathkeisan.com|language=en|access-date=2017-07-07}}</ref>
; MathKeisan: [[NEC Corporation]] की गणित पुस्तकालय, [[SUPER-UX]] के अंतर्गत NEC SX वास्तुकला और Linux के अंतर्गत [[इटेनियम]] का समर्थन करती है<ref>{{Cite web|url=http://www.mathkeisan.com/|title=उन्होंने सीखा|last=Mathkeisan|first=NEC|website=www.mathkeisan.com|language=en|access-date=2017-07-07}}</ref>
; नेटलिब बीएलएएस: फोरट्रान में लिखा गया नेटलिब पर आधिकारिक संदर्भ कार्यान्वयन।<ref>{{Cite web|url=http://www.netlib.org/blas/|title=बीएलएएस (बुनियादी रैखिक बीजगणित उपप्रोग्राम)|website=www.netlib.org|access-date=2017-07-07}}</ref>
; नेटलिब बीएलएएस: फोरट्रान में लिखा गया नेटलिब पर आधिकारिक संदर्भ कार्यान्वयन।<ref>{{Cite web|url=http://www.netlib.org/blas/|title=बीएलएएस (बुनियादी रैखिक बीजगणित उपप्रोग्राम)|website=www.netlib.org|access-date=2017-07-07}}</ref>
; नेटलिब सीबीएलएएस: बीएलएएस के लिए संदर्भ सी (प्रोग्रामिंग भाषा) इंटरफ़ेस। सी से फोरट्रान बीएलएएस को कॉल करना भी संभव (और लोकप्रिय) है।<ref>{{Cite web|url=http://www.netlib.org/blas|title=बीएलएएस (बुनियादी रैखिक बीजगणित उपप्रोग्राम)|website=www.netlib.org|access-date=2017-07-07}}</ref>
; नेटलिब सीबीएलएएस: बीएलएएस के लिए संदर्भ सी (प्रोग्रामिंग भाषा) अंतरापृष्ठ। सी से फोरट्रान बीएलएएस को कॉल करना भी संभव (और लोकप्रिय) है।<ref>{{Cite web|url=http://www.netlib.org/blas|title=बीएलएएस (बुनियादी रैखिक बीजगणित उपप्रोग्राम)|website=www.netlib.org|access-date=2017-07-07}}</ref>
; OpenBLAS: GotoBLAS पर आधारित अनुकूलित BLAS, x86, x86-64, MIPS आर्किटेक्चर और ARM आर्किटेक्चर प्रोसेसर का समर्थन करता है।<ref>{{Cite web|url=http://www.openblas.net/|title=OpenBLAS : An optimized BLAS library|website=www.openblas.net|access-date=2017-07-07}}</ref>
; Openबीएलएएस: Gotoबीएलएएस पर आधारित अनुकूलित बीएलएएस, x86, x86-64, MIPS वास्तुकला और ARM वास्तुकला प्रोसेसर का समर्थन करता है।<ref>{{Cite web|url=http://www.openblas.net/|title=OpenBLAS : An optimized BLAS library|website=www.openblas.net|access-date=2017-07-07}}</ref>
; पीडीएलआईबी/एसएक्स: एनईसी एनईसी एसएक्स आर्किटेक्चर|एसएक्स-4 प्रणाली के लिए एनईसी कॉर्पोरेशन की सार्वजनिक डोमेन गणितीय लाइब्रेरी।<ref name=":0">{{cite web |url=http://www.nec.co.jp/hpc/mediator/sxm_e/software/61.html |title=PDLIB/SX: Business Solution &#124; NEC |access-date=2007-05-20 |url-status=dead |archive-url=https://web.archive.org/web/20070222154031/http://www.nec.co.jp/hpc/mediator/sxm_e/software/61.html |archive-date=2007-02-22 }}</ref>
; पीडीएलआईबी/एसएक्स: एनईसी एनईसी एसएक्स वास्तुकला|एसएक्स-4 प्रणाली के लिए एनईसी कॉर्पोरेशन की सार्वजनिक कार्यक्षेत्र गणितीय पुस्तकालय।<ref name=":0">{{cite web |url=http://www.nec.co.jp/hpc/mediator/sxm_e/software/61.html |title=PDLIB/SX: Business Solution &#124; NEC |access-date=2007-05-20 |url-status=dead |archive-url=https://web.archive.org/web/20070222154031/http://www.nec.co.jp/hpc/mediator/sxm_e/software/61.html |archive-date=2007-02-22 }}</ref>
; rocBLAS: कार्यान्वयन जो [[ROCm]] के माध्यम से AMD GPU पर चलता है।<ref>{{Cite web|url=https://rocmdocs.amd.com/en/latest/ROCm_Tools/rocblas.html|title=रॉकब्लास|website=rocmdocs.amd.com|access-date=2021-05-21}}</ref>
; rocबीएलएएस: कार्यान्वयन जो [[ROCm]] के माध्यम से AMD GPU पर चलता है।<ref>{{Cite web|url=https://rocmdocs.amd.com/en/latest/ROCm_Tools/rocblas.html|title=रॉकब्लास|website=rocmdocs.amd.com|access-date=2021-05-21}}</ref>
;एससीएसएल
;एससीएसएल
: [[ सिलिकॉन ग्राफ़िक्स ]] की वैज्ञानिक कंप्यूटिंग सॉफ्टवेयर लाइब्रेरी में एसजीआई के इरिक्स वर्कस्टेशन के लिए बीएलएएस और लैपैक कार्यान्वयन शामिल हैं।<ref>{{cite web |url=http://www.sgi.com/products/software/scsl.html |title=SGI - SCSL Scientific Library: Home Page |access-date=2007-05-20 |url-status=dead |archive-url=https://web.archive.org/web/20070513173030/http://www.sgi.com/products/software/scsl.html |archive-date=2007-05-13 }}</ref>
: [[ सिलिकॉन ग्राफ़िक्स ]] की वैज्ञानिक अभिकलन सॉफ्टवेयर पुस्तकालय में एसजीआई के इरिक्स वर्कस्टेशन के लिए बीएलएएस और लैपैक कार्यान्वयन सम्मिलित हैं।<ref>{{cite web |url=http://www.sgi.com/products/software/scsl.html |title=SGI - SCSL Scientific Library: Home Page |access-date=2007-05-20 |url-status=dead |archive-url=https://web.archive.org/web/20070513173030/http://www.sgi.com/products/software/scsl.html |archive-date=2007-05-13 }}</ref>
; सन परफॉर्मेंस लाइब्रेरी: सोलारिस 8, 9 और 10 के साथ-साथ लिनक्स के तहत [[SPARC]], इंटेल कोर और [[AMD64]] आर्किटेक्चर के लिए अनुकूलित BLAS और LAPACK।<ref>{{Cite web|url=http://www.oracle.com/technetwork/server-storage/solarisstudio/overview/index.html|title=ओरेकल डेवलपर स्टूडियो|website=www.oracle.com|access-date=2017-07-07}}</ref>
; सन परफॉर्मेंस पुस्तकालय: सोलारिस 8, 9 और 10 के साथ-साथ लिनक्स के अंतर्गत [[SPARC]], इंटेल कोर और [[AMD64]] वास्तुकला के लिए अनुकूलित बीएलएएस और एलएपीएसीके।<ref>{{Cite web|url=http://www.oracle.com/technetwork/server-storage/solarisstudio/overview/index.html|title=ओरेकल डेवलपर स्टूडियो|website=www.oracle.com|access-date=2017-07-07}}</ref>
; यूबीएलएएस: एक सामान्य [[सी++]] टेम्पलेट क्लास लाइब्रेरी जो बीएलएएस कार्यक्षमता प्रदान करती है। [[ लाइब्रेरी को बूस्ट करें ]] का हिस्सा. यह एक एकीकृत नोटेशन में कई हार्डवेयर-त्वरित पुस्तकालयों को बाइंडिंग प्रदान करता है। इसके अलावा, uBLAS उन्नत C++ सुविधाओं का उपयोग करके एल्गोरिदम की शुद्धता पर ध्यान केंद्रित करता है।<ref>{{Cite web|url=http://www.boost.org/doc/libs/1_60_0/libs/numeric/ublas/doc/index.html|title=Boost Basic Linear Algebra - 1.60.0|website=www.boost.org|access-date=2017-07-07}}</ref>
; यूबीएलएएस: एक सामान्य [[सी++]] टेम्पलेट क्लास पुस्तकालय जो बीएलएएस कार्यक्षमता प्रदान करती है। [[ लाइब्रेरी को बूस्ट करें | पुस्तकालय को बूस्ट करें]] का हिस्सा. यह एक एकीकृत नोटेशन में कई हार्डवेयर-त्वरित पुस्तकालयों को बाइंडिंग प्रदान करता है। इसके अतिरिक्त, uबीएलएएस उन्नत C++ सुविधाओं का उपयोग करके कलन विधि की शुद्धता पर ध्यान केंद्रित करता है।<ref>{{Cite web|url=http://www.boost.org/doc/libs/1_60_0/libs/numeric/ublas/doc/index.html|title=Boost Basic Linear Algebra - 1.60.0|website=www.boost.org|access-date=2017-07-07}}</ref>




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


; आर्माडिलो: आर्माडिलो (सी++ लाइब्रेरी) एक सी++ रैखिक बीजगणित लाइब्रेरी है जिसका लक्ष्य गति और उपयोग में आसानी के बीच एक अच्छा संतुलन बनाना है। यह टेम्प्लेट कक्षाओं को नियोजित करता है, और इसमें BLAS/ATLAS और LAPACK के लिए वैकल्पिक लिंक हैं। यह [[NICTA]] (ऑस्ट्रेलिया में) द्वारा प्रायोजित है और इसे निःशुल्क लाइसेंस के तहत लाइसेंस प्राप्त है।<ref>{{Cite web|url=http://arma.sourceforge.net/|title=Armadillo: C++ linear algebra library|website=arma.sourceforge.net|access-date=2017-07-07}}</ref>
; आर्माडिलो: आर्माडिलो (सी++ पुस्तकालय) एक सी++ रैखिक बीजगणित पुस्तकालय है जिसका लक्ष्य गति और उपयोग में आसानी के मध्य एक अच्छा संतुलन बनाना है। यह टेम्प्लेट कक्षाओं को नियोजित करता है, और इसमें बीएलएएस/ATLAS और एलएपीएसीके के लिए वैकल्पिक लिंक हैं। यह [[NICTA]] (ऑस्ट्रेलिया में) द्वारा प्रायोजित है और इसे निःशुल्क लाइसेंस के अंतर्गत लाइसेंस प्राप्त है।<ref>{{Cite web|url=http://arma.sourceforge.net/|title=Armadillo: C++ linear algebra library|website=arma.sourceforge.net|access-date=2017-07-07}}</ref>
; LAPACK: LAPACK BLAS पर निर्मित एक उच्च स्तरीय रैखिक बीजगणित पुस्तकालय है। बीएलएएस की तरह, एक संदर्भ कार्यान्वयन मौजूद है, लेकिन लिबफ्लेम और एमकेएल जैसे कई विकल्प मौजूद हैं।
; एलएपीएसीके: एलएपीएसीके बीएलएएस पर निर्मित एक उच्च स्तरीय रैखिक बीजगणित पुस्तकालय है। बीएलएएस की तरह, एक संदर्भ कार्यान्वयन उपस्थित है, परन्तु लिबफ्लेम और एमकेएल जैसे कई विकल्प उपस्थित हैं।
; मीर: [[डी (प्रोग्रामिंग भाषा)]] में लिखित विज्ञान और मशीन सीखने के लिए एक [[एलएलवीएम]]-त्वरित सामान्य संख्यात्मक पुस्तकालय। यह सामान्य रैखिक बीजगणित उपप्रोग्राम (GLAS) प्रदान करता है। इसे CBLAS कार्यान्वयन पर बनाया जा सकता है।<ref>{{Cite web|url=https://github.com/libmir|title= डेलांग न्यूमेरिकल और सिस्टम लाइब्रेरीज़|website= [[GitHub]]}}</ref>
; मीर: [[डी (प्रोग्रामिंग भाषा)]] में लिखित विज्ञान और यंत्र सीखने के लिए एक [[एलएलवीएम]]-त्वरित सामान्य संख्यात्मक पुस्तकालय। यह सामान्य रैखिक बीजगणित उपप्रोग्राम (GLAS) प्रदान करता है। इसे Cबीएलएएस कार्यान्वयन पर बनाया जा सकता है।<ref>{{Cite web|url=https://github.com/libmir|title= डेलांग न्यूमेरिकल और सिस्टम लाइब्रेरीज़|website= [[GitHub]]}}</ref>




==समान पुस्तकालय (बीएलएएस के साथ संगत नहीं)==
==समान पुस्तकालय (बीएलएएस के साथ संगत नहीं)==
{{see also|LAPACK#Similar projects}}
{{see also|एलएपीएसीके#Similar projects}}
; एलिमेंटल: एलिमेंटल वितरित मेमोरी | वितरित-मेमोरी सघन और विरल-प्रत्यक्ष रैखिक बीजगणित और अनुकूलन के लिए एक खुला स्रोत सॉफ्टवेयर है।<ref>{{Cite web|url=http://libelemental.org/|title=Elemental: distributed-memory dense and sparse-direct linear algebra and optimization — Elemental|website=libelemental.org|access-date=2017-07-07}}</ref>
; एलिमेंटल: एलिमेंटल वितरित मेमोरी | वितरित-मेमोरी सघन और विरल-प्रत्यक्ष रैखिक बीजगणित और अनुकूलन के लिए एक खुला स्रोत सॉफ्टवेयर है।<ref>{{Cite web|url=http://libelemental.org/|title=Elemental: distributed-memory dense and sparse-direct linear algebra and optimization — Elemental|website=libelemental.org|access-date=2017-07-07}}</ref>
; HASEM: एक C++ टेम्प्लेट लाइब्रेरी है, जो रैखिक समीकरणों को हल करने और eigenvalues ​​​​की गणना करने में सक्षम है। इसे बीएसडी लाइसेंस के तहत लाइसेंस प्राप्त है।<ref>{{Cite web|url=http://sourceforge.net/projects/hasem/|title=बेसम|website=SourceForge|date=17 August 2015 |language=en|access-date=2017-07-07}}</ref>
; एचएएसईएम: एक C++ टेम्प्लेट पुस्तकालय है, जो रैखिक समीकरणों को हल करने और eigenvalues ​​​​की गणना करने में सक्षम है। इसे बीएसडी लाइसेंस के अंतर्गत लाइसेंस प्राप्त है।<ref>{{Cite web|url=http://sourceforge.net/projects/hasem/|title=बेसम|website=SourceForge|date=17 August 2015 |language=en|access-date=2017-07-07}}</ref>
; लामा: त्वरित गणित अनुप्रयोगों के लिए लाइब्रेरी (त्वरित गणित अनुप्रयोगों के लिए लाइब्रेरी) वितरित मेमोरी सिस्टम पर विभिन्न प्रकार के हार्डवेयर (जैसे सीयूडीए या ओपनसीएल के माध्यम से [[जीपीयू]]) को लक्षित करने वाले संख्यात्मक सॉल्वर लिखने के लिए एक सी ++ टेम्पलेट लाइब्रेरी है, जो प्रोग्राम से हार्डवेयर विशिष्ट प्रोग्रामिंग को छिपाती है। डेवलपर
; लामा: त्वरित गणित अनुप्रयोगों के लिए पुस्तकालय (त्वरित गणित अनुप्रयोगों के लिए पुस्तकालय) वितरित मेमोरी प्रणाली पर विभिन्न प्रकार के हार्डवेयर (जैसे सीयूडीए या ओपनसीएल के माध्यम से [[जीपीयू]]) को लक्षित करने वाले संख्यात्मक सॉल्वर लिखने के लिए एक सी ++ टेम्पलेट पुस्तकालय है, जो प्रोग्राम से हार्डवेयर विशिष्ट प्रोग्रामिंग को छिपाती है। डेवलपर
; एमटीएल4: [[मैट्रिक्स टेम्पलेट लाइब्रेरी]] संस्करण 4 एक सामान्य सी++ टेम्प्लेट लाइब्रेरी है जो विरल और सघन बीएलएएस कार्यक्षमता प्रदान करती है। MTL4 [[ सामान्य प्रोग्रामिंग ]] की बदौलत एक सहज इंटरफ़ेस (MATLAB के समान) और व्यापक प्रयोज्यता स्थापित करता है।
; एमटीएल4: [[मैट्रिक्स टेम्पलेट लाइब्रेरी|आव्यूह टेम्पलेट पुस्तकालय]] संस्करण 4 एक सामान्य सी++ टेम्प्लेट पुस्तकालय है जो विरल और सघन बीएलएएस कार्यक्षमता प्रदान करती है। MTL4 [[ सामान्य प्रोग्रामिंग ]] की बदौलत एक सहज अंतरापृष्ठ (MATLAB के समान) और व्यापक प्रयोज्यता स्थापित करता है।


==विरल BLAS==
==विरल बीएलएएस==
लाइब्रेरी के इतिहास के दौरान स्पार्स मैट्रिक्स को संभालने के लिए बीएलएएस के कई एक्सटेंशन सुझाए गए हैं; [[विरल मैट्रिक्स]] कर्नेल रूटीन का एक छोटा सेट अंततः 2002 में मानकीकृत किया गया था।<ref>{{cite journal |first1=Iain S. |last1=Duff |first2=Michael A. |last2=Heroux |first3=Roldan |last3=Pozo |title=An Overview of the Sparse Basic Linear Algebra Subprograms: The New Standard from the BLAS Technical Forum |journal= ACM Transactions on Mathematical Software|year=2002 |volume=28 |issue=2 |pages=239–267 |doi=10.1145/567806.567810|s2cid=9411006 }}</ref>
पुस्तकालय के इतिहास के दौरान स्पार्स आव्यूह को संभालने के लिए बीएलएएस के कई एक्सटेंशन सुझाए गए हैं; [[विरल मैट्रिक्स|विरल आव्यूह]] कर्नेल नित्यक्रम का एक छोटा समूह अंततः 2002 में मानकीकृत किया गया था।<ref>{{cite journal |first1=Iain S. |last1=Duff |first2=Michael A. |last2=Heroux |first3=Roldan |last3=Pozo |title=An Overview of the Sparse Basic Linear Algebra Subprograms: The New Standard from the BLAS Technical Forum |journal= ACM Transactions on Mathematical Software|year=2002 |volume=28 |issue=2 |pages=239–267 |doi=10.1145/567806.567810|s2cid=9411006 }}</ref>




==बैच किए गए BLAS==
==प्रचयित बीएलएएस==
पारंपरिक बीएलएएस फ़ंक्शंस को ऐसे आर्किटेक्चर में भी पोर्ट किया गया है जो [[जीपीयू]] जैसे बड़ी मात्रा में समानता का समर्थन करते हैं। यहां, पारंपरिक बीएलएएस फ़ंक्शन बड़े मैट्रिक्स के लिए आम तौर पर अच्छा प्रदर्शन प्रदान करते हैं। हालाँकि, जब GEMM रूटीन का उपयोग करके कई छोटे मैट्रिक्स के मैट्रिक्स-मैट्रिक्स-उत्पादों की गणना की जाती है, तो वे आर्किटेक्चर महत्वपूर्ण प्रदर्शन हानि दिखाते हैं। इस समस्या के समाधान के लिए, 2017 में BLAS फ़ंक्शन का एक बैच संस्करण निर्दिष्ट किया गया है।<ref name="dongarra17">{{cite journal |last1=Dongarra |first1=Jack |last2=Hammarling |first2=Sven |last3=Higham |first3=Nicholas J. |last4=Relton |first4=Samuel D. |last5=Valero-Lara |first5=Pedro |last6=Zounon |first6=Mawussi |title=आधुनिक उच्च-प्रदर्शन कंप्यूटिंग सिस्टम पर बैचेड बीएलएएस का डिजाइन और प्रदर्शन|journal=Procedia Computer Science |volume=108 |pages=495–504 |date=2017 |doi=10.1016/j.procs.2017.05.138|doi-access=free }}</ref>
पारंपरिक बीएलएएस फलन को ऐसे वास्तुकला में भी पोर्ट किया गया है जो [[जीपीयू]] जैसे बड़ी मात्रा में समानता का समर्थन करते हैं। यहां, पारंपरिक बीएलएएस फलन बड़े आव्यूह के लिए सामान्यतः अच्छा प्रदर्शन प्रदान करते हैं। हालाँकि, जब जीईएमएम नित्यक्रम का उपयोग करके कई छोटे आव्यूह के आव्यूह उत्पादों की गणना की जाती है, तो वे वास्तुकला महत्वपूर्ण प्रदर्शन हानि दर्शाते हैं। इस समस्या के समाधान के लिए, 2017 में बीएलएएस फलन का एक प्रचयित संस्करण निर्दिष्ट किया गया है।<ref name="dongarra17">{{cite journal |last1=Dongarra |first1=Jack |last2=Hammarling |first2=Sven |last3=Higham |first3=Nicholas J. |last4=Relton |first4=Samuel D. |last5=Valero-Lara |first5=Pedro |last6=Zounon |first6=Mawussi |title=आधुनिक उच्च-प्रदर्शन कंप्यूटिंग सिस्टम पर बैचेड बीएलएएस का डिजाइन और प्रदर्शन|journal=Procedia Computer Science |volume=108 |pages=495–504 |date=2017 |doi=10.1016/j.procs.2017.05.138|doi-access=free }}</ref>
एक उदाहरण के रूप में ऊपर से GEMM रूटीन लेते हुए, बैच संस्करण कई मैट्रिक्स के लिए एक साथ निम्नलिखित गणना करता है:
 
एक उदाहरण के रूप में, ऊपर से जीईएमएम नित्यक्रम लेते हुए, प्रचयित संस्करण कई आव्यूहों के लिए एक साथ निम्नलिखित गणना करता है:


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


बैचेड BLAS फ़ंक्शंस एक बहुमुखी उपकरण हो सकते हैं और उदाहरण के लिए अनुमति दे सकते हैं। [[ घातीय इंटीग्रेटर्स ]] और [[मैग्नस इंटीग्रेटर्स]] का तेजी से कार्यान्वयन जो कई समय चरणों के साथ लंबी एकीकरण अवधि को संभालते हैं।<ref name="herb21">{{cite journal |last1=Herb |first1=Konstantin |last2=Welter |first2=Pol |title=बैचेड बीएलएएस (बेसिक लीनियर अलजेब्रा सबप्रोग्राम्स) रूटीन का उपयोग करके समानांतर समय एकीकरण|journal=Computer Physics Communications |volume=270 |pages=108181 |date=2022 |doi=10.1016/j.cpc.2021.108181 |arxiv=2108.07126|s2cid=237091802 }}</ref> यहां, [[मैट्रिक्स घातांक]], एकीकरण का कम्प्यूटेशनल रूप से महंगा हिस्सा, बैचेड बीएलएएस फ़ंक्शंस का उपयोग करके सभी समय-चरणों के लिए समानांतर में कार्यान्वित किया जा सकता है।
अनुक्रमणिका वर्गाकार कोष्ठकों में <math>k</math> इंगित करता है कि <math>k</math> एक स्तंभ में प्रायः संक्रिया सभी आव्यूहों के लिए किया गया है, यह संक्रिया एक प्रगति प्रचयित मेमोरी अभिन्यास के लिए कार्यान्वित किया जाता है जहां सभी आव्यूह सरणी <math>A</math>, <math>B</math> और <math>C</math> में संयोजित होते हैं।
 
प्रचयित बीएलएएस फलन एक बहुमुखी उपकरण हो सकते हैं और उदाहरण के लिए अनुमति दे सकते हैं। [[ घातीय इंटीग्रेटर्स | घातीय समाकलक]] और [[मैग्नस इंटीग्रेटर्स|मैग्नस समाकलक]] का तेजी से कार्यान्वयन जो कई समय चरणों के साथ लंबी एकीकरण अवधि को संभालते हैं।<ref name="herb21">{{cite journal |last1=Herb |first1=Konstantin |last2=Welter |first2=Pol |title=बैचेड बीएलएएस (बेसिक लीनियर अलजेब्रा सबप्रोग्राम्स) रूटीन का उपयोग करके समानांतर समय एकीकरण|journal=Computer Physics Communications |volume=270 |pages=108181 |date=2022 |doi=10.1016/j.cpc.2021.108181 |arxiv=2108.07126|s2cid=237091802 }}</ref> यहां, [[मैट्रिक्स घातांक|आव्यूह घातांक]], एकीकरण का कम्प्यूटेशनल रूप से महंगा हिस्सा, बैचेड बीएलएएस फलन का उपयोग करके सभी समय-चरणों के लिए समानांतर में कार्यान्वित किया जा सकता है।


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


==संदर्भ==
==संदर्भ==
Line 159: Line 161:
* 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.&nbsp;1&ndash;17.
* 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.&nbsp;1&ndash;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.&nbsp;18&ndash;28.
* 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.&nbsp;18&ndash;28.
; New BLAS
; 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 (BLAS), ACM Trans. Math. Softw., 28-2 (2002), pp.&nbsp;135&ndash;151.
* 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.&nbsp;135&ndash;151.
* J. Dongarra, Basic Linear Algebra Subprograms Technical Forum Standard, International Journal of High Performance Applications and Supercomputing, 16(1) (2002), pp.&nbsp;1&ndash;111, and International Journal of High Performance Applications and Supercomputing, 16(2) (2002), pp.&nbsp;115&ndash;199.
* J. Dongarra, Basic Linear Algebra Subprograms Technical Forum Standard, International Journal of High Performance Applications and Supercomputing, 16(1) (2002), pp.&nbsp;1&ndash;111, and International Journal of High Performance Applications and Supercomputing, 16(2) (2002), pp.&nbsp;115&ndash;199.




==बाहरी संबंध==
==बाहरी संबंध==
* [http://www.netlib.org/blas/ BLAS homepage] on Netlib.org
* [http://www.netlib.org/blas/ बीएलएएस homepage] on Netlib.org
* [http://www.netlib.org/blas/faq.html BLAS FAQ]
* [http://www.netlib.org/blas/faq.html बीएलएएस FAQ]
* [http://www.netlib.org/lapack/lug/node145.html BLAS Quick Reference Guide] from LAPACK Users' Guide
* [http://www.netlib.org/lapack/lug/node145.html बीएलएएस Quick Reference Guide] from एलएपीएसीके Users' Guide
* [https://web.archive.org/web/20061009230911/http://history.siam.org/oralhistories/lawson.htm 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.
* [https://web.archive.org/web/20061009230911/http://history.siam.org/oralhistories/lawson.htm 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.
* [https://web.archive.org/web/20061009230904/http://history.siam.org/oralhistories/dongarra.htm 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
* [https://web.archive.org/web/20061009230904/http://history.siam.org/oralhistories/dongarra.htm Dongarra Oral History] In an oral history interview, Jack Dongarra explores the early relationship of बीएलएएस to LINPACK, 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
*[https://stackoverflow.com/questions/1303182/how-does-blas-get-such-extreme-performance How does BLAS get such extreme performance?] Ten naive 1000&times;1000 matrix multiplications (10<sup>10</sup> floating point multiply-adds) takes 15.77&nbsp;seconds on 2.6&nbsp;GHz processor; BLAS implementation takes 1.32&nbsp;seconds.
*[https://stackoverflow.com/questions/1303182/how-does-blas-get-such-extreme-performance How does बीएलएएस get such extreme performance?] Ten naive 1000&times;1000 matrix multiplications (10<sup>10</sup> floating point multiply-adds) takes 15.77&nbsp;seconds on 2.6&nbsp;GHz processor; बीएलएएस implementation takes 1.32&nbsp;seconds.
* An Overview of the Sparse Basic Linear Algebra Subprograms: The New Standard from the BLAS Technical Forum {{doi-inline|10.1145/567806.567810}}
* An Overview of the Sparse Basic Linear Algebra Subprograms: The New Standard from the बीएलएएस Technical Forum {{doi-inline|10.1145/567806.567810}}


{{Numerical linear algebra}}
{{Numerical linear algebra}}

Revision as of 19:29, 11 July 2023

बीएलएएस
Stable release
3.8.0 / 12 November 2017; 7 years ago (2017-11-12)
Written inकार्यान्वयन पर निर्भर करता है
Platformक्रॉस-प्लेटफॉर्म
Typeपुस्तकालय
Websitewww.netlib.org/blas/

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

इसकी प्रारंभ 1979 में फोरट्रान पुस्तकालय के रूप में हुई थी[1] और इसका अंतरापृष्ठ बीएलएएस टेक्निकल (बीएलएएसT) फोरम द्वारा मानकीकृत किया गया था, जिसकी नवीनतम बीएलएएस रिपोर्ट नेटलिब वेबसाइट पर पाई जा सकती है।[2] इस फोरट्रान पुस्तकालय को संदर्भ कार्यान्वयन (कभी-कभी भ्रमित रूप से बीएलएएस पुस्तकालय के रूप में संदर्भित) के रूप में जाना जाता है और यह गति के लिए अनुकूलित नहीं है परन्तु सार्वजनिक कार्यक्षेत्र में है।[3][4] अधिकांश अभिकलन पुस्तकालय जो रैखिक बीजगणित नित्यक्रम की प्रस्तुति करती हैं, सामान्य बीएलएएस उपयोगकर्ता अंतरापृष्ठ कमांड संरचनाओं के अनुरूप होती हैं, इस प्रकार उन पुस्तकालयज़ (और संबंधित परिणाम) के लिए क्वेरीज़ प्रायः बीएलएएस पुस्तकालय शाखाओं के मध्य पोर्टेबल होती हैं, जैसे CUDA#प्रोग्रामिंग_एबिलिटीज़ (एनवीडिया GPU, GPGPU), ROCm# rocबीएलएएस_/_hipबीएलएएस (amd GPU, GPGP), और Openबीएलएएस। यह अंतरसंक्रियाीयता तब अभिकलन वास्तुकला के विषम कैस्केड (जैसे कि कुछ उन्नत क्लस्टरिंग कार्यान्वयन में पाए जाने वाले) के मध्य कामकाजी समरूप कोड कार्यान्वयन का आधार है। सीपीयू-आधारित बीएलएएस पुस्तकालय शाखाओं के उदाहरणों में सम्मिलित हैं: ओपनबीएलएएस, बीएलआईएस (सॉफ्टवेयर) | बीएलआईएस (बीएलएएस-जैसे पुस्तकालय इंस्टेंटिएशन सॉफ्टवेयर), आर्म परफॉर्मेंस पुस्तकालयज़,[5] स्वचालित रूप से ट्यून किए गए रैखिक बीजगणित सॉफ्टवेयर, और इंटेल गणित कर्नेल पुस्तकालय (आईएमकेएल)। एएमडी बीएलआईएस का एक कांटा रखता है जो उन्नत लघु उपकरण प्लेटफॉर्म के लिए अनुकूलित है, हालांकि यह स्पष्ट नहीं है कि एकीकृत लोकपाल संसाधन उस विशेष सॉफ्टवेयर-हार्डवेयर कार्यान्वयन में उपस्थित हैं या नहीं।[6] एटलस एक पोर्टेबल पुस्तकालय है जो स्वचालित रूप से एक मनमानी वास्तुकला के लिए खुद को अनुकूलित करती है। iMKL एक फ्रीवेयर है[7] और मालिकाना[8] इंटेल प्रोसेसर पर प्रदर्शन पर जोर देने के साथ विक्रेता पुस्तकालय को x86 और x86-64 के लिए अनुकूलित किया गया है।[9] ओपनबीएलएएस एक मुक्त स्रोत पुस्तकालय है जिसे कई लोकप्रिय वास्तुकला के लिए हाथ से अनुकूलित किया गया है। लिनपैक बेंचमार्क काफी हद तक बीएलएएस नित्यक्रम पर निर्भर करते हैं जीईएमएम इसके प्रदर्शन माप के लिए.

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

पृष्ठभूमि

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

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

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

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

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

कार्यक्षमता

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

स्तर 1

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

(बुलायाaxpy, ए एक्स प्लस वाई ) और कई अन्य संक्रिया।

स्तर 2

इस स्तर में आव्यूह-सदिश संक्रिया सम्मिलित हैं, जिसमें अन्य चीजों के अतिरिक्त, एक सामान्यीकृत आव्यूह-सदिश गुणन सम्मिलित है (gemv):

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

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


स्तर 3

यह स्तर, औपचारिक रूप से 1990 में प्रकाशित हुआ,[19] इसमें आव्यूह-आव्यूह संक्रिया सम्मिलित हैं, जिसमें सामान्य आव्यूह गुणन सम्मिलित है (जीईएमएम), फॉर्म का

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

लेवल 3 में अभिकलन के लिए नित्यक्रम भी सम्मिलित हैं

जहाँ {{math|T}अन्य कार्यक्षमताओं के साथ-साथ } एक त्रिकोणीय आव्यूह है।

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

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


कार्यान्वयन

गति बढ़ाएं
macOS और IOS (Apple) के लिए Apple Inc. का ढांचा, जिसमें बीएलएएस और एलएपीएसीके के ट्यून किए गए संस्करण सम्मिलित हैं।[25][26]
शाखा प्रदर्शन पुस्तकालय
आर्म परफॉर्मेंस पुस्तकालयज़, आर्म 64-बिट AArch64-आधारित प्रोसेसर का समर्थन करती है, जो आर्म लिमिटेड से उपलब्ध है।[5]; एटलस: स्वचालित रूप से ट्यून किए गए रैखिक बीजगणित सॉफ्टवेयर, सी (प्रोग्रामिंग भाषा) और फोरट्रान के लिए बीएलएएस अप्लिकेशन प्रोग्रामिंग अंतरफलक का एक खुला स्रोत सॉफ्टवेयर कार्यान्वयन।[27]
बीएलआईएस (सॉफ्टवेयर)
तीव्र इंस्टेंटिएशन के लिए बीएलएएस जैसा पुस्तकालय इंस्टेंटिएशन सॉफ्टवेयर ढांचा। अधिकांश आधुनिक सीपीयू के लिए अनुकूलित। BLIS, Gotoबीएलएएस का पूर्ण रीफैक्टरिंग है जो किसी दिए गए प्लेटफ़ॉर्म के लिए लिखे जाने वाले कोड की मात्रा को कम करता है।[28][29]
C++एएमपी बीएलएएस
C++एएमपी बीएलएएस पुस्तकालय विज़ुअल C++ के लिए Microsoft केएएमपी भाषा एक्सटेंशन के लिए बीएलएएस का एक मुक्त स्रोत सॉफ़्टवेयर कार्यान्वयन है।[30]
cuबीएलएएस
NVIDIA आधारित GPU कार्ड के लिए अनुकूलित बीएलएएस, कुछ अतिरिक्त पुस्तकालय कॉल की आवश्यकता होती है।[31]
एनवीबीएलएएस
एनवीडिया आधारित जीपीयू कार्ड के लिए अनुकूलित बीएलएएस, केवल लेवल 3 फलन प्रदान करता है, परन्तु अन्य बीएलएएस पुस्तकालयों के लिए सीधे ड्रॉप-इन प्रतिस्थापन के रूप में।[32]
सीएलबीएलएएस
एएमडी द्वारा बीएलएएस का एक ओपनसीएल कार्यान्वयन। एएमडी कंप्यूट पुस्तकालयज़ का हिस्सा।[33]
clबीएलएएसT
अधिकांश बीएलएएस एपीआई का एक ट्यून किया गया OpenCL कार्यान्वयन।[34]
Eigen बीएलएएस
एक फोरट्रान और C (प्रोग्रामिंग भाषा) बीएलएएस पुस्तकालय, मोज़िला लाइसेंस-लाइसेंस प्राप्त Eigen (C++ पुस्तकालय) के शीर्ष पर कार्यान्वित की गई है, जो x86, x86-64, ARM एआरएम वास्तुकला|ARM (NEON), और PowerPC वास्तुकला का समर्थन करती है।
ईएसएसएल
आईबीएम की इंजीनियरिंग और वैज्ञानिक सबनित्यक्रम पुस्तकालय, AIX ऑपरेटिंग प्रणाली और लिनक्स के अंतर्गत पावरपीसी वास्तुकला का समर्थन करती है। [35]
गोटोब्लास
काज़ुशिगे गोटो का बीएलएएस का बीएसडी-लाइसेंस प्राप्त कार्यान्वयन, विशेष रूप से इंटेल नेहलेम (माइक्रोवास्तुकला)/इंटेल एटम, वीआईए टेक्नोलॉजीज वीआईए नैनो, एएमडी ओपर्टन के लिए ट्यून किया गया है।[36];जीएनयू वैज्ञानिक पुस्तकालय: कई संख्यात्मक दिनचर्या का बहु-मंच कार्यान्वयन। इसमें Cबीएलएएस अंतरापृष्ठ सम्मिलित है।
एचपी एमएलआईबी
हेवलेट पैकर्ड की गणित पुस्तकालय एचपी-यूएक्स और लिनक्स के अंतर्गत आईए-64, पीए-जोखिम, एक्स86 और ओपर्टन वास्तुकला का समर्थन करती है।
इंटेल एमकेएल
इंटेल गणित कर्नेल पुस्तकालय, x86 32-बिट्स और 64-बिट्स का समर्थन करती है, जो इंटेल से निःशुल्क उपलब्ध है।[7]इंटेल पेंटियम (ब्रांड), इण्टेल कोर और इंटेल ज़ीऑन सीपीयू और इंटेल ज़ीऑन फाई के लिए अनुकूलन सम्मिलित हैं; Linux, Microsoft Windows और macOS के लिए समर्थन।[37]
MathKeisan
NEC Corporation की गणित पुस्तकालय, SUPER-UX के अंतर्गत NEC SX वास्तुकला और Linux के अंतर्गत इटेनियम का समर्थन करती है[38]
नेटलिब बीएलएएस
फोरट्रान में लिखा गया नेटलिब पर आधिकारिक संदर्भ कार्यान्वयन।[39]
नेटलिब सीबीएलएएस
बीएलएएस के लिए संदर्भ सी (प्रोग्रामिंग भाषा) अंतरापृष्ठ। सी से फोरट्रान बीएलएएस को कॉल करना भी संभव (और लोकप्रिय) है।[40]
Openबीएलएएस
Gotoबीएलएएस पर आधारित अनुकूलित बीएलएएस, x86, x86-64, MIPS वास्तुकला और ARM वास्तुकला प्रोसेसर का समर्थन करता है।[41]
पीडीएलआईबी/एसएक्स
एनईसी एनईसी एसएक्स वास्तुकला|एसएक्स-4 प्रणाली के लिए एनईसी कॉर्पोरेशन की सार्वजनिक कार्यक्षेत्र गणितीय पुस्तकालय।[42]
rocबीएलएएस
कार्यान्वयन जो ROCm के माध्यम से AMD GPU पर चलता है।[43]
एससीएसएल
सिलिकॉन ग्राफ़िक्स की वैज्ञानिक अभिकलन सॉफ्टवेयर पुस्तकालय में एसजीआई के इरिक्स वर्कस्टेशन के लिए बीएलएएस और लैपैक कार्यान्वयन सम्मिलित हैं।[44]
सन परफॉर्मेंस पुस्तकालय
सोलारिस 8, 9 और 10 के साथ-साथ लिनक्स के अंतर्गत SPARC, इंटेल कोर और AMD64 वास्तुकला के लिए अनुकूलित बीएलएएस और एलएपीएसीके।[45]
यूबीएलएएस
एक सामान्य सी++ टेम्पलेट क्लास पुस्तकालय जो बीएलएएस कार्यक्षमता प्रदान करती है। पुस्तकालय को बूस्ट करें का हिस्सा. यह एक एकीकृत नोटेशन में कई हार्डवेयर-त्वरित पुस्तकालयों को बाइंडिंग प्रदान करता है। इसके अतिरिक्त, uबीएलएएस उन्नत C++ सुविधाओं का उपयोग करके कलन विधि की शुद्धता पर ध्यान केंद्रित करता है।[46]


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

आर्माडिलो
आर्माडिलो (सी++ पुस्तकालय) एक सी++ रैखिक बीजगणित पुस्तकालय है जिसका लक्ष्य गति और उपयोग में आसानी के मध्य एक अच्छा संतुलन बनाना है। यह टेम्प्लेट कक्षाओं को नियोजित करता है, और इसमें बीएलएएस/ATLAS और एलएपीएसीके के लिए वैकल्पिक लिंक हैं। यह NICTA (ऑस्ट्रेलिया में) द्वारा प्रायोजित है और इसे निःशुल्क लाइसेंस के अंतर्गत लाइसेंस प्राप्त है।[47]
एलएपीएसीके
एलएपीएसीके बीएलएएस पर निर्मित एक उच्च स्तरीय रैखिक बीजगणित पुस्तकालय है। बीएलएएस की तरह, एक संदर्भ कार्यान्वयन उपस्थित है, परन्तु लिबफ्लेम और एमकेएल जैसे कई विकल्प उपस्थित हैं।
मीर
डी (प्रोग्रामिंग भाषा) में लिखित विज्ञान और यंत्र सीखने के लिए एक एलएलवीएम-त्वरित सामान्य संख्यात्मक पुस्तकालय। यह सामान्य रैखिक बीजगणित उपप्रोग्राम (GLAS) प्रदान करता है। इसे Cबीएलएएस कार्यान्वयन पर बनाया जा सकता है।[48]


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

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

विरल बीएलएएस

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


प्रचयित बीएलएएस

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

एक उदाहरण के रूप में, ऊपर से जीईएमएम नित्यक्रम लेते हुए, प्रचयित संस्करण कई आव्यूहों के लिए एक साथ निम्नलिखित गणना करता है:

अनुक्रमणिका वर्गाकार कोष्ठकों में इंगित करता है कि एक स्तंभ में प्रायः संक्रिया सभी आव्यूहों के लिए किया गया है, यह संक्रिया एक प्रगति प्रचयित मेमोरी अभिन्यास के लिए कार्यान्वित किया जाता है जहां सभी आव्यूह सरणी , और में संयोजित होते हैं।

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

यह भी देखें

संदर्भ

  1. 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.
  2. "बीएलएएस तकनीकी फोरम". netlib.org. Retrieved 2017-07-07.
  3. 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]
  4. 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. 5.0 5.1 "शाखा प्रदर्शन पुस्तकालय". Arm. 2020. Retrieved 2020-12-16.
  6. "BLAS Library".
  7. 7.0 7.1 "इंटेल मैथ कर्नेल लाइब्रेरी (एमकेएल) के लिए कोई लागत विकल्प नहीं, स्वयं का समर्थन करें, रॉयल्टी-मुक्त". Intel. 2015. Retrieved 2015-08-31.
  8. "इंटेल गणित कर्नेल लाइब्रेरी (इंटेल एमकेएल)". Intel. 2015. Retrieved 2015-08-25.
  9. "अनुकूलन सूचना". Intel. 2012. Retrieved 2013-04-10.
  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.
  11. Cleve Moler (2000). "मैटलैब में लैपैक शामिल है". MathWorks. Retrieved 2013-10-26.
  12. 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.
  13. 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.
  14. 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.
  15. BLAST Forum 2001, p. 1.
  16. Lawson et al. 1979.
  17. BLAST Forum 2001, pp. 1–2.
  18. BLAST Forum 2001, p. 2.
  19. 19.0 19.1 Dongarra, Jack J.; Du Croz, Jeremy; Hammarling, Sven; Duff, Iain S. (1990). "A set of level 3 basic linear algebra subprograms". ACM Transactions on Mathematical Software. 16 (1): 1–17. doi:10.1145/77626.79170. ISSN 0098-3500. S2CID 52873593.
  20. 20.0 20.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.
  21. 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.
  22. Golub, Gene H.; Van Loan, Charles F. (1996), Matrix Computations (3rd ed.), Johns Hopkins, ISBN 978-0-8018-5414-9
  23. 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]
  24. 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.
  25. "मार्गदर्शिकाएँ और नमूना कोड". developer.apple.com. Retrieved 2017-07-07.
  26. "मार्गदर्शिकाएँ और नमूना कोड". developer.apple.com. Retrieved 2017-07-07.
  27. "स्वचालित रूप से ट्यून किए गए रैखिक बीजगणित सॉफ्टवेयर (एटीएलएएस)". math-atlas.sourceforge.net. Retrieved 2017-07-07.
  28. blis: BLAS-like Library Instantiation Software Framework, flame, 2017-06-30, retrieved 2017-07-07
  29. BLIS GitHub Repository, 2021-10-15
  30. "सी++ एएमपी ब्लास लाइब्रेरी". CodePlex (in English). Retrieved 2017-07-07.
  31. "क्यूब्लास". NVIDIA Developer (in English). 2013-07-29. Retrieved 2017-07-07.
  32. "एनवीबीएलएएस". NVIDIA Developer (in English). 2018-05-15. Retrieved 2018-05-15.
  33. clBLAS: a software library containing BLAS functions written in OpenCL, clMathLibraries, 2017-07-03, retrieved 2017-07-07
  34. Nugteren, Cedric (2017-07-05), CLBlast: Tuned OpenCL BLAS, retrieved 2017-07-07
  35. IBM Knowledge Centre: Engineering and Scientific Subroutine Library
  36. Milfeld, Kent. "GotoBLAS2". Texas Advanced Computing Center. Archived from the original on 2020-03-23. Retrieved 2013-08-28.
  37. "Intel Math Kernel Library (Intel MKL) | Intel Software". software.intel.com (in English). Retrieved 2017-07-07.
  38. Mathkeisan, NEC. "उन्होंने सीखा". www.mathkeisan.com (in English). Retrieved 2017-07-07.
  39. "बीएलएएस (बुनियादी रैखिक बीजगणित उपप्रोग्राम)". www.netlib.org. Retrieved 2017-07-07.
  40. "बीएलएएस (बुनियादी रैखिक बीजगणित उपप्रोग्राम)". www.netlib.org. Retrieved 2017-07-07.
  41. "OpenBLAS : An optimized BLAS library". www.openblas.net. Retrieved 2017-07-07.
  42. "PDLIB/SX: Business Solution | NEC". Archived from the original on 2007-02-22. Retrieved 2007-05-20.
  43. "रॉकब्लास". rocmdocs.amd.com. Retrieved 2021-05-21.
  44. "SGI - SCSL Scientific Library: Home Page". Archived from the original on 2007-05-13. Retrieved 2007-05-20.
  45. "ओरेकल डेवलपर स्टूडियो". www.oracle.com. Retrieved 2017-07-07.
  46. "Boost Basic Linear Algebra - 1.60.0". www.boost.org. Retrieved 2017-07-07.
  47. "Armadillo: C++ linear algebra library". arma.sourceforge.net. Retrieved 2017-07-07.
  48. "डेलांग न्यूमेरिकल और सिस्टम लाइब्रेरीज़". GitHub.
  49. "Elemental: distributed-memory dense and sparse-direct linear algebra and optimization — Elemental". libelemental.org. Retrieved 2017-07-07.
  50. "बेसम". SourceForge (in English). 2015-08-17. Retrieved 2017-07-07.
  51. 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.
  52. 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.
  53. 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 LINPACK, 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]