लैपैक

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

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

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

प्रपत्र में लैपैक सबसामान्य नाम है, कहाँ:


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

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

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


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

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


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

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

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


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

यह भी देखें

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