लैपैक: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 23: Line 23:
| website                    = <!-- Wikidata -->
| website                    = <!-- Wikidata -->
}}
}}
LAPACK (रैखिक बीजगणित पैकेज) [[संख्यात्मक रैखिक बीजगणित]] के लिए मानक [[सॉफ्टवेयर लाइब्रेरी]] है। यह रैखिक समीकरणों की प्रणालियों को हल करने और रैखिक न्यूनतम वर्गों के लिए संख्यात्मक तरीकों, मैट्रिक्स के eigendecomposition और एकवचन मूल्य अपघटन के लिए [[सबरूटीन]] प्रदान करता है। इसमें [[एलयू अपघटन]], [[क्यूआर अपघटन]], [[चोलेस्की अपघटन]] और [[शूर अपघटन]] जैसे संबंधित [[ मैट्रिक्स गुणनखंडन ]] को लागू करने की दिनचर्या भी शामिल है।<ref name="LAPACK User Manual">{{cite book|last1=Anderson|first1=E.|last2=Bai|first2=Z.|last3=Bischof|first3=C.|last4=Blackford|first4=S.|last5=Demmel|first5=J.|author-link5=James Demmel|last6=Dongarra|first6=J.|author-link6=Jack Dongarra|last7=Du Croz|first7=J.|last8=Greenbaum|first8=A.|author-link8=Anne Greenbaum|last9=Hammarling|first9=S.|last10=McKenney|first10=A.|last11=Sorensen|first11=D.
लैपैक (रैखिक बीजगणित पैकेज) [[संख्यात्मक रैखिक बीजगणित]] के लिए मानक [[सॉफ्टवेयर लाइब्रेरी]] है। यह रैखिक समीकरणों की प्रणालियों को हल करने और रैखिक न्यूनतम वर्गों के लिए संख्यात्मक विधियों, आव्यूह के आइगेनअपघटन और एकवचन मान अपघटन के लिए [[सबरूटीन|उपसामान्य]] रूप प्रदान करता है। इसमें [[एलयू अपघटन]], [[क्यूआर अपघटन]], [[चोलेस्की अपघटन]] और [[शूर अपघटन]] जैसे संबंधित [[ मैट्रिक्स गुणनखंडन |आव्यूह गुणनखंडन]] को लागू करने के सामान्य रूप भी सम्मिलित है।<ref name="LAPACK User Manual">{{cite book|last1=Anderson|first1=E.|last2=Bai|first2=Z.|last3=Bischof|first3=C.|last4=Blackford|first4=S.|last5=Demmel|first5=J.|author-link5=James Demmel|last6=Dongarra|first6=J.|author-link6=Jack Dongarra|last7=Du Croz|first7=J.|last8=Greenbaum|first8=A.|author-link8=Anne Greenbaum|last9=Hammarling|first9=S.|last10=McKenney|first10=A.|last11=Sorensen|first11=D.
| title =LAPACK Users' Guide
| title =LAPACK Users' Guide
| edition = Third
| edition = Third
Line 32: Line 32:
| url = https://www.netlib.org/lapack/lug/
| url = https://www.netlib.org/lapack/lug/
| access-date=28 May 2022
| access-date=28 May 2022
}}</ref> लैपैक मूल रूप से [[फोरट्रान 77]] में लिखा गया था, लेकिन संस्करण 3.2 (2008) में इसे [[फोरट्रान 90]] में स्थानांतरित कर दिया गया।<ref>{{cite web|url=https://www.netlib.org/lapack/lapack-3.2.html|title=LAPACK 3.2 Release Notes|date=16 November 2008}}</ref> रूटीन [[एकल परिशुद्धता]] और दोहरी परिशुद्धता दोनों में [[वास्तविक संख्या]] और [[जटिल संख्या]] मैट्रिक्स दोनों को संभालते हैं। LAPACK अपनी दिनचर्या के लिए कुशल और पोर्टेबल कम्प्यूटेशनल बिल्डिंग ब्लॉक प्रदान करने के लिए अंतर्निहित [[बुनियादी रैखिक बीजगणित उपप्रोग्राम]] कार्यान्वयन पर निर्भर करता है।<ref name="LAPACK User Manual" />{{rp|at=[https://www.netlib.org/lapack/lug/node65.html "The BLAS as the Key to Portability"]}}
}}</ref> लैपैक मूल रूप से [[फोरट्रान 77]] में लिखा गया था, परन्तु संस्करण 3.2 (2008) में इसे [[फोरट्रान 90]] में स्थानांतरित कर दिया गया।<ref>{{cite web|url=https://www.netlib.org/lapack/lapack-3.2.html|title=LAPACK 3.2 Release Notes|date=16 November 2008}}</ref> सामान्य [[एकल परिशुद्धता]] और दोहरी परिशुद्धता दोनों में [[वास्तविक संख्या]] और [[जटिल संख्या]] आव्यूह दोनों को संभालते हैं। लैपैक अपने सामान्य संस्करण के लिए कुशल और पोर्टेबल कम्प्यूटेशनल निर्माण कक्ष प्रदान करने के लिए अंतर्निहित [[बुनियादी रैखिक बीजगणित उपप्रोग्राम|मूलभूत रैखिक बीजगणित उपप्रोग्राम]] कार्यान्वयन पर निर्भर करता है।<ref name="LAPACK User Manual" />{{rp|at=[https://www.netlib.org/lapack/lug/node65.html "The BLAS as the Key to Portability"]}}


LAPACK को LINPACK के रैखिक समीकरणों और रैखिक न्यूनतम-वर्ग रूटीन और [[EISPACK]] के आइगेनवैल्यू रूटीन के उत्तराधिकारी के रूप में डिज़ाइन किया गया था। 1970 और 1980 के दशक में लिखा गया [[लिनपैक]], साझा मेमोरी के साथ तत्कालीन आधुनिक [[वेक्टर प्रोसेसर]] पर चलने के लिए डिज़ाइन किया गया था। इसके विपरीत, LAPACK को आधुनिक कैश-आधारित आर्किटेक्चर और आधुनिक [[सुपरस्केलर प्रोसेसर]] के निर्देश-स्तरीय समानता पर [[सीपीयू कैश]] का प्रभावी ढंग से शोषण करने के लिए डिज़ाइन किया गया था।<ref name="LAPACK User Manual" />{{rp|at=[https://www.netlib.org/lapack/lug/node61.html "Factors that Affect Performance"]}} और इस प्रकार अच्छी तरह से ट्यून किए गए बेसिक लीनियर अलजेब्रा सबप्रोग्राम्स कार्यान्वयन को देखते हुए, ऐसी मशीनों पर LINPACK की तुलना में तेजी से परिमाण के ऑर्डर चला सकते हैं।<ref name="LAPACK User Manual" />{{rp|at=[https://www.netlib.org/lapack/lug/node65.html "The BLAS as the Key to Portability"]}} LAPACK को बाद के पैकेजों जैसे [[ScaLAPACK]] और PLAPACK में वितरित मेमोरी सिस्टम पर चलाने के लिए भी विस्तारित किया गया है।<ref>{{cite web|access-date=20 April 2017| date=12 June 2007| title=PLAPACK: Parallel Linear Algebra Package| url=https://www.cs.utexas.edu/users/plapack/| website=www.cs.utexas.edu| publisher=[[University of Texas at Austin]]}}</ref>
लैपैक को लिनपैक के रैखिक समीकरणों और रैखिक न्यूनतम-वर्ग सामान्य और [[EISPACK|एईसपैक]] के आइगेनमान सामान्य रूप के उत्तराधिकारी के रूप में डिज़ाइन किया गया था। 1970 और 1980 के दशक में लिखा गया [[लिनपैक]], साझा मेमोरी के साथ तत्कालीन आधुनिक [[वेक्टर प्रोसेसर|सदिश प्रोसेसर]] पर चलने के लिए डिज़ाइन किया गया था। इसके विपरीत, लैपैक को आधुनिक कैश-आधारित संरचना और आधुनिक [[सुपरस्केलर प्रोसेसर|अतिअदिश प्रोसेसर]] के निर्देश-स्तरीय समानता पर [[सीपीयू कैश]] का प्रभावी रूप से शोषण करने के लिए डिज़ाइन किया गया था।<ref name="LAPACK User Manual" />{{rp|at=[https://www.netlib.org/lapack/lug/node61.html "Factors that Affect Performance"]}} और इस प्रकार ठीक रूप से ट्यून किए गए बेसिक लीनियर अलजेब्रा सबप्रोग्राम्स कार्यान्वयन को देखते हुए, ऐसी मशीनों पर लिनपैक की तुलना में तेजी से परिमाण के ऑर्डर चला सकते हैं।<ref name="LAPACK User Manual" />{{rp|at=[https://www.netlib.org/lapack/lug/node65.html "The BLAS as the Key to Portability"]}} लैपैक को बाद के पैकेजों जैसे [[ScaLAPACK|Scaलैपैक]] और Pलैपैक में वितरित मेमोरी सिस्टम पर चलाने के लिए भी विस्तारित किया गया है।<ref>{{cite web|access-date=20 April 2017| date=12 June 2007| title=PLAPACK: Parallel Linear Algebra Package| url=https://www.cs.utexas.edu/users/plapack/| website=www.cs.utexas.edu| publisher=[[University of Texas at Austin]]}}</ref>
नेटलिब लैपैक को तीन-खंड वाले [[बीएसडी लाइसेंस]] लाइसेंस के तहत लाइसेंस प्राप्त है, जो कुछ प्रतिबंधों के साथ अनुमेय मुफ्त सॉफ्टवेयर लाइसेंस है।<ref>{{cite web |title=LICENSE.txt|url=https://www.netlib.org/lapack/LICENSE.txt|website=Netlib |access-date=28 May 2022}}</ref>
नेटलिब लैपैक को तीन-खंड वाले [[बीएसडी लाइसेंस]] लाइसेंस के तहत लाइसेंस प्राप्त है, जो कुछ प्रतिबंधों के साथ अनुमेय मुफ्त सॉफ्टवेयर लाइसेंस है।<ref>{{cite web |title=LICENSE.txt|url=https://www.netlib.org/lapack/LICENSE.txt|website=Netlib |access-date=28 May 2022}}</ref>
==नामकरण योजना==
==नामकरण योजना==
LAPACK में सबरूटीन्स में नामकरण परंपरा है जो पहचानकर्ताओं को बहुत कॉम्पैक्ट बनाती है। यह आवश्यक था क्योंकि पहले [[फोरट्रान]] मानक केवल छह वर्णों तक लंबे पहचानकर्ताओं का समर्थन करते थे, इसलिए इस सीमा में फिट होने के लिए नामों को छोटा करना पड़ा।<ref name="LAPACK User Manual" />{{rp|at=[https://www.netlib.org/lapack/lug/node24.html "Naming Scheme"]}}
लैपैक में सबसामान्य्स में नामकरण परंपरा है जो पहचानकर्ताओं को बहुत कॉम्पैक्ट बनाती है। यह आवश्यक था क्योंकि पहले [[फोरट्रान]] मानक केवल छह वर्णों तक लंबे पहचानकर्ताओं का समर्थन करते थे, इसलिए इस सीमा में फिट होने के लिए नामों को छोटा करना पड़ा।<ref name="LAPACK User Manual" />{{rp|at=[https://www.netlib.org/lapack/lug/node24.html "Naming Scheme"]}}


प्रपत्र में LAPACK सबरूटीन नाम है <code>pmmaaa</code>, कहाँ:
प्रपत्र में लैपैक सबसामान्य नाम है <code>pmmaaa</code>, कहाँ:


* <code>p</code> यह अक्षरीय कोड है जो प्रयुक्त संख्यात्मक स्थिरांकों के प्रकार को दर्शाता है। <code>S</code>, <code>D</code> एकल और दोहरी परिशुद्धता में क्रमशः वास्तविक [[फ़्लोटिंग-पॉइंट अंकगणित]] के लिए खड़े रहें <code>C</code> और <code>Z</code> क्रमशः एकल और दोहरी परिशुद्धता के साथ जटिल संख्या के लिए खड़े हो जाओ। नया संस्करण, LAPACK95, डेटा प्रकार को स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता को दूर करने के लिए सामान्य फ़ंक्शन सबरूटीन्स का उपयोग करता है।
* <code>p</code> यह अक्षरीय कोड है जो प्रयुक्त संख्यात्मक स्थिरांकों के प्रकार को दर्शाता है। <code>S</code>, <code>D</code> एकल और दोहरी परिशुद्धता में क्रमशः वास्तविक [[फ़्लोटिंग-पॉइंट अंकगणित]] के लिए खड़े रहें <code>C</code> और <code>Z</code> क्रमशः एकल और दोहरी परिशुद्धता के साथ जटिल संख्या के लिए खड़े हो जाओ। नया संस्करण, लैपैक95, डेटा प्रकार को स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता को दूर करने के लिए सामान्य फ़ंक्शन सबसामान्य्स का उपयोग करता है।
* <code>mm</code> दो-अक्षर वाला कोड है जो एल्गोरिदम द्वारा अपेक्षित मैट्रिक्स के प्रकार को दर्शाता है। विभिन्न प्रकार के मैट्रिक्स के कोड नीचे बताए गए हैं; वास्तविक डेटा विशिष्ट प्रकार के आधार पर अलग प्रारूप में संग्रहीत किया जाता है; उदाहरण के लिए, जब कोड <code>DI</code> दिया गया है, सबरूटीन लंबाई के वेक्टर की अपेक्षा करता है <code>n</code> विकर्ण पर तत्वों से युक्त, जबकि कोड <code>GE</code> दिया गया है, सबरूटीन की अपेक्षा करता है {{math|''n''×''n''}} मैट्रिक्स की प्रविष्टियों वाली सरणी।
* <code>mm</code> दो-अक्षर वाला कोड है जो एल्गोरिदम द्वारा अपेक्षित आव्यूह के प्रकार को दर्शाता है। विभिन्न प्रकार के आव्यूह के कोड नीचे बताए गए हैं; वास्तविक डेटा विशिष्ट प्रकार के आधार पर अलग प्रारूप में संग्रहीत किया जाता है; उदाहरण के लिए, जब कोड <code>DI</code> दिया गया है, सबसामान्य लंबाई के सदिश की अपेक्षा करता है <code>n</code> विकर्ण पर तत्वों से युक्त, जबकि कोड <code>GE</code> दिया गया है, सबसामान्य की अपेक्षा करता है {{math|''n''×''n''}} आव्यूह की प्रविष्टियों वाली सरणी।
* <code>aaa</code> सबरूटीन में कार्यान्वित वास्तविक एल्गोरिदम का वर्णन करने वाला से तीन अक्षर का कोड है, उदाहरण के लिए <code>SV</code> [[रैखिक प्रणाली]] को हल करने के लिए सबरूटीन को दर्शाता है, जबकि <code>R</code> रैंक-1 अपडेट को दर्शाता है।
* <code>aaa</code> सबसामान्य में कार्यान्वित वास्तविक एल्गोरिदम का वर्णन करने वाला से तीन अक्षर का कोड है, उदाहरण के लिए <code>SV</code> [[रैखिक प्रणाली]] को हल करने के लिए सबसामान्य को दर्शाता है, जबकि <code>R</code> रैंक-1 अपडेट को दर्शाता है।


उदाहरण के लिए, वास्तविक दोहरे परिशुद्धता अंकगणित का उपयोग करके सामान्य (गैर-संरचित) मैट्रिक्स के साथ रैखिक प्रणाली को हल करने के लिए सबरूटीन को कहा जाता है <code>DGESV</code>.<ref name="LAPACK User Manual" />{{rp|at=[https://www.netlib.org/lapack/lug/node26.html "Linear Equations"]}}
उदाहरण के लिए, वास्तविक दोहरे परिशुद्धता अंकगणित का उपयोग करके सामान्य (गैर-संरचित) आव्यूह के साथ रैखिक प्रणाली को हल करने के लिए सबसामान्य को कहा जाता है <code>DGESV</code>.<ref name="LAPACK User Manual" />{{rp|at=[https://www.netlib.org/lapack/lug/node26.html "Linear Equations"]}}


{|class="wikitable"
{|class="wikitable"
|+Matrix types in the LAPACK naming scheme
|+Matrix types in the लैपैक naming scheme
|-
|-
!Name
!Name
Line 139: Line 139:


==अन्य प्रोग्रामिंग भाषाओं और पुस्तकालयों के साथ प्रयोग करें==
==अन्य प्रोग्रामिंग भाषाओं और पुस्तकालयों के साथ प्रयोग करें==
कई प्रोग्रामिंग वातावरण आज C (प्रोग्रामिंग भाषा) बाइंडिंग के साथ पुस्तकालयों के उपयोग का समर्थन करते हैं, जिससे LAPACK रूटीन को सीधे उपयोग करने की अनुमति मिलती है जब तक कि कुछ प्रतिबंध देखे जाते हैं। इसके अतिरिक्त, वैज्ञानिक और संख्यात्मक कंप्यूटिंग के लिए कई अन्य सॉफ़्टवेयर लाइब्रेरी और उपकरण LAPACK के शीर्ष पर बनाए गए हैं, जैसे R (प्रोग्रामिंग भाषा),<ref>{{Cite web |title=R: LAPACK Library |url=https://stat.ethz.ch/R-manual/R-patched/library/base/html/La_library.html |access-date=2022-03-19 |website=stat.ethz.ch}}</ref> [[मतलब]],<ref>{{cite web |title=मैटलैब में लैपैक|url=https://www.mathworks.com/help/matlab/math/lapack-in-matlab.html |website=Mathworks Help Center |access-date=28 May 2022}}</ref> और [[SciPy]].<ref>{{cite web |title=निम्न-स्तरीय LAPACK कार्य|url=https://docs.scipy.org/doc/scipy/reference/linalg.lapack.html |website=SciPy v1.8.1 Manual |access-date=28 May 2022}}</ref>
कई प्रोग्रामिंग वातावरण आज C (प्रोग्रामिंग भाषा) बाइंडिंग के साथ पुस्तकालयों के उपयोग का समर्थन करते हैं, जिससे लैपैक सामान्य को सीधे उपयोग करने की अनुमति मिलती है जब तक कि कुछ प्रतिबंध देखे जाते हैं। इसके अतिरिक्त, वैज्ञानिक और संख्यात्मक कंप्यूटिंग के लिए कई अन्य सॉफ़्टवेयर लाइब्रेरी और उपकरण लैपैक के शीर्ष पर बनाए गए हैं, जैसे R (प्रोग्रामिंग भाषा),<ref>{{Cite web |title=R: LAPACK Library |url=https://stat.ethz.ch/R-manual/R-patched/library/base/html/La_library.html |access-date=2022-03-19 |website=stat.ethz.ch}}</ref> [[मतलब]],<ref>{{cite web |title=मैटलैब में लैपैक|url=https://www.mathworks.com/help/matlab/math/lapack-in-matlab.html |website=Mathworks Help Center |access-date=28 May 2022}}</ref> और [[SciPy]].<ref>{{cite web |title=निम्न-स्तरीय LAPACK कार्य|url=https://docs.scipy.org/doc/scipy/reference/linalg.lapack.html |website=SciPy v1.8.1 Manual |access-date=28 May 2022}}</ref>
कई वैकल्पिक भाषा बाइंडिंग भी उपलब्ध हैं:
कई वैकल्पिक भाषा बाइंडिंग भी उपलब्ध हैं:


* C++ के लिए [[आर्माडिलो (C++ लाइब्रेरी)]]।
* C++ के लिए [[आर्माडिलो (C++ लाइब्रेरी)]]।
* [[सी++]] के लिए [[आईटी++]]
* [[सी++]] के लिए [[आईटी++]]
* C++ के लिए [[LAPACK++]]
* C++ के लिए [[LAPACK++|लैपैक++]]
* [[ओकैमल]] के लिए लैकैमल
* [[ओकैमल]] के लिए लैकैमल
* सी के लिए क्लैपैक (प्रोग्रामिंग भाषा)
* सी के लिए क्लैपैक (प्रोग्रामिंग भाषा)
* पायथन के लिए SciPy (प्रोग्रामिंग भाषा)
* पायथन के लिए SciPy (प्रोग्रामिंग भाषा)
* गोनम फॉर गो (प्रोग्रामिंग भाषा)
* गोनम फॉर गो (प्रोग्रामिंग भाषा)
* .NET_Framework|.NET के लिए [https://github.com/2xmax/NLapack NLapack]
* .NET_Framework|.NET के लिए [https://github.com/2xmax/NLapack Nलैपैक]


== कार्यान्वयन ==
== कार्यान्वयन ==
[[BLAS]] की तरह, विशिष्ट प्रणालियों पर बेहतर प्रदर्शन प्रदान करने के लिए LAPACK को कभी-कभी फोर्क किया जाता है या फिर से लिखा जाता है। कुछ कार्यान्वयन हैं:
[[BLAS]] की तरह, विशिष्ट प्रणालियों पर बेहतर प्रदर्शन प्रदान करने के लिए लैपैक को कभी-कभी फोर्क किया जाता है या फिर से लिखा जाता है। कुछ कार्यान्वयन हैं:


; गति बढ़ाएं: [[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>
; नेटलिब लैपैक: आधिकारिक लैपैक।
; नेटलिब लैपैक: आधिकारिक लैपैक।
; नेटलिब स्कैलापैक: स्केलेबल (मल्टीकोर) लैपैक, [[PBLAS]] के शीर्ष पर बनाया गया है।
; नेटलिब स्कैलापैक: स्केलेबल (मल्टीकोर) लैपैक, [[PBLAS]] के शीर्ष पर बनाया गया है।
; [[इंटेल एमकेएल]]: इंटेल के x86 सीपीयू के लिए गणित रूटीन।
; [[इंटेल एमकेएल]]: इंटेल के x86 सीपीयू के लिए गणित सामान्य।
; [[OpenBLAS]]: BLAS और LAPACK का ओपन-सोर्स पुनः कार्यान्वयन।
; [[OpenBLAS]]: BLAS और लैपैक का ओपन-सोर्स पुनः कार्यान्वयन।
; गोनम लैपैक: एक आंशिक देशी गो (प्रोग्रामिंग भाषा) कार्यान्वयन।
; गोनम लैपैक: एक आंशिक देशी गो (प्रोग्रामिंग भाषा) कार्यान्वयन।


चूँकि LAPACK आम तौर पर अपनी अधिकांश गणनाओं को करने के लिए अंतर्निहित BLAS रूटीन को कॉल करता है, बस बेहतर-ट्यून किए गए BLAS कार्यान्वयन से जुड़ना प्रदर्शन में उल्लेखनीय सुधार के लिए पर्याप्त हो सकता है। परिणामस्वरूप, LAPACK को BLAS जितनी बार पुनः क्रियान्वित नहीं किया जाता है।
चूँकि लैपैक आम तौर पर अपनी अधिकांश गणनाओं को करने के लिए अंतर्निहित BLAS सामान्य को कॉल करता है, बस बेहतर-ट्यून किए गए BLAS कार्यान्वयन से जुड़ना प्रदर्शन में उल्लेखनीय सुधार के लिए पर्याप्त हो सकता है। परिणामस्वरूप, लैपैक को BLAS जितनी बार पुनः क्रियान्वित नहीं किया जाता है।


===समान परियोजनाएं ===
===समान परियोजनाएं ===
{{see also|Basic Linear Algebra Subprograms#Similar libraries (not compatible with BLAS)}}
{{see also|Basic Linear Algebra Subprograms#Similar libraries (not compatible with BLAS)}}
ये परियोजनाएँ LAPACK को समान कार्यक्षमता प्रदान करती हैं, लेकिन मुख्य इंटरफ़ेस LAPACK से भिन्न है:
ये परियोजनाएँ लैपैक को समान कार्यक्षमता प्रदान करती हैं, परन्तु मुख्य इंटरफ़ेस लैपैक से भिन्न है:


; लिबफ्लेम: एक सघन रैखिक बीजगणित पुस्तकालय। इसमें LAPACK-संगत रैपर है। किसी भी बीएलएएस के साथ उपयोग किया जा सकता है, हालांकि [[बीएलआईएस (सॉफ्टवेयर)]] पसंदीदा कार्यान्वयन है।<ref>{{cite web |title=amd/libflame: High-performance object-based library for DLA computations |url=https://github.com/amd/libflame |website=GitHub |publisher=AMD |date=25 August 2020}}</ref>
; लिबफ्लेम: एक सघन रैखिक बीजगणित पुस्तकालय। इसमें लैपैक-संगत रैपर है। किसी भी बीएलएएस के साथ उपयोग किया जा सकता है, हालांकि [[बीएलआईएस (सॉफ्टवेयर)]] पसंदीदा कार्यान्वयन है।<ref>{{cite web |title=amd/libflame: High-performance object-based library for DLA computations |url=https://github.com/amd/libflame |website=GitHub |publisher=AMD |date=25 August 2020}}</ref>
; Eigen (C++ लाइब्रेरी): रैखिक बीजगणित के लिए हेडर लाइब्रेरी। अनुकूलता के लिए इसमें BLAS और आंशिक LAPACK कार्यान्वयन है।
; Eigen (C++ लाइब्रेरी): रैखिक बीजगणित के लिए हेडर लाइब्रेरी। अनुकूलता के लिए इसमें BLAS और आंशिक लैपैक कार्यान्वयन है।
; मैग्मा: जीपीयू और मल्टीकोर आर्किटेक्चर पर मैट्रिक्स बीजगणित (एमएजीएमए) परियोजना लैपैक के समान सघन रैखिक बीजगणित पुस्तकालय विकसित करती है, लेकिन [[जीपीजीपीयू]] के साथ त्वरित मल्टीकोर सिस्टम सहित विषम और हाइब्रिड आर्किटेक्चर के लिए।
; मैग्मा: जीपीयू और मल्टीकोर संरचना पर आव्यूह बीजगणित (एमएजीएमए) परियोजना लैपैक के समान सघन रैखिक बीजगणित पुस्तकालय विकसित करती है, परन्तु [[जीपीजीपीयू]] के साथ त्वरित मल्टीकोर सिस्टम सहित विषम और हाइब्रिड संरचना के लिए।
; प्लाज्मा: स्केलेबल मल्टी-कोर आर्किटेक्चर (प्लाज्मा) प्रोजेक्ट के लिए समानांतर रैखिक बीजगणित मल्टी-कोर आर्किटेक्चर के लिए लैपैक का आधुनिक प्रतिस्थापन है। PLASMA एसिंक्रोनस संचालन के विकास के लिए सॉफ्टवेयर फ्रेमवर्क है और QUARK नामक रनटाइम शेड्यूलर के साथ ऑर्डर शेड्यूलिंग से बाहर है जिसका उपयोग किसी भी कोड के लिए किया जा सकता है जो [[निर्देशित अचक्रीय ग्राफ]] के साथ अपनी निर्भरता व्यक्त करता है।<ref>{{Cite web|url=http://icl.eecs.utk.edu/|title=आईसीएल|website=icl.eecs.utk.edu|language=en|access-date=2017-07-07}}</ref>
; प्लाज्मा: स्केलेबल मल्टी-कोर संरचना (प्लाज्मा) प्रोजेक्ट के लिए समानांतर रैखिक बीजगणित मल्टी-कोर संरचना के लिए लैपैक का आधुनिक प्रतिस्थापन है। PLASMA एसिंक्रोनस संचालन के विकास के लिए सॉफ्टवेयर फ्रेमवर्क है और QUARK नामक रनटाइम शेड्यूलर के साथ ऑर्डर शेड्यूलिंग से बाहर है जिसका उपयोग किसी भी कोड के लिए किया जा सकता है जो [[निर्देशित अचक्रीय ग्राफ]] के साथ अपनी निर्भरता व्यक्त करता है।<ref>{{Cite web|url=http://icl.eecs.utk.edu/|title=आईसीएल|website=icl.eecs.utk.edu|language=en|access-date=2017-07-07}}</ref>
==यह भी देखें{{Portal|Free and open-source software}}==
==यह भी देखें{{Portal|Free and open-source software}}==
* [[संख्यात्मक पुस्तकालयों की सूची]]
* [[संख्यात्मक पुस्तकालयों की सूची]]
* [[गणित कर्नेल लाइब्रेरी]] (एमकेएल)
* [[गणित कर्नेल लाइब्रेरी]] (एमकेएल)
* [[एनएजी न्यूमेरिकल लाइब्रेरी]]
* [[एनएजी न्यूमेरिकल लाइब्रेरी]]
* [[स्लेटेक]], गणितीय और सांख्यिकीय दिनचर्या की फोरट्रान 77 लाइब्रेरी
* [[स्लेटेक]], गणितीय और सांख्यिकीय सामान्य की फोरट्रान 77 लाइब्रेरी
* [[क्वाडपैक]], संख्यात्मक एकीकरण के लिए फोरट्रान 77 लाइब्रेरी
* [[क्वाडपैक]], संख्यात्मक एकीकरण के लिए फोरट्रान 77 लाइब्रेरी



Revision as of 07:40, 11 July 2023

LAPACK (Netlib reference implementation)
Initial release1992; 32 years ago (1992)
Stable release
Script error: The module returned a nil value. It is supposed to return an export table. / Script error: The module returned a nil value. It is supposed to return an export table.; Error: first parameter cannot be parsed as a date or time. (Script error: The module returned a nil value. It is supposed to return an export table.)
Written inFortran 90
TypeSoftware library
LicenseBSD-new

लैपैक (रैखिक बीजगणित पैकेज) संख्यात्मक रैखिक बीजगणित के लिए मानक सॉफ्टवेयर लाइब्रेरी है। यह रैखिक समीकरणों की प्रणालियों को हल करने और रैखिक न्यूनतम वर्गों के लिए संख्यात्मक विधियों, आव्यूह के आइगेनअपघटन और एकवचन मान अपघटन के लिए उपसामान्य रूप प्रदान करता है। इसमें एलयू अपघटन, क्यूआर अपघटन, चोलेस्की अपघटन और शूर अपघटन जैसे संबंधित आव्यूह गुणनखंडन को लागू करने के सामान्य रूप भी सम्मिलित है।[1] लैपैक मूल रूप से फोरट्रान 77 में लिखा गया था, परन्तु संस्करण 3.2 (2008) में इसे फोरट्रान 90 में स्थानांतरित कर दिया गया।[2] सामान्य एकल परिशुद्धता और दोहरी परिशुद्धता दोनों में वास्तविक संख्या और जटिल संख्या आव्यूह दोनों को संभालते हैं। लैपैक अपने सामान्य संस्करण के लिए कुशल और पोर्टेबल कम्प्यूटेशनल निर्माण कक्ष प्रदान करने के लिए अंतर्निहित मूलभूत रैखिक बीजगणित उपप्रोग्राम कार्यान्वयन पर निर्भर करता है।[1]: "The BLAS as the Key to Portability"

लैपैक को लिनपैक के रैखिक समीकरणों और रैखिक न्यूनतम-वर्ग सामान्य और एईसपैक के आइगेनमान सामान्य रूप के उत्तराधिकारी के रूप में डिज़ाइन किया गया था। 1970 और 1980 के दशक में लिखा गया लिनपैक, साझा मेमोरी के साथ तत्कालीन आधुनिक सदिश प्रोसेसर पर चलने के लिए डिज़ाइन किया गया था। इसके विपरीत, लैपैक को आधुनिक कैश-आधारित संरचना और आधुनिक अतिअदिश प्रोसेसर के निर्देश-स्तरीय समानता पर सीपीयू कैश का प्रभावी रूप से शोषण करने के लिए डिज़ाइन किया गया था।[1]: "Factors that Affect Performance" और इस प्रकार ठीक रूप से ट्यून किए गए बेसिक लीनियर अलजेब्रा सबप्रोग्राम्स कार्यान्वयन को देखते हुए, ऐसी मशीनों पर लिनपैक की तुलना में तेजी से परिमाण के ऑर्डर चला सकते हैं।[1]: "The BLAS as the Key to Portability" लैपैक को बाद के पैकेजों जैसे Scaलैपैक और Pलैपैक में वितरित मेमोरी सिस्टम पर चलाने के लिए भी विस्तारित किया गया है।[3] नेटलिब लैपैक को तीन-खंड वाले बीएसडी लाइसेंस लाइसेंस के तहत लाइसेंस प्राप्त है, जो कुछ प्रतिबंधों के साथ अनुमेय मुफ्त सॉफ्टवेयर लाइसेंस है।[4]

नामकरण योजना

लैपैक में सबसामान्य्स में नामकरण परंपरा है जो पहचानकर्ताओं को बहुत कॉम्पैक्ट बनाती है। यह आवश्यक था क्योंकि पहले फोरट्रान मानक केवल छह वर्णों तक लंबे पहचानकर्ताओं का समर्थन करते थे, इसलिए इस सीमा में फिट होने के लिए नामों को छोटा करना पड़ा।[1]: "Naming Scheme"

प्रपत्र में लैपैक सबसामान्य नाम है pmmaaa, कहाँ:

  • p यह अक्षरीय कोड है जो प्रयुक्त संख्यात्मक स्थिरांकों के प्रकार को दर्शाता है। S, D एकल और दोहरी परिशुद्धता में क्रमशः वास्तविक फ़्लोटिंग-पॉइंट अंकगणित के लिए खड़े रहें C और Z क्रमशः एकल और दोहरी परिशुद्धता के साथ जटिल संख्या के लिए खड़े हो जाओ। नया संस्करण, लैपैक95, डेटा प्रकार को स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता को दूर करने के लिए सामान्य फ़ंक्शन सबसामान्य्स का उपयोग करता है।
  • mm दो-अक्षर वाला कोड है जो एल्गोरिदम द्वारा अपेक्षित आव्यूह के प्रकार को दर्शाता है। विभिन्न प्रकार के आव्यूह के कोड नीचे बताए गए हैं; वास्तविक डेटा विशिष्ट प्रकार के आधार पर अलग प्रारूप में संग्रहीत किया जाता है; उदाहरण के लिए, जब कोड DI दिया गया है, सबसामान्य लंबाई के सदिश की अपेक्षा करता है n विकर्ण पर तत्वों से युक्त, जबकि कोड GE दिया गया है, सबसामान्य की अपेक्षा करता है n×n आव्यूह की प्रविष्टियों वाली सरणी।
  • aaa सबसामान्य में कार्यान्वित वास्तविक एल्गोरिदम का वर्णन करने वाला से तीन अक्षर का कोड है, उदाहरण के लिए SV रैखिक प्रणाली को हल करने के लिए सबसामान्य को दर्शाता है, जबकि R रैंक-1 अपडेट को दर्शाता है।

उदाहरण के लिए, वास्तविक दोहरे परिशुद्धता अंकगणित का उपयोग करके सामान्य (गैर-संरचित) आव्यूह के साथ रैखिक प्रणाली को हल करने के लिए सबसामान्य को कहा जाता है DGESV.[1]: "Linear Equations"

Matrix types in the लैपैक naming scheme
Name Description
BD bidiagonal matrix
DI diagonal matrix
GB general band matrix
GE general matrix (i.e., unsymmetric, in some cases rectangular)
GG general matrices, generalized problem (i.e., a pair of general matrices)
GT general tridiagonal matrix
HB (complex) Hermitian band matrix
HE (complex) Hermitian matrix
HG upper Hessenberg matrix, generalized problem (i.e. a Hessenberg and a triangular matrix)
HP (complex) Hermitian, packed storage matrix
HS upper Hessenberg matrix
OP (real) orthogonal matrix, packed storage matrix
OR (real) orthogonal matrix
PB symmetric matrix or Hermitian matrix positive definite band
PO symmetric matrix or Hermitian matrix positive definite
PP symmetric matrix or Hermitian matrix positive definite, packed storage matrix
PT symmetric matrix or Hermitian matrix positive definite tridiagonal matrix
SB (real) symmetric band matrix
SP symmetric, packed storage matrix
ST (real) symmetric matrix tridiagonal matrix
SY symmetric matrix
TB triangular band matrix
TG triangular matrices, generalized problem (i.e., a pair of triangular matrices)
TP triangular, packed storage matrix
TR triangular matrix (or in some cases quasi-triangular)
TZ trapezoidal matrix
UN (complex) unitary matrix
UP (complex) unitary, packed storage matrix

अन्य प्रोग्रामिंग भाषाओं और पुस्तकालयों के साथ प्रयोग करें

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

कार्यान्वयन

BLAS की तरह, विशिष्ट प्रणालियों पर बेहतर प्रदर्शन प्रदान करने के लिए लैपैक को कभी-कभी फोर्क किया जाता है या फिर से लिखा जाता है। कुछ कार्यान्वयन हैं:

गति बढ़ाएं
macOS और IOS (Apple) के लिए Apple Inc. का ढांचा, जिसमें BLAS और लैपैक के ट्यून किए गए संस्करण सम्मिलित हैं।[8][9]
नेटलिब लैपैक
आधिकारिक लैपैक।
नेटलिब स्कैलापैक
स्केलेबल (मल्टीकोर) लैपैक, PBLAS के शीर्ष पर बनाया गया है।
इंटेल एमकेएल
इंटेल के x86 सीपीयू के लिए गणित सामान्य।
OpenBLAS
BLAS और लैपैक का ओपन-सोर्स पुनः कार्यान्वयन।
गोनम लैपैक
एक आंशिक देशी गो (प्रोग्रामिंग भाषा) कार्यान्वयन।

चूँकि लैपैक आम तौर पर अपनी अधिकांश गणनाओं को करने के लिए अंतर्निहित BLAS सामान्य को कॉल करता है, बस बेहतर-ट्यून किए गए BLAS कार्यान्वयन से जुड़ना प्रदर्शन में उल्लेखनीय सुधार के लिए पर्याप्त हो सकता है। परिणामस्वरूप, लैपैक को BLAS जितनी बार पुनः क्रियान्वित नहीं किया जाता है।

समान परियोजनाएं

ये परियोजनाएँ लैपैक को समान कार्यक्षमता प्रदान करती हैं, परन्तु मुख्य इंटरफ़ेस लैपैक से भिन्न है:

लिबफ्लेम
एक सघन रैखिक बीजगणित पुस्तकालय। इसमें लैपैक-संगत रैपर है। किसी भी बीएलएएस के साथ उपयोग किया जा सकता है, हालांकि बीएलआईएस (सॉफ्टवेयर) पसंदीदा कार्यान्वयन है।[10]
Eigen (C++ लाइब्रेरी)
रैखिक बीजगणित के लिए हेडर लाइब्रेरी। अनुकूलता के लिए इसमें BLAS और आंशिक लैपैक कार्यान्वयन है।
मैग्मा
जीपीयू और मल्टीकोर संरचना पर आव्यूह बीजगणित (एमएजीएमए) परियोजना लैपैक के समान सघन रैखिक बीजगणित पुस्तकालय विकसित करती है, परन्तु जीपीजीपीयू के साथ त्वरित मल्टीकोर सिस्टम सहित विषम और हाइब्रिड संरचना के लिए।
प्लाज्मा
स्केलेबल मल्टी-कोर संरचना (प्लाज्मा) प्रोजेक्ट के लिए समानांतर रैखिक बीजगणित मल्टी-कोर संरचना के लिए लैपैक का आधुनिक प्रतिस्थापन है। PLASMA एसिंक्रोनस संचालन के विकास के लिए सॉफ्टवेयर फ्रेमवर्क है और QUARK नामक रनटाइम शेड्यूलर के साथ ऑर्डर शेड्यूलिंग से बाहर है जिसका उपयोग किसी भी कोड के लिए किया जा सकता है जो निर्देशित अचक्रीय ग्राफ के साथ अपनी निर्भरता व्यक्त करता है।[11]

यह भी देखें

संदर्भ

  1. 1.0 1.1 1.2 1.3 1.4 1.5 Anderson, E.; Bai, Z.; Bischof, C.; Blackford, S.; Demmel, J.; Dongarra, J.; Du Croz, J.; Greenbaum, A.; Hammarling, S.; McKenney, A.; Sorensen, D. (1999). LAPACK Users' Guide (Third ed.). Philadelphia, PA: Society for Industrial and Applied Mathematics. ISBN 0-89871-447-8. Retrieved 28 May 2022.
  2. "LAPACK 3.2 Release Notes". 16 November 2008.
  3. "PLAPACK: Parallel Linear Algebra Package". www.cs.utexas.edu. University of Texas at Austin. 12 June 2007. Retrieved 20 April 2017.
  4. "LICENSE.txt". Netlib. Retrieved 28 May 2022.
  5. "R: LAPACK Library". stat.ethz.ch. Retrieved 2022-03-19.
  6. "मैटलैब में लैपैक". Mathworks Help Center. Retrieved 28 May 2022.
  7. "निम्न-स्तरीय LAPACK कार्य". SciPy v1.8.1 Manual. Retrieved 28 May 2022.
  8. "मार्गदर्शिकाएँ और नमूना कोड". developer.apple.com. Retrieved 2017-07-07.
  9. "मार्गदर्शिकाएँ और नमूना कोड". developer.apple.com. Retrieved 2017-07-07.
  10. "amd/libflame: High-performance object-based library for DLA computations". GitHub. AMD. 25 August 2020.
  11. "आईसीएल". icl.eecs.utk.edu (in English). Retrieved 2017-07-07.