2009-09-17 8 views
16

मेरे पास सी # में लिखा गया एक प्रोजेक्ट है जहां मुझे मैट्रिस पर विभिन्न रैखिक बीजगणितीय परिचालन करने की आवश्यकता है (जैसे LU-factorization)।.net (सी #) के लिए एक अच्छा मुक्त (मुक्त स्रोत) BLAS/LAPACK लाइब्रेरी क्या है?

चूंकि कार्यक्रम मुख्य रूप से एक सिद्धांत की पुष्टि करने के लिए बनाया गया प्रोटोटाइप है, इसलिए सी # कार्यान्वयन पर्याप्त होगा (संभावित रूप से तेज सी ++ एक की तुलना में), लेकिन मुझे अभी भी कुछ कोडिंग बचाने के लिए एक अच्छा ब्लैस या LAPACK लाइब्रेरी पसंद है।

लंबी कहानी संक्षेप में, किसी को भी .net साथ प्रयोग के लिए एक नि: शुल्क/खुला स्रोत BLAS या LAPACK पुस्तकालय की सिफारिश कर सकते हैं?

सादर Egil।

अद्यतन: मिले Math.NET Numerics आज, दिलचस्प लग रहा है, किसी को भी उस के साथ किसी भी अनुभव है?

उत्तर

9

एएमडी का एसीएमएल मुफ्त डाउनलोड है, लेकिन यह केवल बाइनरी है, ओपन सोर्स नहीं है, और देशी कोड, .NET नहीं।

प्रदर्शन आम तौर पर Netlib.org कोड से बेहतर है, और आम तौर पर मोटे तौर पर इंटेल की MKL रूप में एक ही है - जो मुक्त IIRC नहीं है।

डाउनलोड एक नमूना यह दर्शाता है कि कैसे सी # करने के लिए इसे बाध्य करने के लिए भी शामिल है। सी # से किसी अन्य सी या सी ++ लाइब्रेरी को कॉल करने से कोई अलग नहीं है।

लाइब्रेरी को लागू करता है BLAS, LAPACK, FFTs, और RNGs।

http://developer.amd.com/cpu/Libraries/acml/downloads/pages/default.aspx

संपादित करें टिप्पणी पर प्रतिक्रिया देने:

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

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

छोटे matrixes के लिए, प्रदर्शन आम तौर पर एक नहींं की देखभाल, के बाद से किसी भी आधुनिक cpu बस कुछ ही मिलीसेकेंड में एक छोटे से matix हल कर सकते हैं, यहां तक ​​कि सबसे सरल कोड का उपयोग कर रहा है। उस मामले में, आप केवल एक पुस्तकालय का उपयोग कर रहे लेखन और डिबगिंग कोड है कि सैकड़ों बार पहले से ही लिखा गया है से बचने के लिए।

+0

तो अगर मैं एक इंटेल सीपीयू, AMDS ACML, इंटेल MLK के रूप में के रूप में अच्छा प्रदर्शन नहीं करेगा, लेकिन अभी भी जिस तरह से एक भोली सी # कार्यान्वयन की तुलना में बेहतर लक्षित कर रहा हूं? –

+0

Ummm, अपने संपादित काफी [यहां] के विपरीत उत्तर (http://stackoverflow.com/questions/1644905/intel-mkl-vs-amd-math-core-library)।वे अच्छे [स्रोत] (http://www.advancedclustering.com/company-blog/high-performance-linpack-on-xeon-5500-v-opteron-2400.html) का भी उल्लेख करते हैं ... सुनिश्चित नहीं है संपादित सही जवाब है ... लेकिन आप सही हैं, कम से कम एसीएमएल मुफ्त है ... –

2

लुट्ज़ रोडर एक अच्छा खुला स्रोत बंदरगाह Mapack.Net

विभिन्न परियोजनाओं के लिए अतीत में इस्तेमाल किया गया है और यह

5

के साथ काम करने के लिए गणित पुस्तकालय DotNumerics मुक्त/ओपन सोर्स प्रोजेक्ट सी # में लिखा है eary पाया जाता है और शामिल सी # करने के लिए LAPACK, ब्लास, और Eispack का अनुवाद।

संबंधित मुद्दे