बीएलएएस, लैपैक और अन्य रैखिक बीजगणित पुस्तकालयों का क्या संबंध है?


26

मैं एक परियोजना के लिए C ++ रैखिक बीजगणित पुस्तकालयों में देख रहा हूं, जिस पर मैं काम कर रहा हूं। कुछ ऐसा है जो अभी भी मेरे पास नहीं है, अन्य रैखिक बीजगणित पुस्तकालयों के लिए BLAS और LAPACK का कनेक्शन है।

रेखीय बीजगणित पुस्तकालयों पर इस लेख को देखकर मुझे यह दिलचस्प लगा कि:

  • कुछ लाइब्रेरी BLAS और LAPACK से स्वतंत्र हैं
  • कुछ को BLAS और LAPACK की आवश्यकता होती है
  • कुछ में BLAS और LAPACK के लिए वैकल्पिक इंटरफेस है
  • और, जैसा कि मैं इसे समझता हूं, आप सीधे रैखिक बीजगणित की समस्याओं को हल करने के लिए BLAS और LAPACK का उपयोग कर सकते हैं

मैं कल्पना कर सकता हूं कि कुछ पुस्तकालय सी और फोरट्रान में लिखे गए BLAS और LAPACK पुस्तकालयों के लिए बस सी ++ इंटरफेस हैं और अन्य ने अपने स्वयं के स्थानापन्न दिनचर्या को लागू किया है, लेकिन

  1. BLAS और LAPACK में वैकल्पिक इंटरफेस के निहितार्थ क्या हैं? आप बाहर निकल कर क्या खो रहे हैं, और पुस्तकालयों के बजाय क्या कर रहे हैं?

  2. क्या पुस्तकालयों में से कोई भी एक इंटरफ़ेस से अधिक प्रदान करता है? उदाहरण के लिए, UMFPACK C में लिखा गया है और इसमें BLAS और LAPACK के लिए वैकल्पिक इंटरफेस हैं। UMFPACK (या अन्य पुस्तकालय) क्या कर सकते हैं कि BLAS और LAPACK अपने दम पर नहीं कर सकते हैं?

जवाबों:


15

जहां तक ​​मुझे पता है, लैपैक केवल कई एल्गोरिदम का एक ही सार्वजनिक रूप से उपलब्ध कार्यान्वयन है (nonsymmetric dense eigensolver, pseudo-quadratic time symmetric eigensolver, fast Jacobi SVD)। अधिकांश पुस्तकालय जो बीएलएएस + लैपैक पर भरोसा नहीं करते हैं, वे मैट्रिक्स गुणन, एलयू कारक और क्यूआर अपघटन जैसे बहुत ही आदिम संचालन का समर्थन करते हैं। लापैक में घने मैट्रिक्स संगणना के लिए कुछ सबसे अधिक परिष्कृत एल्गोरिदम शामिल हैं, जो मुझे विश्वास नहीं है कि कहीं और कार्यान्वित किए जाते हैं।

तो आपके सवालों के जवाब देने के लिए (कम से कम आंशिक रूप से),

  1. बीएलएएस / लैपैक से बाहर निकलने से, आप आम तौर पर लापता कार्यक्षमता नहीं होते हैं (जब तक कि वैकल्पिक इंटरफ़ेस डिज़ाइन नहीं किया गया था ताकि कोई विकल्प लागू न हो, जो दुर्लभ है)। यदि आप बहुत परिष्कृत कार्य करना चाहते हैं, तो वे अन्य पुस्तकालय शायद वैसे भी खुद को लागू नहीं करते हैं। चूँकि BLAS को आपकी वास्तुकला के लिए अत्यधिक महत्व दिया जा सकता है, इसलिए आपको बहुत से स्पीडअप (लापता होने की गति का क्रम अनसुना नहीं है) पर याद किया जा सकता है।

  2. आप UMFPACK का उल्लेख करते हैं, जो विरल मैट्रिक्स फैक्टराइजेशन के लिए है। BLAS / लैपैक केवल घने मैट्रिस के बारे में चिंतित है। कुछ स्तर पर UMFPACK को मध्यम आकार की घनी समस्याओं पर काम करने की आवश्यकता होती है, जो यह कस्टम कार्यान्वयन का उपयोग करके या BLAS / लापैक को कॉल करके कर सकते हैं। यहाँ अंतर केवल गति में है।

यदि गति बहुत चिंता का विषय है, तो एक पुस्तकालय का उपयोग करने का प्रयास करें जो वैकल्पिक बीएलएएस / लैपैक बाइंडिंग का समर्थन करता है, और अंत में उनका उपयोग तब करें जब आप चीजें तेजी से चाहते हैं।


3
  1. BLAS और LAPACK रूटीन का सबसे अच्छा कार्यान्वयन (सबसे महत्वपूर्ण बात BLAS रूटीन) समान कार्यों के सीधे सीधे कार्यान्वयन से बहुत तेज हो सकता है। हालांकि, कुशल कार्यान्वयन में आमतौर पर वे अनुकूलन शामिल होते हैं जो उस विशेष कंप्यूटर के लिए बहुत विशिष्ट होते हैं, जिस पर आप चल रहे हैं। यहां तक ​​कि एक ही निर्माता से प्रोसेसर के विभिन्न मॉडल (जैसे इंटेल x86-64 प्रोसेसर) को अक्सर अच्छा प्रदर्शन प्राप्त करने के लिए बहुत अलग कोड की आवश्यकता होती है। एक सॉफ्टवेयर पैकेज के लिए अनुकूलित BLAS / LAPACK पुस्तकालयों की आपूर्ति करके, आप आमतौर पर अडॉप्ट किए गए रूटीन का उपयोग करने की तुलना में कोड को गति दे सकते हैं। हालाँकि, चूंकि कई आकस्मिक उपयोगकर्ताओं के पास अनुकूलित दिनचर्या स्थापित करने की विशेषज्ञता नहीं हो सकती है, इसलिए सामान्य असत्यापित रैखिक बीजगणित दिनचर्या का उपयोग करने के लिए एक विकल्प प्रदान करना भी आम है।

  2. UMFPACK विरल मेट्रिसेस पर रैखिक बीजगणित के लिए दिनचर्या का एक पुस्तकालय है (0 प्रविष्टियों की एक उच्च श्रेणी के मेट्रिसेस।) यह घने matrices (या मैट्रिस के घने ब्लॉक) को संभालने के लिए BLAS / LAPACK का उपयोग कर सकता है जो इसका सामना करता है।


1

लघु संस्करण: वे मुख्य रूप से फोरट्रान में लिखे गए पुस्तकालय हैं जो कई भाषाओं में संख्यात्मक कार्यों के लिए उपयोग किए जाते हैं - यहां तक ​​कि कुछ सी कार्यक्रमों के कारण उनकी सरासर गति और अनुकूलन; वे कई एल्गोरिदम के केवल खुले स्रोत कार्यान्वयन में से कुछ हैं :)

जब तक उनके पास निर्भरता न हो, आपको पुस्तकालयों का उपयोग करने की आवश्यकता नहीं है; उन लोगों में से अधिकांश बहुत स्वतंत्र हैं, और आप हमेशा अपने गणित कार्यों को लिख सकते हैं, जैसे कि आपकी वास्तुकला के लिए बेहतर वेक्टरकृत


1
अधिकांश अनुकूलित BLAS और LAPACK रूटीन को फोरट्रान लिखे जाने के लंबे समय से है। सबसे तेज़ BLAS और LAPACK रूटीन आमतौर पर नेटलिब से डाउनलोड नहीं किए जाते हैं। अधिकांश प्रोसेसर के विक्रेता विशेष रूप से अपने चिप्स के लिए डिज़ाइन किए गए BLAS और LAPACK के अनुकूलित संस्करण बेचते या वितरित करते हैं।
बिल बर्थ

क्षमा करें, मेरा मतलब है कि नेट पर वितरित किए गए - सामान्य वाले; चिप विशिष्ट के रूप में पोर्टेबल नहीं हैं: यानी इंटेल के कुछ वेक्टर ट्रिक्स एएमडी चिप्स पर अच्छी तरह से काम नहीं करते हैं, यही कारण है कि उनके पास पुस्तकालय के बारे में एक अस्वीकरण है। और मुझे पूरा यकीन है कि वे दूसरे नाम के तहत रिब्रांडेड हैं?
एरियोउर वॉन कौयफ

@BillBarth BLAS निश्चित रूप से लेकिन क्या आपको यकीन है कि LAPACK रूटीन भी फिर से लिखे गए हैं? अफलाक लंबे समय तक बीएलएएस 3 उच्च प्रदर्शन (या मल्टीथ्रेडेड) है तो इसका अच्छा प्रदर्शन है।
स्टाल

1
मुझे लगता है कि कार्यों और इंटरफ़ेस के नामों के रूप में BLAS और LAPACK हैं। बहुत सारे अलग-अलग कार्यान्वयन (ACML, ESSL, MKL, ATLAS, आदि) हैं।
बिल बर्थ

1
वे सिर्फ इंटरफेस हैं। जैसे कि वे वास्तविक पुस्तकालय नहीं हैं।
एरियोउर वॉन कौयफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.