2012-07-29 10 views
8

मैं वास्तविक समय 3 डी मॉडलिंग में एक आवेदन का अनुकूलन करने के लिए प्रयास कर रहा हूँ पर छोटे सममित सकारात्मक निश्चित Ax = b का समाधान। आवेदन का गणना भाग लगभग पूरी तरह से सीयूडीए में जीपीयू पर चलता है। आवेदन को एक छोटे (6x6) डबल परिशुद्धता सममित सकारात्मक निश्चित रैखिक प्रणाली एक्स = बी 500+ बार प्रति सेकंड के समाधान की आवश्यकता होती है। वर्तमान में यह चॉल्सकी का उपयोग कर एक कुशल सीपीयू आधारित रैखिक बीजगणित पुस्तकालय के साथ किया जा रहा है, लेकिन सीपीयू - जीपीयू से डेटा की प्रतिलिपि बनाने और प्रति सेकंड सैकड़ों बार जीपीयू की आवश्यकता होती है और हर बार कर्नेल का ओवरहेड लॉन्च होता है।GPU केवल

कैसे क्या मैं पूरी तरह से सीपीयू पर डेटा लेने के बिना जीपीयू पर रैखिक प्रणाली के समाधान की गणना कर सकता हूं? मैंने मैग्मा लाइब्रेरी के बारे में कुछ पढ़ा है लेकिन ऐसा लगता है कि जीपीयू केवल एल्गोरिदम के बजाय हाइब्रिड एल्गोरिदम का उपयोग करना प्रतीत होता है।

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

+0

एक 6x6 रैखिक प्रणाली इतनी छोटी है कि आप स्वयं को सीयूडीए कोड के अंदर समीकरण लिख सकते हैं ... जाहिर है कि इस तरह की एक छोटी प्रणाली के लिए सीयूडीए की समांतर प्रकृति से कोई लाभ प्राप्त करना मुश्किल होगा, लेकिन इससे छुटकारा पाना जीपीयू-सीपीयू संचार वास्तव में एक बड़ा लाभ देगा। क्या यह संभव होगा, कि आप एक अलग तरीके से समानांतर हो? सिस्टम को एक जीपीयू कोर पर हल करें और फिर एकाधिक कोर एंकर 500+ समाधान/एस का उपयोग करें। यह सबसे अच्छा होगा, जब तक कि आपको अगले सिस्टम पर परिणाम शुरू करने के लिए पिछले सिस्टम से नतीजों की आवश्यकता न हो। – Eiver

+1

@Eiver पैसे पर है। क्या आप उन 500 को समानांतर में कर सकते हैं या वे एक-दूसरे पर निर्भर हैं? 6x6 के लिए इस दृष्टिकोण http://en.wikipedia.org/wiki/Cholesky_decomposition#Block_variant हाथ-कोड योग्य दिखता है ... –

उत्तर

3

NVIDIA पंजीकृत डेवलपर वेबसाइट के लिए एक batched Ax = b solver पिछले गिरावट के लिए कोड पोस्ट किया। इस कोड को सामान्य मैट्रिक्स के लिए काम करता है, और अच्छी तरह से आप पूरी मैट्रिक्स के लिए सममित मैट्रिक्स विस्तार कर सकते हैं प्रदान की अपनी आवश्यकताओं के लिए पर्याप्त है (जो एक 6x6 के लिए एक मुद्दा नहीं होना चाहिए?) काम करना चाहिए। कोड पिवट है, जो सकारात्मक निश्चित मैट्रिक्स के लिए अनावश्यक है प्रदर्शन के रूप में, यह आपके मामले के लिए इष्टतम नहीं है, लेकिन आप के रूप में कोड एक BSD लाइसेंस के तहत है अपने प्रयोजनों के लिए संशोधित करने में सक्षम हो सकता है।

NVIDIA के मानक डेवलपर वेबसाइट पल में कुछ समस्या आ रही है।

(2) यदि आप किसी मौजूदा NVdeveloper खाता है, तो (उदाहरण के लिए के माध्यम से partners.nvidia.com) पर क्लिक करें

(1) जाओ http://www.nvidia.com/content/cuda/cuda-toolkit.html करने के लिए: यहाँ कैसे आप इस समय batched solver कोड डाउनलोड कर सकते हैं है स्क्रीन के दाहिने आधे हिस्से पर हरा "एनवीडी डेवलपर में लॉग इन करें" लिंक। अन्यथा एक नए खाते के लिए आवेदन करने के लिए "nvdeveloper में शामिल हों" पर क्लिक करें; नए खातों के लिए अनुरोध आमतौर पर एक व्यावसायिक दिन के भीतर अनुमोदित होते हैं।

(3) अपना ईमेल पता और पासवर्ड के साथ प्रॉम्प्ट पर लॉग इन करें

(4) शीर्षक "नवीनतम डाउनलोड" दाहिने हाथ की ओर एक वर्ग नहीं है। शीर्ष से पांचवां आइटम "बैच सॉल्वर" है। उस पर क्लिक करें और यह आपको कोड के लिए डाउनलोड पेज पर लाएगा।

(5) "डाउनलोड" लिंक पर क्लिक करें, फिर लाइसेंस शर्तों को स्वीकार करने के लिए "स्वीकार करें" पर क्लिक करें। आपका डाउनलोड शुरू होना चाहिए।

+0

बैच किए गए सॉल्वर पर प्रारंभिक रूप से आपको बहुत बहुत धन्यवाद, ऐसा लगता है कि यह वही करेगा जो मैं करूँगा खोज रहे हैं –

+0

मैंने अभी रैखिक बीजगणित और जीपीयू के बारे में एक और सवाल पूछा है जिसके बारे में आप कुछ जान सकते हैं! http://stackoverflow.com/questions/11778981/code-library-to-calculate-determinant-of-a-small-6x6-matrix-solely-on-gpu –

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