एक प्रयोग करने योग्य, तेज C ++ मैट्रिक्स लाइब्रेरी के लिए सिफारिशें?


158

क्या किसी के पास प्रयोग करने योग्य, तेज़ C ++ मैट्रिक्स लाइब्रेरी की सिफारिशें हैं?

प्रयोग करने योग्य से मेरा मतलब निम्नलिखित है:

  • मैट्रिक्स ऑब्जेक्ट में एक सहज ज्ञान युक्त इंटरफ़ेस होता है (उदाहरण: मैं अनुक्रमित करते समय पंक्तियों और स्तंभों का उपयोग कर सकता हूं)
  • मैं मैट्रिक्स क्लास के साथ कुछ भी कर सकता हूं जो मैं लैपैक और बीएलएएस के साथ कर सकता हूं
  • सीखना आसान है और एपीआई का उपयोग करें
  • लिनक्स में स्थापित करने के लिए अपेक्षाकृत दर्द रहित (मैं अभी Ubuntu 11.04 का उपयोग करता हूं)

मेरे लिए, समय से पहले अनुकूलन से बचने के लिए प्रयोज्य गति या स्मृति उपयोग की तुलना में अधिक महत्वपूर्ण है। कोड लिखने में, मैं हमेशा मैट्रिक्स का अनुकरण करने के लिए 1-डी सरणियों (या एसटीएल वैक्टर) और उचित सूचकांक या सूचक अंकगणितीय का उपयोग कर सकता था, लेकिन बग से बचने के लिए मैं ऐसा नहीं करना चाहता। मैं वास्तविक समस्या पर अपने मानसिक प्रयास पर ध्यान केंद्रित करना चाहता हूं, जिसे मैं समस्या डोमेन में हल करने और प्रोग्राम करने की कोशिश कर रहा हूं, बजाय इसके कि मैं उन सभी छोटी प्रोग्रामिंग ट्रिक्स को याद करने के लिए अपने परिमित ध्यान के हिस्से का उपयोग करूं, जिन्हें मैं एट्रेज के रूप में मैट्रिसेस का अनुकरण करता था। , और याद रखें कमांड, वगैरह। साथ ही, मुझे जितना कम कोड लिखना होगा, और यह उतना ही अधिक मानकीकृत होगा।

घने बनाम विरल अभी तक कोई फर्क नहीं पड़ता; मैं जिन मैत्रियों के साथ काम कर रहा हूँ उनमें से कुछ विरल होंगे, लेकिन उनमें से सभी नहीं। हालांकि, यदि कोई विशेष पैकेज घने या विरल मैट्रिस को अच्छी तरह से संभालता है, तो यह ध्यान देने योग्य है।

टेंपलेट करना मेरे लिए ज्यादा मायने नहीं रखता है, क्योंकि मैं मानक संख्यात्मक प्रकारों के साथ काम करूंगा और डबल्स, फ्लोट्स या इन्टल्स के अलावा कुछ भी स्टोर करने की आवश्यकता नहीं है। यह अच्छा है, लेकिन जो मैं करना चाहता हूं, उसके लिए जरूरी नहीं है।


1
CUDA एक विकल्प का उपयोग कर रहा है?
फ्लिपकार्ट

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

इंटेल MKL और IPP के बारे में क्या?
रॉय

जवाबों:


146

मैंने अब तक ऑनलाइन शोध से निम्नलिखित एकत्र किए हैं:

मैंने आर्माडिलो का उपयोग थोड़ा सा किया है, और इंटरफ़ेस को काफी सहज पाया है, और उबंटू के लिए बाइनरी पैकेज का पता लगाना आसान था (और मैं अन्य लिनक्स डिस्ट्रोस मान रहा हूं)। मैंने इसे स्रोत से संकलित नहीं किया है, लेकिन मेरी आशा है कि यह बहुत मुश्किल नहीं होगा। यह मेरे अधिकांश डिजाइन मानदंडों को पूरा करता है, और घने रैखिक बीजगणित का उपयोग करता है। इसे LAPACK या MKL रूटीन कह सकते हैं। आम तौर पर अर्माडिलो को संकलित करने की आवश्यकता नहीं है, यह पूरी तरह से टेम्पलेट-आधारित लाइब्रेरी है: आप हेडर और लिंक को BLAS / LAPACK या MKL आदि में शामिल करते हैं।

मैंने Eigen के बारे में अच्छी बातें सुनी हैं , लेकिन इसका उपयोग नहीं किया है। यह तेज़ होने का दावा करता है, टेम्प्लेटिंग का उपयोग करता है, और घने रैखिक बीजगणित का समर्थन करता है। इसमें निर्भरता के रूप में LAPACK या BLAS नहीं है, लेकिन ऐसा प्रतीत होता है कि वह सब कुछ करने में सक्षम है जो LAPACK कर सकता है (साथ ही कुछ चीजें जो LAPACK नहीं कर सकता है)। बहुत सारी परियोजनाएं ईगन का उपयोग करती हैं, जो आशाजनक है। इसमें उबंटू के लिए एक बाइनरी पैकेज है, लेकिन हेडर-ओनली लाइब्रेरी के रूप में यह अन्यत्र भी उपयोग करने के लिए तुच्छ है।

मैट्रिक्स टेम्पलेट लायब्रेरी संस्करण 4 भी होनहार लग रहा है, और templating उपयोग करता है। यह घने और विरल रैखिक बीजगणित दोनों का समर्थन करता है, और UMFPACK को विरल सॉल्वर कह सकता है । उनकी वेबसाइट से सुविधाएँ कुछ अस्पष्ट हैं। यह उबंटू के लिए एक बाइनरी पैकेज है, जो उनकी वेब साइट से डाउनलोड करने योग्य है।

पेट्सक , Argonne National Laboratory में एक टीम द्वारा लिखी गई, विरल और घने रेखीय सॉल्वरों तक पहुंच रखती है, इसलिए मैं मान रहा हूं कि यह एक मैट्रिक्स लाइब्रेरी के रूप में कार्य कर सकता है। यह C में लिखा है, लेकिन C ++ बाइंडिंग है, मुझे लगता है (और अगर ऐसा नहीं भी था, तो C ++ से C को कॉल करना कोई समस्या नहीं है)। प्रलेखन अविश्वसनीय रूप से पूरी तरह से है। पैकेज मैं अब क्या करना चाहता हूं (मिश्रित-पूर्णांक रैखिक कार्यक्रम स्थापित करने के लिए मैट्रिक्स गुणन और अनुक्रमण) के लिए थोड़ा ओवरकिल है, लेकिन भविष्य में मेरे लिए मैट्रिक्स प्रारूप के रूप में उपयोगी हो सकता है, या अन्य लोगों के लिए जिनकी अलग-अलग आवश्यकताएं हैं फिर में करता हूँ।

सैंडिलिया नेशनल लेबोरेटरी में एक टीम द्वारा लिखित त्रिलीनोस , अपने एपेट्रा घटक के माध्यम से घने और विरल मैट्रिस के लिए ऑब्जेक्ट-उन्मुख सी ++ इंटरफेस प्रदान करता है, और टेट्रा घटक के माध्यम से घने और विरल मैट्रिस के लिए टेम्पलेटेड इंटरफेस। इसमें ऐसे घटक भी हैं जो लीनियर सॉल्वर और ईजेनसोल्वर की कार्यक्षमता प्रदान करते हैं। प्रलेखन पेट्स के रूप में पॉलिश या प्रमुख नहीं लगता है; Trilinos PETSc के सैंडिया एनालॉग की तरह लगता है। पेट्सक कुछ ट्रिलीनो सॉल्वर कह सकते हैं। Trilinos के लिए बायनेरिज़ लिनक्स के लिए उपलब्ध हैं।

ब्लिट्ज एक सी ++ ऑब्जेक्ट-ओरिएंटेड लाइब्रेरी है जिसमें लिनक्स बायनेरिज़ है। यह सक्रिय रूप से बनाए रखा प्रतीत नहीं होता है (2012-06-29: एक नया संस्करण अभी कल दिखाई दिया है!), हालांकि मेलिंग सूची सक्रिय है, इसलिए कुछ समुदाय हैं जो इसका उपयोग करते हैं। यह BLAS से आगे संख्यात्मक रेखीय बीजगणित के तरीके से बहुत कुछ नहीं करता है, और घने मैट्रिक्स पुस्तकालय जैसा दिखता है। यह टेम्पलेट्स का उपयोग करता है।

बूस्ट :: uBLAS एक C ++ ऑब्जेक्ट-ओरिएंटेड लाइब्रेरी और बूस्ट प्रोजेक्ट का हिस्सा है। यह टेम्प्लेटिंग और घने संख्यात्मक रैखिक बीजगणित का समर्थन करता है। मैंने सुना है कि यह विशेष रूप से तेज़ नहीं है।

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

मौलिक , जैक Poulson द्वारा विकसित, एक वितरित स्मृति (समानांतर) घने रेखीय बीजगणित सॉफ्टवेयर पैकेज एक शैली के समान में लिखा है लौ । प्रोजेक्ट पर सुविधाओं और पृष्ठभूमि की सूची के लिए, उसका दस्तावेज़ीकरण देखें । फ्लेम में ही अनुक्रमिक और साझा-मेमोरी डेंस लीनियर बीजगणित के लिए एक संबद्ध पुस्तकालय है, जिसे लिबफ्लेम कहा जाता है , जो ऑब्जेक्ट-ओरिएंटेड सी में लिखा गया प्रतीत होता है। लिबफ्लेम लैपैक की तरह दिखता है, लेकिन बेहतर अंकन के साथ तेजी से संख्यात्मक का विकास करने के लिए एल्गोरिदम अंतर्निहित है। एक विज्ञान के रैखिक बीजगणित पुस्तकालय और एक काली कला के कम।

अन्य पुस्तकालय हैं जिन्हें सूची में जोड़ा जा सकता है; अगर हम "मैट्रिक्स लाइब्रेरीज़" के रूप में विरल लीनियर बीजगणित पैकेजों की गिनती कर रहे हैं, तो सी में मुझे जो सबसे अच्छी जानकारी है, वह है सुइटसर्से , जिसे ऑब्जेक्ट-ओरिएंटेड स्टाइल में प्रोग्राम किया गया है। मैंने स्वीटशेयर का उपयोग किया है और इसे उठाना काफी आसान है; यह कुछ एल्गोरिदम के लिए BLAS और LAPACK पर निर्भर करता है, जो कि बहुत सारी छोटी, घनी रेखीय बीजगणित उप-प्रकृतियों में विरल समस्याओं को कम करता है। पैकेज के प्रमुख लेखक टिम डेविस अविश्वसनीय रूप से सहायक और एक बेहतरीन ऑल-अराउंड आदमी हैं।

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

अन्य विरल रैखिक बीजगणित सॉल्वर भी हैं, लेकिन जहां तक ​​मैं बता सकता हूं, MUMPS और अन्य पैकेज ज्यादातर रैखिक प्रणालियों के समाधान पर केंद्रित हैं, और रैखिक प्रणालियों को हल करना अभी मेरी चिंताओं में से कम से कम है। (शायद बाद में, मुझे उस कार्यक्षमता की आवश्यकता होगी, और यह दूसरों के लिए उपयोगी हो सकता है।)


2
मुझे लगता है कि आपने इगेन को एलिमेंटल के साथ भ्रमित किया है; मैंने Eigen पर काम नहीं किया है, हालांकि मैं इस परियोजना से बहुत प्रभावित हूं। एलिमेंटल मुख्य रूप से वितरित-मेमोरी मशीनों को लक्षित करता है।
जैक पॉल्सन

3
मुझे लगता है कि मेरा पहला सवाल होगा: क्या आप कभी भी समानांतर में कुछ भी चलाना चाहते हैं?
मैट नेप्ले

1
मुझे त्रिलीनोस का उल्लेख करना चाहिए ... हालांकि यहां बहुत दृश्यता नहीं मिलती है (अभी तक), यह PETSc के लिए एक व्यवहार्य विकल्प है, जिसमें टेम्पलेटेड मैट्रिक्स पैकेज, एक आइगेंसोल्वर और एक विरल मैट्रिक्स सॉल्वर है, इसमें एक पैकेज भी है विशेष रूप से एक एल्गोरिथ्म की बहीखाता पद्धति को अमूर्त करने के लिए, हालांकि मुझे नहीं पता कि यह कितनी अच्छी तरह काम करता है।
एंड्रयू स्पॉट

1
ईगन को बहुत अच्छा लगता है - मेरे एक सहकर्मी ने पेशेवर संदर्भ में इसका इस्तेमाल किया, और यह आपको बिना किसी प्रदर्शन के बलिदान के बिना जल्दी से उठने और चलने में मदद कर सकता है।
१।

7
मैं आपके उत्तर में निम्नलिखित पुस्तकालयों को भी जोड़ूंगा : वियनाएलसीएल - ओपनसीएल -आधारित सी ++ हेडर लाइब्रेरी जो ईजेन और एमटीएल में इंटरफ़ेस कर सकता है। PLASMA - BLAS और LAPACK पुस्तकालयों का एक UTK- आधारित पुनर्निमाण, जिसमें टाइल-आधारित डिकम्पोज़िशन होते हैं। MAGMA - एक और UTK प्रोजेक्ट जो LAPACK / BLAS के प्रदर्शन को बेहतर बनाने पर केंद्रित है।
एरन अहमदिया

24

यह दस्तावेज़ मार्च 2009 में एक वैज्ञानिक पुस्तकालय के लिए एक रेखीय बीजगणित पुस्तकालय की पसंद में मदद करने के लिए लिखा गया था। यह कई पुस्तकालयों के लिए पोर्टेबिलिटी, उच्च-स्तरीय इंटरफ़ेस और लाइसेंसिंग का मूल्यांकन करता है, उनमें से Eigen, GSL, Lapack ++ MTL, PETSc, Trilinos और uBlas। यह विशेष रूप से शौकीन हो रहा है Flens और Seldon । (आवश्यकताओं में से एक यह था कि C ++ टेम्प्लेट और विरल मैट्रीस का समर्थन किया जाना था।)


17

ऊपर सूचीबद्ध सभी परियोजनाओं में से, वास्तव में केवल दो भारी-वजन हैं जो बहुत व्यापक रूप से (और अच्छे कारणों के लिए) उपयोग किए जाते हैं: पेट्सक और ट्रिलिनो। दोनों पेशेवर रूप से विकसित हैं और एक बड़ा डेवलपर आधार है। अन्य सभी इन दोनों की तुलना में छोटी परियोजनाएँ हैं, और मैं उनके साथ जाने की सलाह दूंगा क्योंकि (i) उन्हें आने वाले लंबे समय के लिए समर्थन दिया जाएगा और (ii) उनके पास पहले से ही सभी कार्यक्षमता होने की संभावना है जिनके बारे में आपको कभी भी आवश्यकता होगी रैखिक बीजगणित (और उस के शीर्ष पर बहुत अधिक)।


4
PETSc में ScaLAPACK और PLAPACK के लिए थोड़े सार इंटरफ़ेस की तुलना में बहुत अधिक सुविधा नहीं है। यदि ज्योफ सुविधाजनक घने रेखीय बीजगणित में रुचि रखते हैं, तो मुझे लगता है कि पेट्स ओवरकिल है (मुझे टिप्पणी करने के लिए ट्रिलिनोस की घनी क्षमताओं के बारे में पर्याप्त नहीं पता है)
एरन अहमदिया

@AronAhmadia: इस बिंदु पर, मुझे लगता है कि उत्तर एक सामुदायिक विकी संसाधन के रूप में अधिक रूपांतरित हो गया है, यही कारण है कि मैं टिप्पणीकारों के अनुरोध पर पैकेज जोड़ रहा हूं।
ज्योफ ऑक्सीबेरी

3
@WolfgangBangerth: मुझे लगता है कि डिजाइन लक्ष्यों का उल्लेख करना महत्वपूर्ण है। यदि लक्ष्य सॉफ़्टवेयर के एक टुकड़े को लिखना है जो लंबे समय तक चलने वाला है और इसका उपयोग दूसरों द्वारा किया जाना है, और रैखिक बीजगणित उस सॉफ़्टवेयर का एक अभिन्न अंग है, तो पेट्सक और ट्रिलीनोस अच्छे विकल्प हैं। हालांकि, ऐसे मामले हैं जहां अधिक हल्के विकल्प बेहतर और उपयोगी हैं, क्योंकि उनके पास सरल एपीआई हैं और कोड के कम लाइनों में लगभग एक ही कार्य को पूरा कर सकते हैं। अंत में, चयन पूर्वाग्रह कोड के अस्तित्व में एक भूमिका निभाता है। यदि कोई भी छोटे कोड का उपयोग नहीं करता है, तो वे PETSc और Trilinos की तरह एक आधार नहीं बना सकते हैं।
जियोफ ऑक्सबेरी

1
ज्यॉफ ने जो कहा, उसे जोड़ने के लिए, पेट्स और ट्रिलिनो की कार्यक्षमता का अधिकांश हिस्सा बाहरी पुस्तकालयों के आसपास के रैपरों से आता है। यह कहने के लिए कि किसी को भी यह नहीं कहना चाहिए कि बाहरी पुस्तकालय सीधे मुझे अजीब लगते हैं।
जैक पोल्सन 18

1
@JackPoulson: मैं वास्तव में अपनी टिप्पणी के साथ खड़ा हूं। हां, पेट्सक कई व्यक्तिगत पैकेज लपेटता है। लेकिन यह एक समान इंटरफ़ेस के साथ ऐसा करता है और इसलिए यह एक बार सीखने से सरल है कि प्रत्येक पैकेज नामकरण सम्मेलन और शैली की विशिष्टताओं को सीखना होगा। दूसरे शब्दों में, जबकि प्रत्येक व्यक्तिगत परियोजना समान रूप से अच्छी तरह से लिपटे हुए पैकेजों का उपयोग कर सकती है, एक तालमेल है जो पेटीएम टाइम के माध्यम से उनका उपयोग करने से आता है।
वुल्फगैंग बंगर्थ

11

अगर तुम चाहो

  • एक सहज ज्ञान युक्त अंतरफलक के साथ मैट्रिक्स कक्षाएं
  • सभी LAPACK और BLAS सुविधाएँ
  • सीखना आसान है और एपीआई का उपयोग करें
  • इन्सटाल करना आसान

फिर मैं आपको मेरी लाइब्रेरी FLENS पर एक नज़र डालने की सलाह देता हूँ । मैंने इसे इस तरह के कार्यों के लिए डिज़ाइन किया है। हालाँकि, इसके लिए C ++ 11 अनुरूप संकलक (उदाहरण के लिए gcc 4.7 या क्लैंग) की आवश्यकता होती है।

FLENS आपको अंतर्निहित BLAS कार्यान्वयन के बिल्कुल समान प्रदर्शन देता है। इसे दिखाने वाले कुछ (बल्कि पुराने) बेंचमार्क हैं

FLENS-LAPACK के बारे में भी यही कहा जा सकता है, यह आपको Netlib के LAPACK के समान प्रदर्शन देता है यदि उसी BLAS कार्यान्वयन का उपयोग किया जाता है।

नए बेंचमार्क के बारे में मुझे और विस्तार से जाने ...

कुछ समय पहले मैंने क्लिंट व्हाली (एटलस के लेखक) से पूछा कि वह आइगन साइट पर प्रकाशित बेंचमार्क के बारे में क्या सोचते हैं। उन्होंने सिर्फ मेरे संदेह की पुष्टि की कि ये बेंचमार्क सबसे अधिक विश्वसनीय नहीं हैं। इस बीच, कुछ अन्य एहसास हुआ कि जिस तरह से क्लिंट ने सुझाव दिया था, उसी तरह से बेंचमार्क। विवरण एटलस साइट और ईजन मेलिंग सूची पर पाया जा सकता है। बेंचमार्क को रेखांकन में अच्छी तरह से प्रस्तुत नहीं किया गया है, लेकिन वे बताते हैं कि एटलस की तुलना में एटीएलएएस लगभग 40% तेज है। यह Eigen साइट से मानदंड का खंडन करता है, लेकिन अन्य मानदंड (जैसे कि ब्लेज़-लिबर से) की पुष्टि करता है।

ध्यान दें कि घने संख्यात्मक रैखिक बीजगणित के लिए मैट्रिक्स-मैट्रिक्स उत्पाद सबसे अधिक प्रासंगिक हैं। व्यक्तिगत रूप से मुझे परवाह नहीं है कि क्या Eigen या ATLAS तेज है। यदि Eigen ATLAS से तेज था तो मैं Eigen का उपयोग BLAS-backend के रूप में करूंगा।

डिस्क्लेमर: हाँ, FLENS मेरा बच्चा है! इसका मतलब है कि मैं इसके बारे में 95% कोडित और कोड की हर पंक्ति के लायक था :-)


हाय माइकल, scicomp में आपका स्वागत है। आपका URL मेरे लिए काम नहीं कर रहा है, क्या आपके सर्वर में कुछ गड़बड़ है?
एरन अहमदिया

संकेत के लिए धन्यवाद। URL सही है लेकिन ऐसा लगता है कि हमें फ़ाइल सर्वर के साथ गणित विभाग में कोई समस्या आ रही है। सप्ताहांत के लिए बस समय पर ...
माइकल लेहैन

1
ठीक है, मैंने अभी हाल ही में मौजूदा git रेपो से नए दस्तावेज़ बनाए और इसे दूसरे सर्वर पर कॉपी किया: apfel.mathematik.uni-ulm.de/~lehn/FLENS/index.html
माइकल

3

मैं कुछ समय से GMM ++ का उपयोग कर रहा हूं और मैं इससे खुश हूं।


2

1

छोटे आकार के मेट्रिसेस से निपटने के लिए सबसे अच्छी मैट्रिक्स लाइब्रेरी क्या होगी, जिसका उपयोग आमतौर पर किया जाता है, उदाहरण के लिए, जब परिमित तत्व मैट्रिसेस को असेंबल करते हुए, टेंसर संचालन और इतने पर प्रदर्शन के लिए।

मैं पहले से ही अपने अनुप्रयोग में उत्पन्न होने वाले बड़े विरल रैखिक प्रणालियों के समाधान के लिए PETSc का उपयोग कर रहा हूं, लेकिन वर्तमान में मैं इन मेट्रिसेस / वैक्टर से निपटने के लिए अपने स्वयं के सरल पुस्तकालय का उपयोग कर रहा हूं ... मैं एक तेज, पुस्तकालय में जाने पर विचार कर रहा हूं जैसा ऊपर बताया गया है।

पेट्सक के साथ जोड़ी बनाने के लिए सबसे अच्छा विकल्प क्या होगा? Eigen? वर्मी? Boost :: uBlas? MTL4? मैं BOOST से कुछ चीजों का उपयोग करता हूं, इसलिए, पहले मैंने BOOST :: uBlas का उपयोग करने के बारे में सोचा, लेकिन इसमें बहुत सारे दस्तावेज, उदाहरण और कुछ नहीं है ...


2
मैं uBlas का उपयोग करने के खिलाफ दृढ़ता से सलाह देता हूं, क्योंकि यह अनुकूलित BLAS दिनचर्या की तुलना में परिमाण धीमी के एक आदेश के बारे में जाना जाता है। मुझे लगता है कि चतुर टेम्पलेट चालों के कारण आइगन सबसे छोटे मैट्रीक के लिए चमकता है।
जैक पॉल्सन

1
यह शायद एक अलग प्रश्न के लिए बेहतर है। मुझे पता है कि Eigen, MTL4, और Armadillo सभी में छोटे आकार के सिस्टम को हल करने के लिए ट्रिक्स हैं, लेकिन मुझे लगता है कि आप मैट्रिस को कैसे इकट्ठा करना चाहते हैं, और उसके लिए, मुझे नहीं पता। मैं आमतौर पर मेट्रिसेस को तत्व-दर-तत्व इकट्ठा करता हूं। अगर पेट्स के साथ युग्मन के लिए अच्छा है, तो किसी भी लाइब्रेरी का उल्लेख नहीं किया गया है; मैं अभी तक पेट्सक उपयोगकर्ता नहीं हूं। मैं बूस्ट के बारे में जैक की दूसरी टिप्पणी :: uBlas, हालांकि, क्योंकि यह धीमा है।
ज्योफ ऑक्सीबेरी

1

अर्माडिलो, बूस्ट और अन्य अब Ceemple के हिस्से के रूप में शामिल हैं, जो एक तीव्र JIT आधारित C ​​++ तकनीकी कंप्यूटिंग वातावरण है। उपलब्ध (मुफ्त) http://www.ceemple.com से


0

आश्चर्य कोई भी उल्लेख किया है तून अब तक। अब लगभग 3 वर्षों से इसका उपयोग खुशी-खुशी किया जा रहा है।

यह Eigen के समान है, हालांकि उतना व्यापक नहीं है। हालाँकि मुझे लगता है कि यह कुछ मायनों में अच्छा वाक्यविन्यास है।

यह उन कक्षाओं के साथ भी आता है जो सामान्य परिवर्तनों की मॉडलिंग करने में मदद करते हैं जो अक्सर लाई ग्रुप्स (2 और 3 आयामों, आदि में विशेष यूक्लिडियन / ऑर्थोगोनल) और संबंधित लिय अल्जेब्रा के आधार पर ग्राफिक्स और विज़न में सामने आते हैं।


0

HASEM मैट्रिक्स सी ++ लाइब्रेरी वह है जो आपको वास्तव में http://sourceforge.net/projects/hasem/ की आवश्यकता है


1
"HASEM लगभग किसी भी रैखिक बीजगणित की समस्याओं को हल करने में सक्षम है"!
डेविड केचेसन

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