लैपैक: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 34: Line 34:
}}</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|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>
लैपैक को लिनपैक के रैखिक समीकरणों और रैखिक न्यूनतम-वर्ग सामान्य और [[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"
|+Matrix types in the लैपैक naming scheme
|+लैपैक नामकरण योजना में आव्यूह प्रकार
|-
|-
!Name
!नाम
!Description
!विवरण
|-
|-
|BD
|BD
|[[bidiagonal matrix]]
|[[bidiagonal matrix|द्विविकर्ण आव्यूह]]
|-
|-
|DI
|DI
|[[diagonal matrix]]
|[[diagonal matrix|विकर्ण आव्यूह]]
|-
|-
|GB
|GB
|general [[band matrix]]
|सामन्य [[band matrix|बैंड आव्यूह]]
|-
|-
|GE
|GE
|general [[matrix (mathematics)|matrix]] (i.e., [[symmetric matrix|unsymmetric]], in some cases rectangular)
|सामन्य [[matrix (mathematics)|आव्यूह]] (अर्थात., [[symmetric matrix|असममित]], कुछ स्थितियों में आयताकार)
|-
|-
|GG
|GG
|general matrices, generalized problem (i.e., a pair of general matrices)
|सामन्य आव्यूह, सामान्यीकृत समस्या (अर्थात, सामन्य आव्यूह के युग्म)
|-
|-
|GT
|GT
|general [[tridiagonal matrix]]
|सामन्य [[tridiagonal matrix|त्रिविकर्ण आव्यूह]]
|-
|-
|HB
|HB
|([[Complex number|complex]]) [[Hermitian matrix|Hermitian]] [[band matrix]]
|([[Complex number|जटिल]]) [[Hermitian matrix|हर्मिटियन]] [[band matrix|बैंड आव्यूह]]
|-
|-
|HE
|HE
|([[Complex number|complex]]) [[Hermitian matrix]]
|([[Complex number|जटिल]]) [[Hermitian matrix|हर्मिटियन आव्यूह]]
|-
|-
|HG
|HG
|[[upper Hessenberg matrix]], generalized problem (i.e. a Hessenberg and a [[triangular matrix]])
|[[upper Hessenberg matrix|ऊपरी हेसेनबर्ग आव्यूह]], सामान्यीकृत समस्या (अर्थात एक हेसेनबर्ग और एक [[triangular matrix|त्रिकोणीय आव्यूह]])
|-
|-
|HP
|HP
|([[Complex number|complex]]) [[Hermitian matrix|Hermitian]], [[packed storage matrix]]
|([[Complex number|जटिल]]) [[Hermitian matrix|हर्मिटियन]], [[packed storage matrix|पैक भंडारण आव्यूह]]
|-
|-
|HS
|HS
|[[upper Hessenberg matrix]]
|[[upper Hessenberg matrix|ऊपरी हेसेनबर्ग आव्यूह]]
|-
|-
|OP
|OP
|([[Real number|real]]) [[orthogonal matrix]], [[packed storage matrix]]
|([[Real number|वास्तविक]]) [[orthogonal matrix|लांबिक आव्यूह]], [[packed storage matrix|पैक भंडारण आव्यूह]]
|-
|-
|OR
|OR
|([[Real number|real]]) [[orthogonal matrix]]
|([[Real number|वास्तविक]]) [[orthogonal matrix|लांबिक आव्यूह]]
|-
|-
|PB
|PB
|[[symmetric matrix]] or [[Hermitian matrix]] [[positive definite matrix|positive definite]] band
|[[symmetric matrix|सममित आव्यूह]] या [[Hermitian matrix|हर्मिटियन आव्यूह]] [[positive definite matrix|धनात्मक रूप से निश्चित]] बैंड
|-
|-
|PO
|PO
|[[symmetric matrix]] or [[Hermitian matrix]] [[positive definite matrix|positive definite]]
|[[symmetric matrix|सममित आव्यूह]] या [[Hermitian matrix|हर्मिटियन आव्यूह]] [[positive definite matrix|धनात्मक रूप से निश्चित]]
|-
|-
|PP
|PP
|[[symmetric matrix]] or [[Hermitian matrix]] [[positive definite matrix|positive definite]], [[packed storage matrix]]
|[[symmetric matrix|सममित आव्यूह]] या [[Hermitian matrix|हर्मिटियन आव्यूह]] [[positive definite matrix|धनात्मक रूप से निश्चित]], [[packed storage matrix|पैक भंडारण आव्यूह]]
|-
|-
|PT
|PT
|[[symmetric matrix]] or [[Hermitian matrix]] [[positive definite matrix|positive definite]] [[tridiagonal matrix]]
|[[symmetric matrix|सममित आव्यूह]] या [[Hermitian matrix|हर्मिटियन आव्यूह]] [[positive definite matrix|धनात्मक रूप से निश्चित]] [[tridiagonal matrix|त्रिविकर्ण आव्यूह]]
|-
|-
|SB
|SB
|([[Real number|real]]) [[symmetric matrix|symmetric]] [[band matrix]]
|([[Real number|वास्तविक]]) [[symmetric matrix|सममित]] [[band matrix|बैंड आव्यूह]]
|-
|-
|SP
|SP
|[[Symmetric matrix|symmetric]], [[packed storage matrix]]
|[[Symmetric matrix|सममित]], [[packed storage matrix|पैक भंडारण आव्यूह]]
|-
|-
|ST
|ST
|([[Real number|real]]) [[symmetric matrix]] [[tridiagonal matrix]]
|([[Real number|वास्तविक]]) [[symmetric matrix|सममित आव्यूह]] [[tridiagonal matrix|त्रिविकर्ण आव्यूह]]
|-
|-
|SY
|SY
|[[symmetric matrix]]
|[[symmetric matrix|सममित आव्यूह]]
|-
|-
|TB
|TB
|[[Triangular matrix|triangular]] [[band matrix]]
|[[Triangular matrix|त्रिकोणीय]] [[band matrix|बैंड आव्यूह]]
|-
|-
|TG
|TG
|[[Triangular matrix|triangular matrices]], generalized problem (i.e., a pair of [[triangular matrix|triangular matrices]])
|[[Triangular matrix|त्रिकोणीय आव्यूह]], सामान्यीकृत समस्या (अर्थात, [[triangular matrix|त्रिकोणीय आव्यूह]] )
|-
|-
|TP
|TP
|[[Triangular matrix|triangular]], [[packed storage matrix]]
|[[Triangular matrix|त्रिकोणीय]], [[packed storage matrix|पैक भंडारण आव्यूह]]
|-
|-
|TR
|TR
|[[triangular matrix]] (or in some cases quasi-triangular)
|[[triangular matrix|त्रिकोणीय आव्यूह]] (या कुछ स्थितियों में अर्ध-त्रिकोणीय)
|-
|-
|TZ
|TZ
|[[trapezoidal matrix]]
|[[trapezoidal matrix|समलम्बाकार आव्यूह]]
|-
|-
|UN
|UN
|([[Complex number|complex]]) [[unitary matrix]]
|([[Complex number|जटिल]]) [[unitary matrix|एकात्मक आव्यूह]]
|-
|-
|UP
|UP
|([[Complex number|complex]]) [[unitary matrix|unitary]], [[packed storage matrix]]
|([[Complex number|जटिल]]) [[unitary matrix|एकात्मक]], [[packed storage matrix|पैक भंडारण आव्यूह]]
|}
|}


==अन्य प्रोग्रामिंग भाषाओं और पुस्तकालयों के साथ प्रयोग करें==
==अन्य प्रोग्रामिंग भाषाओं और लाइब्रेरी के साथ प्रयोग करें==
कई प्रोग्रामिंग वातावरण आज 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>
 
कई वैकल्पिक भाषा बाइंडिंग भी उपलब्ध हैं:
कई वैकल्पिक भाषा बाइंडिंग भी उपलब्ध हैं:


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


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


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


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


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


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

Revision as of 08:34, 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" लैपैक को बाद के पैकेजों जैसे स्कालैपैक और पीलैपैक में वितरित मेमोरी प्रणाली पर चलाने के लिए भी विस्तारित किया गया है।[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 के लिए एनलैपैक

कार्यान्वयन

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

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

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

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

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

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