लैपैक

LAPACK (रैखिक बीजगणित पैकेज) संख्यात्मक रैखिक बीजगणित के लिए एक मानक सॉफ्टवेयर लाइब्रेरी है। यह रैखिक समीकरणों की प्रणालियों को हल करने और रैखिक न्यूनतम वर्गों के लिए संख्यात्मक तरीकों, एक मैट्रिक्स के eigendecomposition और एकवचन मूल्य अपघटन के लिए सबरूटीन प्रदान करता है। इसमें एलयू अपघटन, क्यूआर अपघटन, चोलेस्की अपघटन और शूर अपघटन जैसे संबंधित मैट्रिक्स गुणनखंडन  को लागू करने की दिनचर्या भी शामिल है। लैपैक मूल रूप से फोरट्रान 77 में लिखा गया था, लेकिन संस्करण 3.2 (2008) में इसे फोरट्रान 90 में स्थानांतरित कर दिया गया। रूटीन एकल परिशुद्धता और दोहरी परिशुद्धता दोनों में वास्तविक संख्या और जटिल संख्या मैट्रिक्स दोनों को संभालते हैं। LAPACK अपनी दिनचर्या के लिए कुशल और पोर्टेबल कम्प्यूटेशनल बिल्डिंग ब्लॉक प्रदान करने के लिए एक अंतर्निहित बुनियादी रैखिक बीजगणित उपप्रोग्राम कार्यान्वयन पर निर्भर करता है।

LAPACK को LINPACK के रैखिक समीकरणों और रैखिक न्यूनतम-वर्ग रूटीन और EISPACK के आइगेनवैल्यू रूटीन के उत्तराधिकारी के रूप में डिज़ाइन किया गया था। 1970 और 1980 के दशक में लिखा गया लिनपैक, साझा मेमोरी के साथ तत्कालीन आधुनिक वेक्टर प्रोसेसर पर चलने के लिए डिज़ाइन किया गया था। इसके विपरीत, LAPACK को आधुनिक कैश-आधारित आर्किटेक्चर और आधुनिक सुपरस्केलर प्रोसेसर के निर्देश-स्तरीय समानता पर सीपीयू कैश का प्रभावी ढंग से शोषण करने के लिए डिज़ाइन किया गया था। और इस प्रकार एक अच्छी तरह से ट्यून किए गए बेसिक लीनियर अलजेब्रा सबप्रोग्राम्स कार्यान्वयन को देखते हुए, ऐसी मशीनों पर LINPACK की तुलना में तेजी से परिमाण के ऑर्डर चला सकते हैं।  LAPACK को बाद के पैकेजों जैसे ScaLAPACK और PLAPACK में वितरित मेमोरी सिस्टम पर चलाने के लिए भी विस्तारित किया गया है। नेटलिब लैपैक को तीन-खंड वाले बीएसडी लाइसेंस लाइसेंस के तहत लाइसेंस प्राप्त है, जो कुछ प्रतिबंधों के साथ एक अनुमेय मुफ्त सॉफ्टवेयर लाइसेंस है।

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

प्रपत्र में एक LAPACK सबरूटीन नाम है, कहाँ:


 * यह एक अक्षरीय कोड है जो प्रयुक्त संख्यात्मक स्थिरांकों के प्रकार को दर्शाता है।,   एकल और दोहरी परिशुद्धता में क्रमशः वास्तविक फ़्लोटिंग-पॉइंट अंकगणित के लिए खड़े रहें   और   क्रमशः एकल और दोहरी परिशुद्धता के साथ जटिल संख्या के लिए खड़े हो जाओ। नया संस्करण, LAPACK95, डेटा प्रकार को स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता को दूर करने के लिए सामान्य फ़ंक्शन सबरूटीन्स का उपयोग करता है।
 * एक दो-अक्षर वाला कोड है जो एल्गोरिदम द्वारा अपेक्षित मैट्रिक्स के प्रकार को दर्शाता है। विभिन्न प्रकार के मैट्रिक्स के कोड नीचे बताए गए हैं; वास्तविक डेटा विशिष्ट प्रकार के आधार पर एक अलग प्रारूप में संग्रहीत किया जाता है; उदाहरण के लिए, जब कोड  दिया गया है, सबरूटीन लंबाई के एक वेक्टर की अपेक्षा करता है   विकर्ण पर तत्वों से युक्त, जबकि कोड   दिया गया है, सबरूटीन एक की अपेक्षा करता है $n×n$ मैट्रिक्स की प्रविष्टियों वाली सरणी।
 * सबरूटीन में कार्यान्वित वास्तविक एल्गोरिदम का वर्णन करने वाला एक से तीन अक्षर का कोड है, उदाहरण के लिए  रैखिक प्रणाली को हल करने के लिए एक सबरूटीन को दर्शाता है, जबकि   रैंक-1 अपडेट को दर्शाता है।

उदाहरण के लिए, वास्तविक दोहरे परिशुद्धता अंकगणित का उपयोग करके एक सामान्य (गैर-संरचित) मैट्रिक्स के साथ एक रैखिक प्रणाली को हल करने के लिए सबरूटीन को कहा जाता है.

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


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

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


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

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

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


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

यह भी देखें

 * संख्यात्मक पुस्तकालयों की सूची
 * गणित कर्नेल लाइब्रेरी (एमकेएल)
 * एनएजी न्यूमेरिकल लाइब्रेरी
 * स्लेटेक, गणितीय और सांख्यिकीय दिनचर्या की एक फोरट्रान 77 लाइब्रेरी
 * क्वाडपैक, संख्यात्मक एकीकरण के लिए एक फोरट्रान 77 लाइब्रेरी