2011-09-22 20 views
7

मैं किसी ऐसे व्यक्ति के साथ काम कर रहा हूं जिसके पास कुछ MATLAB कोड है जिसे वे आगे बढ़ाना चाहते हैं। वे वर्तमान में इस कोड को सीपीयू में चलाने के लिए CUDA में बदलने की कोशिश कर रहे हैं। मुझे लगता है कि इसे गति देने के लिए MATLAB के समांतर कंप्यूटिंग टूलबॉक्स का उपयोग करना तेज़ होगा, और इसे क्लस्टर पर चलाएं जिसमें MATLAB के वितरित कंप्यूटिंग टूलबॉक्स हैं, जिससे मुझे कई अलग-अलग कार्यकर्ता नोड्स में इसे चलाने की अनुमति मिलती है। अब, समांतर कंप्यूटिंग टूलबॉक्स के हिस्से के रूप में, आप things like GPUArray का उपयोग कर सकते हैं। हालांकि, मैं उलझन में हूं कि यह कैसे काम करेगा। एक दूसरे के साथ संगत parfor (समानांतर) और gpuarray (जीपीयू प्रोग्रामिंग) जैसी चीजों का उपयोग कर रहे हैं? क्या मैं दोनों का उपयोग कर सकता हूँ? क्या कुछ कार्यकर्ता नोड्स (समांतरता) में विभाजित किया जा सकता है जबकि प्रत्येक कार्यकर्ता पर जो भी GPU उपलब्ध है, उसका उपयोग भी कर सकते हैं?MATLAB समांतर कंप्यूटिंग टूलबॉक्स - पैरालाइजेशन बनाम GPU?

वे सोचते हैं कि यह आपके सभी मैटलैब कोड को कई GPUs के साथ मशीन पर चलाने के लिए कूडा कोड में बदलने के लिए लगने वाला समय है ... लेकिन मुझे लगता है कि सही दृष्टिकोण पहले से निर्मित सुविधाओं का उपयोग करना होगा MATLAB।

कोई भी मदद, सलाह, दिशा वास्तव में सराहना की जाएगी!

धन्यवाद!

+0

आप gpuArrays के बजाय जैकेट की कोशिश करने पर विचार कर सकते हैं।मैंने इन कारणों से gpuArrays के प्रदर्शन से खुश किसी के बारे में नहीं सुना है: http://accelereyes.com/compare – arrayfire

उत्तर

8

जब आप पैराफोर्स का उपयोग करते हैं, तो आप अपने कार्यों को लूप के लिए प्रभावी ढंग से विभाजित कर रहे हैं, एक कार्य प्रति लूप पुनरावृत्ति के साथ, और उन कार्यों को विभाजित करने के लिए कई श्रमिकों द्वारा समानांतर में गणना की जाती है जहां प्रत्येक कार्यकर्ता को MATLAB सत्र के रूप में सोचा जा सकता है एक इंटरैक्टिव जीयूआई के बिना। क्लस्टर के प्रत्येक नोड पर निर्दिष्ट संख्या में श्रमिक चलाने के लिए आप अपने क्लस्टर को कॉन्फ़िगर करते हैं (आमतौर पर, आप उस नोड पर उपलब्ध प्रोसेसर कोर की संख्या के बराबर कई श्रमिकों को चलाने का चयन करेंगे)।

दूसरी ओर, gpuarray MATLAB को इंगित करता है कि आप GPU द्वारा प्रसंस्करण के लिए एक मैट्रिक्स उपलब्ध करना चाहते हैं। हुड के नीचे, MATLAB डेटा को मुख्य मेमोरी से ग्राफिक्स बोर्ड की आंतरिक मेमोरी में मार्शल कर रहा है। कुछ MATLAB फ़ंक्शन (दस्तावेज़ीकरण में उनकी एक सूची है) gpuarrays पर काम कर सकती है और गणना GPU पर होती है।

दो तकनीकों के बीच महत्वपूर्ण अंतर यह है कि क्लस्टर के नोड्स के सीपीयू पर मुख्य स्मृति तक सीधे पहुंच के साथ पैराफोर्स कंप्यूटेशंस होते हैं। सीपीयू कोर में आमतौर पर उच्च घड़ी की दर होती है, लेकिन आमतौर पर जीपीयू कोर के मुकाबले सीपीयू क्लस्टर में उनमें से कम होता है। व्यक्तिगत रूप से, जीपीयू कोर एक सामान्य सीपीयू कोर की तुलना में धीमे होते हैं और उनके उपयोग के लिए आवश्यक है कि डेटा को मुख्य मेमोरी से वीडियो मेमोरी में स्थानांतरित किया जाए और फिर से वापस किया जाए, लेकिन उनमें से कई क्लस्टर में हैं। जहां तक ​​मुझे पता है, हाइब्रिड दृष्टिकोण संभव होने चाहिए, जिसमें आपके पास पीसी का समूह होता है और प्रत्येक पीसी में एक या अधिक एनवीडिया टेस्ला बोर्ड होते हैं और आप दोनों पारिवारिक लूप और gpuarrays का उपयोग करते हैं। हालांकि, मुझे अभी तक कोशिश करने का मौका नहीं मिला है।

-2

यदि आप इसे CUDA में लिखते हैं तो चिप-स्तर पर समानांतर में चलाने के लिए यह सुनिश्चित किया जाता है कि गैर-समांतर वास्तुकला के लिए MATLAB के सर्वोत्तम अनुमान के साथ चलने और समानांतर में चलाने के लिए आपके सर्वोत्तम प्रयास के साथ चलने की गारंटी है।

फ़िल्टर किए गए पानी को खरीदने के विरुद्ध ताजा पहाड़ के पानी के रन-ऑफ पीने की तरह। शुद्धवादी समाधान के साथ जाओ।

3

यदि आप मुख्य रूप से सिमुलेशन में रुचि रखते हैं, तो GPU प्रसंस्करण सही विकल्प है। हालांकि, यदि आप (बड़े) डेटा का विश्लेषण करना चाहते हैं, तो पैरालाइजेशन के साथ जाएं। इसका कारण यह है कि यदि GPU प्रसंस्करण सीपीयू प्रसंस्करण की तुलना में तेज़ है तो आपको डेटा को आगे और पीछे कॉपी करने की आवश्यकता नहीं है। सिमुलेशन के मामले में, आप GPU पर अधिकांश डेटा जेनरेट कर सकते हैं और केवल परिणाम को कॉपी करने की आवश्यकता है। यदि आप GPU पर बड़े डेटा के साथ काम करने का प्रयास करते हैं तो आप अक्सर स्मृति समस्याओं से बाहर निकल जाएंगे। यदि आपके कंप्यूटर सीपीयू में बड़ी डेटा संरचनाएं और 2 कोर से अधिक हैं तो पैरालाइजेशन बहुत अच्छा है।

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