मुझे मैट्रिक्स पर गुणा करने की आवश्यकता है। मैं एक पुस्तकालय की तलाश में हूं जो इसे तेजी से कर सकता है। मैं विजुअल सी ++ 2008 कंपाइलर का उपयोग कर रहा हूं और मेरे पास कोर i7 860 है इसलिए यदि लाइब्रेरी को मेरी कॉन्फ़िगरेशन के लिए अनुकूलित किया गया है तो यह सही है।मैट्रिक्स परिचालनों के लिए एक अच्छी सी ++ लाइब्रेरी क्या है
उत्तर
Eigen में देखें। आपको इसकी ज़रूरत होनी चाहिए।
किया यह धागे का उपयोग करता है हो जाता है? – Yttrill
ईजिन छोटे matrices पर केवल अच्छा है। यह बड़े matrices के लिए धागे का उपयोग नहीं करता है। लेकिन यह उपलब्ध होने पर एसएसई 2 का उपयोग करता है। –
खैर, उनका स्वयं का बेंचमार्क अलग दिखाता है ... हेक, थ्रेडिंग को ब्लॉक उत्पादों को लागू करके लागू किया जा सकता है यदि आपको वास्तव में इसकी आवश्यकता है। – rubenvb
मुझे बूस्ट के uBLAS के साथ अच्छा अनुभव रहा है। यदि आप बूस्ट का उपयोग कर रहे हैं तो यह एक अच्छा विकल्प है।
क्या यह धागे का उपयोग करता है (यदि यह तेज़ नहीं है)? – Yttrill
यह आपके सिस्टम पर स्थापित बीएलएएस लाइब्रेरी का उपयोग करता है। इंटेल एक प्रदान करता है जो धागे और वेक्टर निर्देशों का उपयोग करता है: इंटेल एमकेएल के लिए Google। हालांकि यह मुफ्त नहीं है। –
मुझे बूस्ट के यूब्लास के साथ वास्तव में एक भयानक अनुभव हुआ है। यह पूरी तरह से अनजान और पता लगाने में मुश्किल है। उदाहरण के लिए, मुझे कैसे पता होना चाहिए कि वेक्टर-मैट्रिक्स गुणा 'prod() 'का उपयोग करके किया जाता है - क्यों' * 'ऑपरेटर नहीं? इसके अलावा, मैं दो वैक्टरों को गुणा भी नहीं कर सकता। –
आप GNU Scientific Library(GSL) का उपयोग कर सकते हैं।
यहाँ गुणा सहित एक पेज पुस्तकालय में मैट्रिक्स उपलब्ध संचालन का वर्णन है, (gsl_matrix_mul_elements()):
http://www.gnu.org/software/gsl/manual/html_node/Matrix-operations.html
और यहाँ कुछ लिंक प्राप्त करने के लिए आप दृश्य स्टूडियो के साथ GSL का उपयोग कर के साथ शुरू कर रहे हैं:
http://gladman.plushost.co.uk/oldsite/computing/gnu_scientific_library.php
वास्तव में? एमएसवीसी ++ पर जीएनयू कोड संकलित? मेरा मतलब है कि यदि आप वास्तव में प्रदर्शन प्राप्त करना चाहते हैं तो आप एटलस आधारित बीएलएएस का उपयोग करेंगे, लेकिन मुझे संदेह है कि यह विंडोज पर निर्माण करना आसान होगा .. :) – Yttrill
http://math-atlas.sourceforge.net/errata.html# gccCrazy –
शायद इसे स्वयं लागू करने का एक विकल्प है, शायद std :: valarray का उपयोग कर क्योंकि इसे ओपनएमपी का उपयोग करके समांतर किया जा सकता है: gcc निश्चित रूप से ऐसा संस्करण है, एमएसवीसी ++ शायद भी करता है।
अन्यथा, निम्नलिखित चालें: मैट्रिक्स में से एक को स्थानांतरित किया जाना चाहिए। तो फिर तुम है:
एबी [i, j] = योग (के) एक [मैं, k] बी टी^[j, k]
जहां सन्निहित स्मृति स्कैनिंग कर रहे हैं। यदि आपके पास 8 कोर हैं तो आप [i, j] इंडेक्स के सेट को 8 में आसानी से विभाजित कर सकते हैं, और कुल नौकरी के प्रत्येक कोर 1/8 को दे सकते हैं। इसे और भी तेज बनाने के लिए आप वेक्टर गुणा निर्देशों का उपयोग कर सकते हैं, अधिकांश कंपाइलर इसके लिए एक विशेष कार्य प्रदान करेंगे। नतीजा एक ट्यूनेड लाइब्रेरी जितना तेज़ नहीं होगा लेकिन यह ठीक होना चाहिए।
यदि आप बहुपद मूल्यांकन जैसे लंबी गणना कर रहे हैं, तो थ्रेडिंग मूल्यांकनकर्ता जिसमें थ्रेड सपोर्ट (गाक, दो प्रकार के धागे) भी अच्छे काम करेंगे, भले ही यह निम्न स्तर की ट्यूनिंग न करे। यदि आप वास्तव में तेजी से सामान करना चाहते हैं, तो आपको एटलस जैसे उचित ट्यून लाइब्रेरी का उपयोग करना होगा, लेकिन फिर, यदि आप एचपीसी के बारे में गंभीर थे तो शायद आप विंडोज नहीं चलेंगे।
मैट्रिक्स संचालन को कभी भी लागू न करें। एक बीएलएएस कार्यान्वयन का प्रयोग करें। –
यह वैज्ञानिक पुस्तकालयों के साथ रेस में भाग नहीं सकते हैं, लेकिन दृश्य ग के साथ ++ यह हाथ में है
#include <windows.h>
#include <gdiplus.h>
#pragma comment (lib,"Gdiplus.lib")
using namespace Gdiplus;
int main()
{
ULONG_PTR gpToken = 0;
GdiplusStartup(&gpToken, &GdiplusStartupInput(), NULL);
//lib inited
Matrix A;
A.Translate(10,20);
Matrix B;
B.Rotate(35.0);
A.Multiply(&B);
if (A.IsInvertible())
A.Invert();
if (!A.IsIdentity())
A.RotateAt(120.0, PointF(10,10));
//getting values
REAL elements[6];
A.GetElements(elements);
//lib stopped
GdiplusShutdown(gpToken);
return 0;
}
तो इस के साथ
आप आसानी से (Windows पर)
आव्यूह गुणन बाधा ले जा सकते हैंबीएलएएस सभी मूल रैखिक बीजगणित संचालन (अनिवार्य रूप से matrices और वैक्टर के गुणा) के लिए एक वास्तविक फोरट्रान मानक है। कई कार्यान्वयन उपलब्ध हैं। उदाहरण के लिए:
- एटलस निःशुल्क और माना जाता है कि स्वयं अनुकूलन है। यद्यपि आपको इसे स्वयं संकलित करने की आवश्यकता है।
- गोटो बीएलएएस को टीएसीसी में काज़ुशीज गोटो द्वारा बनाए रखा जाता है। वह आधुनिक प्रोसेसर से आखिरी प्रदर्शन थोड़ा सा पाने में बहुत अच्छा है। यह केवल अकादमिक उपयोग के लिए है।
- इंटेल एमकेएल इंटेल प्रोसेसर के लिए अनुकूलित बीएलएएस प्रदान करता है। अकादमिक उपयोग के लिए भी यह मुफ़्त नहीं है।
फिर, आप एक सी ++ रैपर का उपयोग करना चाह सकते हैं, उदाहरण के लिए boost::ublas
।
यदि आप वितरित सिस्टम पर प्रोग्राम करते हैं, तो पीबीएलएएस और स्काल्पैक हैं जो वितरित रैखिक बीजगणित संचालन के लिए संदेश भेजने के उपयोग को सक्षम करते हैं। एक मल्टीकोर मशीन पर, आमतौर पर बीएलएएस (कम से कम इंटेल एमकेएल) के कार्यान्वयन बड़े पर्याप्त मैट्रिक्स के लिए धागे का उपयोग करते हैं।
यदि आप अधिक उन्नत रैखिक बीजगणित दिनचर्या (eigenvalues, रैखिक प्रणाली, कम से कम वर्ग, ...) चाहते हैं, तो अन्य वास्तव में फोरट्रान मानक LAPACK है। मेरे ज्ञान के लिए, नंगे फोरट्रान दिनचर्या को कॉल करने के अलावा सी ++ के साथ सुंदरता को एकीकृत करने के लिए कुछ भी नहीं है। फोरट्रान कॉल को छिपाने के लिए आपको कुछ रैपर लिखना होगा और एक ध्वनि प्रकार-जांच कार्यान्वयन प्रदान करना होगा।
एफडब्ल्यूआईडब्ल्यू, ईजिन 3 मैट्रिक्स उत्पादों के लिए धागे (ओपनएमपी) का उपयोग करता है (ईगिन के बारे में ऊपर दिए गए बयान के जवाब में धागे का उपयोग नहीं करते हैं)।
विजुअल स्टूडियो के नवीनतम संस्करण के लिए, आप स्कालापैक + एमकेएल का उपयोग कर सकते हैं। कोड का एक नमूना here प्रदान किया गया है, इसे ट्यूटोरियल के साथ कैसे चलाया जाए।
http://code.msdn.microsoft.com/Using-ScaLAPACK-on-Windows-d16a5e76#content
- 1. मैट्रिक्स परिचालनों के लिए ओपनसीवी जीपीयू लाइब्रेरी कितनी अच्छी है?
- 2. सी के लिए उपलब्ध एक अच्छी मैट्रिक्स मैनिपुलेशन लाइब्रेरी क्या है?
- 3. क्या पाइथन के लिए एक अच्छी आरेखण लाइब्रेरी है?
- 4. आईओएस के लिए एक अच्छी डेटा विज़ुअलाइज़ेशन लाइब्रेरी क्या है?
- 5. .NET के लिए एक अच्छी आरडीएफ लाइब्रेरी क्या है?
- 6. निर्णय पेड़ के लिए एक अच्छी पायथन लाइब्रेरी क्या है?
- 7. सी # मैट्रिक्स लाइब्रेरी
- 8. सी/सी ++ में सबसे अच्छी एन्क्रिप्शन लाइब्रेरी क्या है?
- 9. ओपनक्ल मैट्रिक्स लाइब्रेरी
- 10. ब्लॉब्स। कौन सी लाइब्रेरी सबसे अच्छी है?
- 11. क्या सी के लिए लाइब्रेरी भंडार है?
- 12. क्या J2ME/MIDP के लिए कोई अच्छी HttpClient लाइब्रेरी है?
- 13. ओपनजीएल में बनावट छवियों में लोड करने के लिए एक अच्छी सी ++ लाइब्रेरी क्या है?
- 14. नेट के लिए सबसे अच्छी EXIF लाइब्रेरी क्या है?
- 15. क्या नेट के लिए कोई अच्छी पार्सिंग लाइब्रेरी है?
- 16. सी/सी ++ में कंप्यूटर दृष्टि के लिए सबसे अच्छी लाइब्रेरी क्या है?
- 17. क्या कोई अच्छी जावा नेटवर्किंग लाइब्रेरी है?
- 18. उद्देश्य-सी/आईफोन के लिए अच्छी HTTP लाइब्रेरी?
- 19. कोई भी अच्छी सी/सी ++ डीएसपी लाइब्रेरी?
- 20. क्या सी ++ के लिए LINQ लाइब्रेरी है?
- 21. पैराफ्रेशिंग के लिए उपयोग करने के लिए एक अच्छी प्राकृतिक भाषा लाइब्रेरी क्या है?
- 22. उद्देश्य सी के लिए कोई अच्छी तस्वीर ब्राउज़िंग लाइब्रेरी?
- 23. क्या एक्शनस्क्रिप्ट के लिए एक अच्छी स्ट्रिंग बहुवचन पुस्तकालय है?
- 24. क्या एंड्रॉइड के लिए एक अच्छी याम पुस्तकालय है?
- 25. बिसेट्स या बिटरैर के लिए अच्छी लाइब्रेरी
- 26. क्या सी # के लिए एक प्रशंसक कंसोल लाइब्रेरी है?
- 27. क्या सी # के लिए एक धाराप्रवाह ईमेल लाइब्रेरी है?
- 28. आईफोन गेम के लिए सी में सबसे तेज़ वेक्टर/मैट्रिक्स गणित लाइब्रेरी क्या है?
- 29. जावा में एक समोच्च साजिश बनाने के लिए एक अच्छी (मुफ्त) लाइब्रेरी क्या है?
- 30. नेट के लिए एक अच्छी साजिश पुस्तकालय क्या है?
LAPACK + BLAS (यदि नहीं यह तेजी से नहीं है) सबसे बातें –