लैपैक
Initial release | 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. |
Written in | Fortran 90 |
Type | Software library |
License | BSD-new |
LAPACK (रैखिक बीजगणित पैकेज) संख्यात्मक रैखिक बीजगणित के लिए एक मानक सॉफ्टवेयर लाइब्रेरी है। यह रैखिक समीकरणों की प्रणालियों को हल करने और रैखिक न्यूनतम वर्गों के लिए संख्यात्मक तरीकों, एक मैट्रिक्स के eigendecomposition और एकवचन मूल्य अपघटन के लिए सबरूटीन प्रदान करता है। इसमें एलयू अपघटन, क्यूआर अपघटन, चोलेस्की अपघटन और शूर अपघटन जैसे संबंधित मैट्रिक्स गुणनखंडन को लागू करने की दिनचर्या भी शामिल है।[1] लैपैक मूल रूप से फोरट्रान 77 में लिखा गया था, लेकिन संस्करण 3.2 (2008) में इसे फोरट्रान 90 में स्थानांतरित कर दिया गया।[2] रूटीन एकल परिशुद्धता और दोहरी परिशुद्धता दोनों में वास्तविक संख्या और जटिल संख्या मैट्रिक्स दोनों को संभालते हैं। LAPACK अपनी दिनचर्या के लिए कुशल और पोर्टेबल कम्प्यूटेशनल बिल्डिंग ब्लॉक प्रदान करने के लिए एक अंतर्निहित बुनियादी रैखिक बीजगणित उपप्रोग्राम कार्यान्वयन पर निर्भर करता है।[1]: "The BLAS as the Key to Portability"
LAPACK को LINPACK के रैखिक समीकरणों और रैखिक न्यूनतम-वर्ग रूटीन और EISPACK के आइगेनवैल्यू रूटीन के उत्तराधिकारी के रूप में डिज़ाइन किया गया था। 1970 और 1980 के दशक में लिखा गया लिनपैक, साझा मेमोरी के साथ तत्कालीन आधुनिक वेक्टर प्रोसेसर पर चलने के लिए डिज़ाइन किया गया था। इसके विपरीत, LAPACK को आधुनिक कैश-आधारित आर्किटेक्चर और आधुनिक सुपरस्केलर प्रोसेसर के निर्देश-स्तरीय समानता पर सीपीयू कैश का प्रभावी ढंग से शोषण करने के लिए डिज़ाइन किया गया था।[1]: "Factors that Affect Performance" और इस प्रकार एक अच्छी तरह से ट्यून किए गए बेसिक लीनियर अलजेब्रा सबप्रोग्राम्स कार्यान्वयन को देखते हुए, ऐसी मशीनों पर LINPACK की तुलना में तेजी से परिमाण के ऑर्डर चला सकते हैं।[1]: "The BLAS as the Key to Portability" LAPACK को बाद के पैकेजों जैसे ScaLAPACK और PLAPACK में वितरित मेमोरी सिस्टम पर चलाने के लिए भी विस्तारित किया गया है।[3] नेटलिब लैपैक को तीन-खंड वाले बीएसडी लाइसेंस लाइसेंस के तहत लाइसेंस प्राप्त है, जो कुछ प्रतिबंधों के साथ एक अनुमेय मुफ्त सॉफ्टवेयर लाइसेंस है।[4]
नामकरण योजना
LAPACK में सबरूटीन्स में एक नामकरण परंपरा है जो पहचानकर्ताओं को बहुत कॉम्पैक्ट बनाती है। यह आवश्यक था क्योंकि पहले फोरट्रान मानक केवल छह वर्णों तक लंबे पहचानकर्ताओं का समर्थन करते थे, इसलिए इस सीमा में फिट होने के लिए नामों को छोटा करना पड़ा।[1]: "Naming Scheme"
प्रपत्र में एक LAPACK सबरूटीन नाम है pmmaaa
, कहाँ:
p
यह एक अक्षरीय कोड है जो प्रयुक्त संख्यात्मक स्थिरांकों के प्रकार को दर्शाता है।S
,D
एकल और दोहरी परिशुद्धता में क्रमशः वास्तविक फ़्लोटिंग-पॉइंट अंकगणित के लिए खड़े रहेंC
औरZ
क्रमशः एकल और दोहरी परिशुद्धता के साथ जटिल संख्या के लिए खड़े हो जाओ। नया संस्करण, LAPACK95, डेटा प्रकार को स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता को दूर करने के लिए सामान्य फ़ंक्शन सबरूटीन्स का उपयोग करता है।mm
एक दो-अक्षर वाला कोड है जो एल्गोरिदम द्वारा अपेक्षित मैट्रिक्स के प्रकार को दर्शाता है। विभिन्न प्रकार के मैट्रिक्स के कोड नीचे बताए गए हैं; वास्तविक डेटा विशिष्ट प्रकार के आधार पर एक अलग प्रारूप में संग्रहीत किया जाता है; उदाहरण के लिए, जब कोडDI
दिया गया है, सबरूटीन लंबाई के एक वेक्टर की अपेक्षा करता हैn
विकर्ण पर तत्वों से युक्त, जबकि कोडGE
दिया गया है, सबरूटीन एक की अपेक्षा करता है n×n मैट्रिक्स की प्रविष्टियों वाली सरणी।aaa
सबरूटीन में कार्यान्वित वास्तविक एल्गोरिदम का वर्णन करने वाला एक से तीन अक्षर का कोड है, उदाहरण के लिएSV
रैखिक प्रणाली को हल करने के लिए एक सबरूटीन को दर्शाता है, जबकिR
रैंक-1 अपडेट को दर्शाता है।
उदाहरण के लिए, वास्तविक दोहरे परिशुद्धता अंकगणित का उपयोग करके एक सामान्य (गैर-संरचित) मैट्रिक्स के साथ एक रैखिक प्रणाली को हल करने के लिए सबरूटीन को कहा जाता है DGESV
.[1]: "Linear Equations"
अन्य प्रोग्रामिंग भाषाओं और पुस्तकालयों के साथ प्रयोग करें
कई प्रोग्रामिंग वातावरण आज C (प्रोग्रामिंग भाषा) बाइंडिंग के साथ पुस्तकालयों के उपयोग का समर्थन करते हैं, जिससे LAPACK रूटीन को सीधे उपयोग करने की अनुमति मिलती है जब तक कि कुछ प्रतिबंध देखे जाते हैं। इसके अतिरिक्त, वैज्ञानिक और संख्यात्मक कंप्यूटिंग के लिए कई अन्य सॉफ़्टवेयर लाइब्रेरी और उपकरण LAPACK के शीर्ष पर बनाए गए हैं, जैसे R (प्रोग्रामिंग भाषा),[5] मतलब,[6] और SciPy.[7] कई वैकल्पिक भाषा बाइंडिंग भी उपलब्ध हैं:
- C++ के लिए आर्माडिलो (C++ लाइब्रेरी)।
- सी++ के लिए आईटी++
- C++ के लिए LAPACK++
- ओकैमल के लिए लैकैमल
- सी के लिए क्लैपैक (प्रोग्रामिंग भाषा)
- पायथन के लिए SciPy (प्रोग्रामिंग भाषा)
- गोनम फॉर गो (प्रोग्रामिंग भाषा)
- .NET_Framework|.NET के लिए NLapack
कार्यान्वयन
BLAS की तरह, विशिष्ट प्रणालियों पर बेहतर प्रदर्शन प्रदान करने के लिए LAPACK को कभी-कभी फोर्क किया जाता है या फिर से लिखा जाता है। कुछ कार्यान्वयन हैं:
- गति बढ़ाएं
- macOS और IOS (Apple) के लिए Apple Inc. का ढांचा, जिसमें BLAS और LAPACK के ट्यून किए गए संस्करण शामिल हैं।[8][9]
- नेटलिब लैपैक
- आधिकारिक लैपैक।
- नेटलिब स्कैलापैक
- स्केलेबल (मल्टीकोर) लैपैक, PBLAS के शीर्ष पर बनाया गया है।
- इंटेल एमकेएल
- इंटेल के x86 सीपीयू के लिए गणित रूटीन।
- OpenBLAS
- BLAS और LAPACK का ओपन-सोर्स पुनः कार्यान्वयन।
- गोनम लैपैक
- एक आंशिक देशी गो (प्रोग्रामिंग भाषा) कार्यान्वयन।
चूँकि LAPACK आम तौर पर अपनी अधिकांश गणनाओं को करने के लिए अंतर्निहित BLAS रूटीन को कॉल करता है, बस एक बेहतर-ट्यून किए गए BLAS कार्यान्वयन से जुड़ना प्रदर्शन में उल्लेखनीय सुधार के लिए पर्याप्त हो सकता है। परिणामस्वरूप, LAPACK को BLAS जितनी बार पुनः क्रियान्वित नहीं किया जाता है।
समान परियोजनाएं
ये परियोजनाएँ LAPACK को समान कार्यक्षमता प्रदान करती हैं, लेकिन मुख्य इंटरफ़ेस LAPACK से भिन्न है:
- लिबफ्लेम
- एक सघन रैखिक बीजगणित पुस्तकालय। इसमें LAPACK-संगत रैपर है। किसी भी बीएलएएस के साथ उपयोग किया जा सकता है, हालांकि बीएलआईएस (सॉफ्टवेयर) पसंदीदा कार्यान्वयन है।[10]
- Eigen (C++ लाइब्रेरी)
- रैखिक बीजगणित के लिए एक हेडर लाइब्रेरी। अनुकूलता के लिए इसमें BLAS और आंशिक LAPACK कार्यान्वयन है।
- मैग्मा
- जीपीयू और मल्टीकोर आर्किटेक्चर पर मैट्रिक्स बीजगणित (एमएजीएमए) परियोजना लैपैक के समान एक सघन रैखिक बीजगणित पुस्तकालय विकसित करती है, लेकिन जीपीजीपीयू के साथ त्वरित मल्टीकोर सिस्टम सहित विषम और हाइब्रिड आर्किटेक्चर के लिए।
- प्लाज्मा
- स्केलेबल मल्टी-कोर आर्किटेक्चर (प्लाज्मा) प्रोजेक्ट के लिए समानांतर रैखिक बीजगणित मल्टी-कोर आर्किटेक्चर के लिए लैपैक का एक आधुनिक प्रतिस्थापन है। PLASMA एसिंक्रोनस संचालन के विकास के लिए एक सॉफ्टवेयर फ्रेमवर्क है और QUARK नामक रनटाइम शेड्यूलर के साथ ऑर्डर शेड्यूलिंग से बाहर है जिसका उपयोग किसी भी कोड के लिए किया जा सकता है जो एक निर्देशित अचक्रीय ग्राफ के साथ अपनी निर्भरता व्यक्त करता है।[11]
यह भी देखें
- संख्यात्मक पुस्तकालयों की सूची
- गणित कर्नेल लाइब्रेरी (एमकेएल)
- एनएजी न्यूमेरिकल लाइब्रेरी
- स्लेटेक, गणितीय और सांख्यिकीय दिनचर्या की एक फोरट्रान 77 लाइब्रेरी
- क्वाडपैक, संख्यात्मक एकीकरण के लिए एक फोरट्रान 77 लाइब्रेरी
संदर्भ
- ↑ 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.
- ↑ "LAPACK 3.2 Release Notes". 16 November 2008.
- ↑ "PLAPACK: Parallel Linear Algebra Package". www.cs.utexas.edu. University of Texas at Austin. 12 June 2007. Retrieved 20 April 2017.
- ↑ "LICENSE.txt". Netlib. Retrieved 28 May 2022.
- ↑ "R: LAPACK Library". stat.ethz.ch. Retrieved 2022-03-19.
- ↑ "मैटलैब में लैपैक". Mathworks Help Center. Retrieved 28 May 2022.
- ↑ "निम्न-स्तरीय LAPACK कार्य". SciPy v1.8.1 Manual. Retrieved 28 May 2022.
- ↑ "मार्गदर्शिकाएँ और नमूना कोड". developer.apple.com. Retrieved 2017-07-07.
- ↑ "मार्गदर्शिकाएँ और नमूना कोड". developer.apple.com. Retrieved 2017-07-07.
- ↑ "amd/libflame: High-performance object-based library for DLA computations". GitHub. AMD. 25 August 2020.
- ↑ "आईसीएल". icl.eecs.utk.edu (in English). Retrieved 2017-07-07.