2013-08-24 7 views
8

के साथ प्रारंभ करना मैंने हाल ही में जीपी-जीपीयू (सामान्य उद्देश्य ग्राफिक्स प्रोसेसिंग यूनिट) की शक्ति की खोज की है और 'भारी' वैज्ञानिक और गणित की गणना करने के लिए इसका लाभ उठाना चाहते हैं (अन्यथा बड़े CPU क्लस्टर की आवश्यकता होती है) एकल मशीनPyOpenCL

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

अब, मुझे यह जानने की जरूरत है कि इसे आगे बढ़ाने के लिए PyOpenCL के साथ कैसे संचालित करें! तो यहां सवाल आता है:

मैं PyOpenCL के साथ कैसे शुरू कर सकता हूं? पूर्वापेक्षाएँ क्या हैं? क्या मुझे वास्तव में पाइथन और/या ओपनसीएल में अनुभव करने की आवश्यकता है?

मेरी पृष्ठभूमि फोर्टन में है और वास्तव में मुझे एक लंबे किले कोड को पाइथन (या पायओपेनक्ल) में अनुवाद और समांतर करने की आवश्यकता है जो मुख्य रूप से पीडीई को हल करने और मैट्रिस को विकृत करने के साथ संबंधित है।

मैंने दो प्रासंगिक वेबसाइटें http://enja.org/2011/02/22/adventures-in-pyopencl-part-1-getting-started-with-python/ और http://documen.tician.de/pyopencl/ पढ़ी हैं लेकिन वे नए शौक (यानी डमी) के लिए वास्तव में सहायक नहीं हैं।

मुझे नहीं पता कि किसके साथ शुरुआत करना है। मैं मैदान पर एक विशेषज्ञ बनने की इच्छा नहीं करता हूं, यह जानने के लिए कि कैसे पाइपोपेल पर सरल गणित और रैखिक बीजगणित को समानांतर किया जा सकता है।

कोई सलाह और सहायता का बहुत स्वागत है!

+0

मैं पाइपोपेल के लिए एक सभ्य दस्तावेज़ खोजने में भी गहरी रूचि रखता हूं। यदि आप मुझे अद्यतित रख सकते हैं तो मैं आभारी रहूंगा। धन्यवाद –

उत्तर

8

ऐसा लगता है कि आप PyOpenCL सीखने के लिए सबसे तेज़ और सबसे प्रभावी पथ की तलाश में हैं। शुरुआत में आपको OpenCL (कठिन भाग) जानने की आवश्यकता नहीं है, लेकिन जब आप शुरू करते हैं तो पाइथन को जानना उपयोगी होगा। http://www.codecademy.com/tracks/python

फिर, Udacity समानांतर प्रोग्रामिंग कोर्स एक महान जगह GPGPU (भले ही पाठ्यक्रम CUDA में पढ़ाया जा रहा है) के साथ शुरू करने के लिए है:

जल्दी से अजगर वाक्यविन्यास सीखने के लिए, मैं Codecademy के अजगर ट्रैक सलाह देते हैं। https://www.udacity.com/course/cs344 यह कोर्स आपको मौलिक जीपीजीपीयू अवधारणाओं को बहुत जल्दी सिखाएगा। भाग लेने के लिए आपको एनवीआईडीआईए जीपीयू की आवश्यकता नहीं होगी, क्योंकि सभी कोर्स आकलन ऑनलाइन किए जाते हैं। https://github.com/inducer/pyopencl/tree/master/examples

+0

आपकी सलाह के लिए धन्यवाद। मुझे लगता है कि यह चर्चा कई साल पुरानी है। इस बीच कुछ बेहतर था? –

+0

@ स्टीफन मुझे संदेह है कि यह सलाह अद्यतित है क्योंकि ओपनसीएल और समांतर प्रोग्रामिंग विशेष रूप से तेज़ी से चलती नहीं हैं। ओपनसीएल भौतिक हार्डवेयर पर सी चलने वाले निर्देशों का एक सबसेट है - जो वेब ब्राउजर पर जावास्क्रिप्ट चलने जैसी चीज़ों की तुलना में बहुत कम तरल पदार्थ की स्थिति बनाता है। – benshope

5

जीपीजीपीयू कंप्यूटिंग जैसे जावा, सी/सी ++, पायथन के लिए गोद लेने की भाषा के बावजूद, मैं आपको सबसे पहले जीपीजीपीयू कंप्यूटिंग और ओपनसीएल की मूल बातें शुरू करने की सलाह दूंगा।

आप निम्न संसाधनों का उपयोग कर सकते हैं सभी सी/सी ++ उन्मुख हैं, लेकिन आपको इसे शुरू करने के लिए ओपनसीएल, जीपीजीपीयू हार्डवेयर के बारे में पर्याप्त जानकारी देना चाहिए।

  1. AMD OpenCL University Tool kit

  2. Hetergeneous Computing with OpenCL Book 2nd Edition

  3. NVIDIA OpenCL pages is another Excellent resorce

  4. Streamcomputing.eu has nice openCL starter articles.

  5. Intel OpenCL SDK tutorial

PyOpenCL विशिष्ट

  1. OpenCL in Action: How to Accelerate Graphics and Computation PyOpenCL
  2. OpenCL Programming Guide पर एक अध्याय

दोनों किताबों OpenCL 1.1 कार्यान्वयन हैं, लेकिन इसके लिए अच्छा प्रारंभिक बिंदु होना चाहिए अध्याय PyOpenCL है है आप।

1

कोई GPU प्रोग्रामिंग करने के लिए नया जैसा कि मैंने प्रासंगिक लेख आप हालांकि मैंने पाया काफी सीधा उल्लेख पाया:

के बाद (या के दौरान) Udacity बेशक, मैं सुझाव है कि आप पढ़ा है, चलाने के लिए, और अनुकूलित PyOpenCL कोड उदाहरण नमूना कोड कमांड लाइन से पूरी तरह से भाग गया लेकिन एनाकोंडा के साथ ग्रहण में नहीं। मुझे लगता है कि ऐसा इसलिए हो सकता है क्योंकि एनाकोंडा से ग्रहण pyopencl कमांड लाइन संस्करण से अलग है, और मैंने अभी तक यह हल करने के लिए काम नहीं किया है।

पाइथन सीखने के लिए मुफ्त ईबुक सहित बड़ी संख्या में संसाधन ऑनलाइन हैं।

https://wiki.python.org/moin/BeginnersGuide http://codecondo.com/10-ways-to-learn-python/

अच्छा शुरुआत होना चाहिए। यदि आप ग्रहण का उपयोग करते हैं तो आपको pydev इंस्टॉल करना चाहिए। किसी भी मामले में एनाकोंडा https://docs.continuum.io/anaconda/install इंस्टॉल करें क्योंकि यह आपको बहुत परेशानी बचाएगा।

मुझे पाइथन में आवश्यक प्रवीणता के स्तर तक पहुंचने के लिए एक सप्ताह या उससे अधिक का अनुमान लगाया जाता है जब तक कि आप कुछ साधारण मिनी परियोजनाओं को पिक्ज करते हैं। आप यह भी पा सकते हैं कि numpy और scipy और संभवतः ipython नोटबुक के साथ आपको GPU प्रोग्रामिंग

इन लिंक से आपको GPU प्रोग्रामिंग से बचने में मदद मिल सकती है या कम से कम इसे सीखने में देरी हो सकती है। जागरूक कोर के बीच स्विच करने के thr लागत का मतलब है कि आप कम से केवल एक बात जानने के लिए OT प्रत्येक कोर

http://blog.dominodatalab.com/simple-parallelization/ https://pythonhosted.org/joblib/parallel.html

आम तौर पर मैं, अगर कम मजेदार है, यह और अधिक कुशल लगाने के लिए काम का एक singificant राशि आवंटित राशि बनें एक वक़्त।

मुझे उम्मीद है कि इससे मदद मिलती है।