2009-06-11 14 views
20

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

अब तक केवल एक ही मैंने पाया है: http://simdx86.sourceforge.net/ लेकिन जैसा कि पहले ही पेज का कहना है यह दृश्य स्टूडियो पर संकलन नहीं है।

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

धन्यवाद।

+0

मैंने एक बार इस विषय पर किसी के मास्टर की थीसिस देखी। मेरे जीवन के लिए यह नहीं पता कि कौन सी शर्तें इसे खोज में लाएंगी। – dmckee

+8

[libsimdpp] (https://github.com/p12tic/libsimdpp) लाइब्रेरी देखें - यह एसएसई 2-एसएसई 4.1, एवीएक्स, एवीएक्स 2, नियॉन, एफएमए 3/4 और एक्सओपी इंट्रिनिक्स के लिए एक आम इंटरफेस प्रदान करता है।एक बोनस के रूप में, सुविधाजनक गतिशील प्रेषण तंत्र प्रदान किया जाता है: एक ही स्रोत कोड को कई संकलक विकल्पों (नामस्थान ओडीआर का ख्याल रखना) के साथ कई बार संकलित किया जा सकता है, जो एक ही निष्पादन योग्य में जोड़ा जाता है और लाइब्रेरी स्वचालित रूप से लक्ष्य प्रोसेसर के लिए सर्वोत्तम कार्यान्वयन का चयन करेगी । (अस्वीकरण: मैं लेखक हूं) – user12

+0

यह प्रश्न http://softwarerecs.stackexchange.com – Eonil

उत्तर

8

जब से तुम मैट्रिक्स और वैक्टर, ATLAS, Intel's MKL, PLASMA पर उच्च स्तरीय संचालन का उल्लेख है, और FLAME ब्याज की हो सकती है।

कुछ सी ++ मैट्रिक्स गणित पुस्तकालयों में बूस्ट, आर्मडिलो, ईजिन, आईटी ++, और न्यूमैट से यूबीएलएएस शामिल हैं। POOMA लाइब्रेरी में शायद इनमें से कुछ चीजें भी शामिल हैं। This question एमटीएल को भी संदर्भित करता है।

यदि आप निचले स्तर के पोर्टेबिलिटी प्राइमेटिव्स की तलाश में हैं, तो मेरे एक सहयोगी ने एसएसई 2, अल्टीवैक, वीएसएक्स, लैराबी, और सेल एसपीई वेक्टर ऑपरेशंस के आसपास एक रैपर विकसित किया है। यह हमारे source repository में पाया जा सकता है, लेकिन यदि आप इसे अपने काम के हिस्से के रूप में वितरित करना चाहते हैं तो इसका लाइसेंसिंग (अकादमिक) उचित नहीं हो सकता है। यह अभी भी लक्षित आवश्यकताओं की सीमा को कवर करने के लिए महत्वपूर्ण विकास के तहत है, जिस पर इसे लक्षित किया गया है।

2

यदि आप असेंबलर के साथ नीचे उतरने और गंदे होने पर ध्यान नहीं देते हैं तो आप हमेशा सभी सिम निर्देशों के लिए आंतरिक कार्यों का उपयोग कर सकते हैं। वे प्रोसेसर विशिष्ट होंगे, यानी एसएसई 4 इंट्रिनिक्स केवल एसएसई 4 सक्षम सीपीयू पर चलेंगे और यह सुनिश्चित करने के लिए कि एक्सटेंशन वहां हैं, यह आपके ऊपर निर्भर है।

सिम लागू करने के बारे में एक अच्छा लेख here है।

हालांकि, आप एक कंपाइलर का उपयोग कर सकते हैं जो किसी बाहरी पुस्तकालय के बिना आपके लिए सिम कोड उत्पन्न करता है। VectorC अच्छा होना चाहिए हालांकि मैंने इसे कभी भी व्यक्तिगत रूप से उपयोग नहीं किया है। जहां तक ​​मुझे पता है, किसी भी विशेष पुस्तकालयों की आवश्यकता नहीं है, यह केवल स्रोत कोड के उन बिट्स को स्पॉट करता है जो सिमड से लाभ उठा सकते हैं और आपके द्वारा निर्दिष्ट एसएसई के स्तर तक संकलित हो सकते हैं।

+0

पर माइग्रेट करना बेहतर होगा, धन्यवाद, प्रोसेसर विशिष्ट असेंबली से दूर होना मेरा मुख्य लक्ष्य है। मैं इस बारे में चिंता नहीं करना चाहता हूं कि सीपीयू एसएसई या एसएसई 2 का समर्थन करता है और कुछ मामलों में कोड के 2 अलग-अलग संस्करण लिखता है। मैं उम्मीद कर रहा था कि किसी ने पहले से ही लाइब्रेरी में ऐसा किया है)। कंपाइलर विशिष्ट एक्सटेंशन इत्यादि के लिए समान – Budric

3

liboil या संबंधित ORC का प्रयास करें। खासकर ओआरसी दिलचस्प है; यह एक उच्च स्तरीय असेंबली भाषा लागू करता है जिसे आर्किटेक्चर विशिष्ट कोड में संकलित किया जाता है। एक साधारण रैपर लाइब्रेरी से बहुत परिष्कृत, बहुत अधिक परिष्कृत।

10

Eigen एक MPL2 -licensed हेडर केवल सी ++ पुस्तकालय है कि वेक्टर/मैट्रिक्स गणित कि SSE, नियॉन, और Altivec के लिए अनुकूलित है है। उनके एड-ऑन मॉड्यूल में उनके पास अधिक परिष्कृत गणित संचालन हैं।

+2

ईजिन को एमपीएल 2 से संबंधित किया गया था http://eigen.tuxfamily.org/index.php?title=News:Relicensed_to_MPL2, जो कि अच्छा कदम है। –

+0

धन्यवाद। मैंने इसे प्रतिबिंबित करने के लिए अपना उत्तर अपडेट किया। –

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