2012-08-12 7 views
5

ढांचे के साथ rootbeer जावा के लिए जीपीयू प्रोग्रामिंग संभव है।जीपीयू में कौन सा जावा कोड स्थानांतरित किया जा सकता है?

रूटबीयर के लिए कौन सा जावा कोड इस्तेमाल किया जाना चाहिए और जावा कोड स्वयं में कौन सा कोड बेहतर चलाना चाहिए?

या अन्य: कौन सा कोड अधिक ओवरहेड उत्पन्न करता है और इसका कोई मतलब नहीं है?

+0

क्या आप पूछ रहे हैं कि जीपीयू पर आम तौर पर किस प्रकार के एल्गोरिदम निष्पादित किए जाते हैं? – Bart

+0

मुझे नहीं पता कि यह आपके लिए किसी भी तरह से प्रासंगिक है, लेकिन ब्रूट फ़ॉरवर्ड पासवर्ड (क्रिप्टोग्राफी) एक ऐसा क्षेत्र है जहां इस प्रकार की चीज़ के लिए आवश्यक प्रकार के संचालन के लिए जीपीयू की ट्यूनिंग का समय लाभ प्राप्त होता है। –

+2

मेरा प्रश्न रूटबीयर के लिए विशिष्ट है, न कि सामान्य जीपीयू प्रोग्रामिंग के लिए। – Horcrux7

उत्तर

3

यह कहना मूर्खतापूर्ण बात है, लेकिन स्पष्ट उत्तर "उन समस्याओं के लिए होगा जहां एक जीपीयू एक सीपीयू से बेहतर है"। आधुनिक जीपीयू के पास हजारों कोर से अधिक है, लेकिन अपेक्षाकृत कम स्मृति है, इसलिए सामान्यतः, इसका मतलब है कि lends itself well to parallelization और इसमें बहुत अधिक स्मृति नहीं है।

जी। बैच ने टिप्पणियों में क्रिप्टो सामान के खिलाफ क्रूर बल के हमलों का उल्लेख किया, यह एक अच्छा उदाहरण है। वैज्ञानिक सिमुलेशन एक और अच्छा उदाहरण हैं, वास्तव में, कुछ साल पहले कुछ शोध संस्थान (विशेष रूप से नासा) प्लेस्टेशन 3 के चल रहे सिमुलेशन के क्लस्टर थे। तकनीक के जीपीजीपीयू कंप्यूटिंग lists several applications पर विकिपीडिया का आलेख।

1

वर्तमान जीपीयू की सीमाओं में से एक यह है कि यह प्रत्येक कोर को एक सरल विधि लोड कर सकता है और इसे एक साथ निष्पादित कर सकता है। सामान्य उद्देश्य सीपीयू अधिक कोड और डेटा लोड कर सकते हैं और उन्हें स्वतंत्र रूप से कर सकते हैं।

वेक्टर स्टाइल कोड है जो एक GPU पर तेज़ हो सकता है और मैं इसे एक दिन एक विकल्प देख सकता हूं, लेकिन अधिकांश कोड (वॉल्यूम द्वारा प्रोसेसिंग द्वारा नहीं किया जाता है) सीपीयू पर होगा।

3

अन्य उत्तरों के अतिरिक्त: कुछ जावा-विशेषताएं भी हैं जो रूटबीयर जेट द्वारा अनुवाद करने के लिए समर्थित नहीं हैं।

  1. देशी तरीकों
  2. प्रतिबिंब
  3. गतिशील विधि मंगलाचरण
  4. सो, जबकि एक की निगरानी के अंदर।
  5. कचरा संग्रहण (!)

आप इस्तेमाल किया इन सुविधाओं के साथ कोड से बचना चाहिए।

रूटबीयर के लिए अद्यतन कचरा संग्रह और अन्य गायब जावा सुविधाओं को प्रदान करने के लिए उत्पादन में हैं।

+0

पहले 4 अंक स्पष्ट हैं। अगर मैं जीसी के साथ समस्या को समझता हूं तो कोड में केवल स्थिर विधियों या सिंगलटन शामिल होना चाहिए। क्या यह सही है? ऑब्जेक्ट आवंटन अक्सर नहीं होना चाहिए क्योंकि वस्तुओं कचरा नहीं हो सकता है? – Horcrux7

+0

जीसी जोड़ा जाने के रास्ते पर है। जब तक यह समाप्त नहीं हो जाता है, आपको संदर्भों को 'शून्य' पर सेट करने और एक नया ऑब्जेक्ट बनाने के बजाय ऑब्जेक्ट्स रीसायकल करना चाहिए। या आप ऑब्जेक्ट्स की निरंतर या बढ़ती संख्या के साथ कोड का उपयोग करते हैं। – Simulant

+0

आप गतिशील स्मृति आवंटन का उपयोग कर सकते हैं, लेकिन कोई कचरा संग्रह नहीं है। तो यदि आप GPU पर स्मृति से बाहर हो जाते हैं, तो आउटऑफमेमरी एरर को CPU पर बुलबुला किया जाता है। – pcpratts

2

GPUs के साथ speedups प्राप्त करने के लिए, आप प्रति डेटा तत्व की बहुत गणना करना चाहते हैं क्योंकि डेटा स्थानांतरण इतना धीमा है। आप आमतौर पर कम से कम 1000 धागे के साथ GPU पर चल रहे लूप के लिए 2 या 3 घोंसला चाहते हैं।

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