लैपैक: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{short description|Software library for numerical linear algebra}}
{{short description|Software library for numerical linear algebra}}
{{Infobox software
{{Infobox software
| name                      = LAPACK (Netlib reference implementation)
| name                      = लैपैक (नेटलिब संदर्भ कार्यान्वयन)
| logo                      = LAPACK logo.svg
| logo                      = LAPACK logo.svg
| logo size                  = 120px
| logo size                  = 120px
Line 23: Line 23:
| website                    = <!-- Wikidata -->
| website                    = <!-- Wikidata -->
}}
}}
लैपैक (रैखिक बीजगणित पैकेज) [[संख्यात्मक रैखिक बीजगणित]] के लिए मानक [[सॉफ्टवेयर लाइब्रेरी]] है। यह रैखिक समीकरणों की प्रणालियों को हल करने और रैखिक न्यूनतम वर्गों के लिए संख्यात्मक विधियों, आव्यूह के आइगेनअपघटन और एकवचन मान अपघटन के लिए [[सबरूटीन|उपसामान्य]] रूप प्रदान करता है। इसमें [[एलयू अपघटन]], [[क्यूआर अपघटन]], [[चोलेस्की अपघटन]] और [[शूर अपघटन]] जैसे संबंधित [[ मैट्रिक्स गुणनखंडन |आव्यूह गुणनखंडन]] को लागू करने के सामान्य रूप भी सम्मिलित है।<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> सामान्य [[एकल परिशुद्धता]] और दोहरी परिशुद्धता दोनों में [[वास्तविक संख्या]] और [[जटिल संख्या]] आव्यूह दोनों को संभालते हैं। लैपैक अपने सामान्य संस्करण के लिए कुशल और पोर्टेबल कम्प्यूटेशनल निर्माण कक्ष प्रदान करने के लिए अंतर्निहित [[बुनियादी रैखिक बीजगणित उपप्रोग्राम|मूलभूत रैखिक बीजगणित उपप्रोग्राम]] कार्यान्वयन पर निर्भर करता है।<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"]}}


लैपैक को लिनपैक के रैखिक समीकरणों और रैखिक न्यूनतम-वर्ग सामान्य और [[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|स्कालैपैक]] और पीलैपैक में वितरित मेमोरी प्रणाली पर चलाने के लिए भी विस्तारित किया गया है।<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|स्कालैपैक]] और पीलैपैक में वितरित मेमोरी प्रणाली पर चलाने के लिए भी विस्तारित किया गया है।<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>
==नामकरण योजना==
==नामकरण योजना==
लैपैक में उपसामान्य रूप में नामकरण परंपरा है जो पहचानकर्ताओं को बहुत संहत बनाती है। यह आवश्यक था क्योंकि पहले [[फोरट्रान]] मानक मात्र छह कैरैक्टरों तक लंबे पहचानकर्ताओं का समर्थन करते थे, इसलिए इस सीमा में फिट होने के लिए नामों को छोटा करना पड़ा।<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"]}}


लैपैक उपसामान्य नाम <code>pmmaaa</code> रूप में है, जहां:
इस प्रकार से लैपैक उपसामान्य नाम <code>pmmaaa</code> रूप में है, जहां:


* <code>p</code> एक अक्षरीय कोड है जो प्रयुक्त संख्यात्मक स्थिरांकों के प्रकार को दर्शाता है। <code>S</code>, <code>D</code> एकल और दोहरी परिशुद्धता में क्रमशः वास्तविक [[फ़्लोटिंग-पॉइंट अंकगणित|प्रवाह-बिंदु अंकगणित]] के लिए खड़े रहें, जबकि <code>C</code> और <code>Z</code> क्रमशः एकल और दोहरी परिशुद्धता के साथ जटिल अंकगणित के लिए खड़े हैं। नवीन संस्करण, लैपैक95, डेटा प्रकार को स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता को दूर करने के लिए सामान्य क्रिया उपसामान्य रूप का उपयोग करते है।
* <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"
Line 121: Line 121:
|-
|-
|TG
|TG
|[[Triangular matrix|त्रिकोणीय आव्यूह]], सामान्यीकृत समस्या (अर्थात, [[triangular matrix|त्रिकोणीय आव्यूह]] )
|[[Triangular matrix|त्रिकोणीय आव्यूह]], सामान्यीकृत समस्या (अर्थात, [[triangular matrix|त्रिकोणीय आव्यूह]])
|-
|-
|TP
|TP
Line 140: Line 140:


==अन्य प्रोग्रामिंग भाषाओं और लाइब्रेरी के साथ प्रयोग करें==
==अन्य प्रोग्रामिंग भाषाओं और लाइब्रेरी के साथ प्रयोग करें==
कई प्रोग्रामिंग वातावरण आज 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 (प्रोग्रामिंग भाषा) बाइंडिंग के साथ लाइब्रेरी के उपयोग का समर्थन करते हैं, जिससे लैपैक सामान्य को प्रत्यक्षतः उपयोग करने की अनुमति मिलती है जब तक कि कुछ प्रतिबंध देखे जाते हैं। अतः इसके अतिरिक्त, वैज्ञानिक और संख्यात्मक कंप्यूटिंग के लिए कई अन्य सॉफ़्टवेयर लाइब्रेरी और उपकरण लैपैक के शीर्ष पर बनाए गए हैं, जैसे 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>


कई वैकल्पिक भाषा बाइंडिंग भी उपलब्ध हैं:
कई वैकल्पिक भाषा बाइंडिंग भी उपलब्ध हैं:
Line 151: Line 151:
* Python के लिए SciPy (प्रोग्रामिंग भाषा)
* Python के लिए SciPy (प्रोग्रामिंग भाषा)
* Gonum के लिए Go (प्रोग्रामिंग भाषा)
* Gonum के लिए Go (प्रोग्रामिंग भाषा)
* NLapack के लिए [https://github.com/2xmax/NLapack एनलैपैक]
* NLapack के लिए [https://github.com/2xmax/NLapack NLapack]


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


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


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


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


; लिबफ्लेम: एक सघन रैखिक बीजगणित लाइब्रेरी। इसमें लैपैक-संगत रैपर है। किसी भी बीएलएएस के साथ उपयोग किया जा सकता है, हालांकि [[बीएलआईएस (सॉफ्टवेयर)]] पसंदीदा कार्यान्वयन है।<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++ लाइब्रेरी): रैखिक बीजगणित के लिए हेडर लाइब्रेरी। अनुकूलता के लिए इसमें बीलेस और आंशिक लैपैक कार्यान्वयन है।
 
; मैग्मा: जीपीयू और मल्टीकोर संरचना पर आव्यूह बीजगणित (एमएजीएमए) परियोजना लैपैक के समान सघन रैखिक बीजगणित लाइब्रेरी विकसित करती है, परन्तु [[जीपीजीपीयू]] के साथ त्वरित मल्टीकोर प्रणाली सहित विषम और हाइब्रिड संरचना के लिए।
; लिबफ्लेम: एक संहत रैखिक बीजगणित लाइब्रेरी। इसमें लैपैक-संगत रैपर है। अतः किसी भी बीएलएएस के साथ उपयोग किया जा सकता है, यद्यपि [[बीएलआईएस (सॉफ्टवेयर)]] चयनित कार्यान्वयन है।<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>
; प्लाज्मा: स्केलेबल मल्टी-कोर संरचना (प्लाज्मा) प्रोजेक्ट के लिए समानांतर रैखिक बीजगणित मल्टी-कोर संरचना के लिए लैपैक का आधुनिक प्रतिस्थापन है। 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>
; आइगेन (C++ लाइब्रेरी): इस प्रकार से रैखिक बीजगणित के लिए हेडर लाइब्रेरी। अनुकूलता के लिए इसमें बीलेस और आंशिक लैपैक कार्यान्वयन है।
; मैग्मा: अतः जीपीयू और बहुकोर संरचना पर आव्यूह बीजगणित (एमएजीएमए) परियोजना लैपैक के समान संहत रैखिक बीजगणित लाइब्रेरी विकसित करती है, परन्तु [[जीपीजीपीयू]] के साथ त्वरित बहुकोर प्रणाली सहित विषम और हाइब्रिड संरचना के लिए है।
; प्लाज्मा: मापनीय बहु-कोर संरचना (प्लाज्मा) प्रोजेक्ट के लिए समानांतर रैखिक बीजगणित बहु-कोर संरचना के लिए लैपैक का आधुनिक प्रतिस्थापन है। इस प्रकार से प्लाज्मा अतुल्यकाली संचालन के विकास के लिए सॉफ्टवेयर संरचना है और क्वार्क नामक कालक्रम अनुसूचक के साथ क्रम अनुसूचीयन से बाहर है जिसका उपयोग किसी भी कोड के लिए किया जा सकता है जो [[निर्देशित अचक्रीय ग्राफ|निर्देशित अचक्रीय आरेख]] के साथ अपनी निर्भरता व्यक्त करता है।<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 लाइब्रेरी
Line 185: Line 186:
{{Numerical linear algebra}}
{{Numerical linear algebra}}


{{DEFAULTSORT:Lapack}}[[Category: फोरट्रान पुस्तकालय]] [[Category: फोरट्रान में निःशुल्क सॉफ्टवेयर प्रोग्राम किया गया]] [[Category: संख्यात्मक रैखिक बीजगणित]] [[Category: संख्यात्मक सॉफ्टवेयर]] [[Category: बीएसडी लाइसेंस का उपयोग करने वाला सॉफ़्टवेयर]]
{{DEFAULTSORT:Lapack}}
 
 


[[Category: Machine Translated Page]]
[[Category:Articles with hatnote templates targeting a nonexistent page|Lapack]]
[[Category:Created On 06/07/2023]]
[[Category:CS1 English-language sources (en)]]
[[Category:Collapse templates|Lapack]]
[[Category:Created On 06/07/2023|Lapack]]
[[Category:Lua-based templates|Lapack]]
[[Category:Machine Translated Page|Lapack]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists|Lapack]]
[[Category:Pages with empty portal template|Lapack]]
[[Category:Pages with script errors|Lapack]]
[[Category:Portal templates with redlinked portals|Lapack]]
[[Category:Sidebars with styles needing conversion|Lapack]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready|Lapack]]
[[Category:Templates generating microformats|Lapack]]
[[Category:Templates that add a tracking category|Lapack]]
[[Category:Templates that are not mobile friendly|Lapack]]
[[Category:Templates that generate short descriptions|Lapack]]
[[Category:Templates using TemplateData|Lapack]]
[[Category:Wikipedia metatemplates|Lapack]]
[[Category:फोरट्रान पुस्तकालय|Lapack]]
[[Category:फोरट्रान में निःशुल्क सॉफ्टवेयर प्रोग्राम किया गया|Lapack]]
[[Category:बीएसडी लाइसेंस का उपयोग करने वाला सॉफ़्टवेयर|Lapack]]
[[Category:संख्यात्मक रैखिक बीजगणित|Lapack]]
[[Category:संख्यात्मक सॉफ्टवेयर|Lapack]]

Latest revision as of 20:52, 15 July 2023

लैपैक (नेटलिब संदर्भ कार्यान्वयन)
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" लैपैक को बाद के पैकेजों जैसे स्कालैपैक और पीलैपैक में वितरित मेमोरी प्रणाली पर चलाने के लिए भी विस्तारित किया गया है।[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"

लैपैक नामकरण योजना में आव्यूह प्रकार
नाम विवरण
BD द्विविकर्ण आव्यूह
DI विकर्ण आव्यूह
GB सामन्य बैंड आव्यूह
GE सामन्य आव्यूह (अर्थात., असममित, कुछ स्थितियों में आयताकार)
GG सामन्य आव्यूह, सामान्यीकृत समस्या (अर्थात, सामन्य आव्यूह के युग्म)
GT सामन्य त्रिविकर्ण आव्यूह
HB (जटिल) हर्मिटियन बैंड आव्यूह
HE (जटिल) हर्मिटियन आव्यूह
HG ऊपरी हेसेनबर्ग आव्यूह, सामान्यीकृत समस्या (अर्थात एक हेसेनबर्ग और एक त्रिकोणीय आव्यूह)
HP (जटिल) हर्मिटियन, पैक भंडारण आव्यूह
HS ऊपरी हेसेनबर्ग आव्यूह
OP (वास्तविक) लांबिक आव्यूह, पैक भंडारण आव्यूह
OR (वास्तविक) लांबिक आव्यूह
PB सममित आव्यूह या हर्मिटियन आव्यूह धनात्मक रूप से निश्चित बैंड
PO सममित आव्यूह या हर्मिटियन आव्यूह धनात्मक रूप से निश्चित
PP सममित आव्यूह या हर्मिटियन आव्यूह धनात्मक रूप से निश्चित, पैक भंडारण आव्यूह
PT सममित आव्यूह या हर्मिटियन आव्यूह धनात्मक रूप से निश्चित त्रिविकर्ण आव्यूह
SB (वास्तविक) सममित बैंड आव्यूह
SP सममित, पैक भंडारण आव्यूह
ST (वास्तविक) सममित आव्यूह त्रिविकर्ण आव्यूह
SY सममित आव्यूह
TB त्रिकोणीय बैंड आव्यूह
TG त्रिकोणीय आव्यूह, सामान्यीकृत समस्या (अर्थात, त्रिकोणीय आव्यूह)
TP त्रिकोणीय, पैक भंडारण आव्यूह
TR त्रिकोणीय आव्यूह (या कुछ स्थितियों में अर्ध-त्रिकोणीय)
TZ समलम्बाकार आव्यूह
UN (जटिल) एकात्मक आव्यूह
UP (जटिल) एकात्मक, पैक भंडारण आव्यूह

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

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

कई वैकल्पिक भाषा बाइंडिंग भी उपलब्ध हैं:

  • C++ के लिए Armadillo (C++ लाइब्रेरी)
  • C++ के लिए IT++
  • C++ के लिए LAPACK++
  • OCaml के लिए Lacaml
  • C के लिए CLapack (प्रोग्रामिंग भाषा)
  • Python के लिए SciPy (प्रोग्रामिंग भाषा)
  • Gonum के लिए Go (प्रोग्रामिंग भाषा)
  • NLapack के लिए NLapack

कार्यान्वयन

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

गति बढ़ाएं
अतः मैकओएस और आईओएस (एप्पल) के लिए एप्पल इंक. की ढांचा, जिसमें बीलेस और लैपैक के ट्यून किए गए संस्करण सम्मिलित हैं।[8][9]
नेटलिब लैपैक
आधिकारिक लैपैक।
नेटलिब स्कैलापैक
स्केलेबल (बहुकोर) लैपैक, पीबीलेस के शीर्ष पर बनाया गया है।
इंटेल एमकेएल
इंटेल के एक्स86 सीपीयू के लिए गणित सामान्य।
ओपेनबीलेस
बीलेस और लैपैक का ओपन-सोर्स पुनः कार्यान्वयन।
गोनम लैपैक
एक आंशिक मूल Go (प्रोग्रामिंग भाषा) कार्यान्वयन।

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

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

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

लिबफ्लेम
एक संहत रैखिक बीजगणित लाइब्रेरी। इसमें लैपैक-संगत रैपर है। अतः किसी भी बीएलएएस के साथ उपयोग किया जा सकता है, यद्यपि बीएलआईएस (सॉफ्टवेयर) चयनित कार्यान्वयन है।[10]
आइगेन (C++ लाइब्रेरी)
इस प्रकार से रैखिक बीजगणित के लिए हेडर लाइब्रेरी। अनुकूलता के लिए इसमें बीलेस और आंशिक लैपैक कार्यान्वयन है।
मैग्मा
अतः जीपीयू और बहुकोर संरचना पर आव्यूह बीजगणित (एमएजीएमए) परियोजना लैपैक के समान संहत रैखिक बीजगणित लाइब्रेरी विकसित करती है, परन्तु जीपीजीपीयू के साथ त्वरित बहुकोर प्रणाली सहित विषम और हाइब्रिड संरचना के लिए है।
प्लाज्मा
मापनीय बहु-कोर संरचना (प्लाज्मा) प्रोजेक्ट के लिए समानांतर रैखिक बीजगणित बहु-कोर संरचना के लिए लैपैक का आधुनिक प्रतिस्थापन है। इस प्रकार से प्लाज्मा अतुल्यकाली संचालन के विकास के लिए सॉफ्टवेयर संरचना है और क्वार्क नामक कालक्रम अनुसूचक के साथ क्रम अनुसूचीयन से बाहर है जिसका उपयोग किसी भी कोड के लिए किया जा सकता है जो निर्देशित अचक्रीय आरेख के साथ अपनी निर्भरता व्यक्त करता है।[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.