2013-03-30 6 views
14

के लिए सिम गणित पुस्तकालय एसएसई और एवीएक्स के लिए मैं सिम गणित पुस्तकालयों (अधिमानतः खुले स्रोत) की तलाश में हूं। मेरा मतलब है उदाहरण के लिए यदि मेरे पास 8 फ्लोट वैल्यू के साथ एवीएक्स रजिस्टर वी है तो मुझे पाप (v) एक ही समय में सभी आठ मूल्यों के पाप को वापस करने के लिए चाहिए।एसएसई और एवीएक्स

एएमडी में एक प्रोपेरिटरी लाइब्रेरी है, लिबएम http://developer.amd.com/tools/cpu-development/libm/ जिसमें कुछ सिम गणित कार्य हैं लेकिन लिबएम केवल एवीएक्स का उपयोग करता है अगर यह एफएमए 4 का पता लगाता है जो इंटेल सीपीयू के पास नहीं है। इसके अलावा मुझे यकीन नहीं है कि यह पूरी तरह से AVX का उपयोग करता है क्योंकि सभी फ़ंक्शन नाम एस 4 (डी 2) में समाप्त होते हैं और एस 8 (डी 4) नहीं होते हैं। यह इंटेल सीपीयू पर मानक गणित पुस्तकालयों की तुलना में बेहतर प्रदर्शन प्रदान करता है लेकिन यह बेहतर नहीं है।

इंटेल के पास इसके सी ++ कंपाइलर के हिस्से के रूप में एसवीएमएल है लेकिन विंडोज़ पर कंपाइलर सूट बहुत महंगा है। इसके अतिरिक्त, इंटेल गैर-इंटेल CPU पर लाइब्रेरी को क्रिप्ट करता है।

मैं निम्नलिखित AVX पुस्तकालय, http://software-lisc.fbk.eu/avx_mathfun/, जो कुछ गणित कार्यों (समा, लॉग इन, sin, cos, और sincos) का समर्थन करता है पाया। यह मेरे लिए बहुत तेज परिणाम देता है, एसवीएमएल से तेज़, लेकिन मैंने सटीकता की जांच नहीं की है। यह केवल एकल फ़्लोटिंग पॉइंट पर काम करता है और विजुअल स्टूडियो में काम नहीं करता है (हालांकि इसे ठीक करना आसान होगा)। यह एक और एसएसई पुस्तकालय पर आधारित है।

क्या किसी के पास कोई अन्य सुझाव है?

संपादित करें: मैं एक बहुत थ्रेड कि इस विषय Vectorized Trig functions in C?

+1

यद्यपि यह एक मालिकाना समाधान है, इंटेल के मठ कर्नेल लाइब्रेरी एक बहुत व्यापक विकल्प है। हालांकि, यह केवल इंटेल CPUs पर सबसे अच्छा प्रदर्शन करता है। मुझे विश्वास है कि गैर-इंटेल प्रोसेसर पर चलते समय अवांछित कोड पथ को हटाने के लिए अतीत में जाना जाता है। मुझे यकीन नहीं है कि यह समकालीन संस्करणों पर मामला है, हालांकि। –

+0

यहां आप लॉगरिदम प्राप्त कर सकते हैं: https://stackoverflow.com/a/45898937/1915854 –

+0

एग्नेर कोहरे [वेक्टर क्लास लाइब्रेरी] (http://agner.org/optimize/#vectorclass) जीपीएल है। यह इंटेल के इंट्रिनिक्स के लिए मैन्युअल वेक्टरनाइज़ेशन को अधिक सुविधाजनक बनाने के लिए एक रैपर का अधिक है, लेकिन कुछ गणित-लाइब्रेरी फ़ंक्शंस जैसे एक्सप और लॉग हैं। –

उत्तर

7

मैं दो अन्य परियोजनाओं (आइंस्टीन टूलकिट, और pocl http://pocl.sourceforge.net/) के लिए सामान्य पुस्तकालयों के रूप में Vecmathlib https://bitbucket.org/eschnett/vecmathlib/ को लागू किया है पर कई प्रश्नों का उत्तर मिल गया। Vecmathlib खुला स्रोत है, और सी ++ में लिखा गया है।

+1

ऐसा लगता है कि मैं वास्तव में किस तरह का पैकेज ढूंढ रहा हूं। मैं इसे आज़मा दूंगा और आपको वापस ले जाऊंगा। –

+1

वह लाइब्रेरी बहुत ही आशाजनक दिखती है, लेकिन मैं कुछ समस्याओं में भाग गया: ए) बिटबकेट पर संस्करण #endif गायब होने के कारण संकलित नहीं होता है b) बेंचमार्क डेटा बहुत निराशाजनक दिखता है, आमतौर पर वीएमएल परिमाण धीमा का क्रम है मेरे परीक्षण में - यहां विंडव्स पर MINGW। और लगता है कि एमएसवीसी के साथ संकलित नहीं कर सकते हैं – ibell

0

Gromacs सी ++ में लिखा गया एक अत्यधिक अनुकूलित आणविक गतिशीलता सॉफ्टवेयर पैकेज है जो सिमड का उपयोग करता है। जहां तक ​​मुझे पता है कि गणित सिम कार्यक्षमता को अभी तक एक अलग पुस्तकालय में विभाजित नहीं किया गया है, लेकिन मुझे लगता है कि कार्यान्वयन दूसरों के लिए उपयोगी हो सकता है।

https://github.com/gromacs/gromacs/blob/master/src/gromacs/simd/simd_math.h

http://manual.gromacs.org/documentation/2016.4/doxygen/html-lib/simd__math_8h.xhtml

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