लैपैक

From Vigyanwiki
Revision as of 08:34, 11 July 2023 by alpha>Aagman
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.