मैं CUDA जानने के लिए शुरू कर रहा हूँ में पाई की गणना करने के लिए और मैं पाई का लंबा अंक की गणना के लिए एक अच्छा, परिचयात्मक परियोजना होगी लगता है।फास्ट एल्गोरिथ्म समानांतर
मैं पहले से ही सरल मोंटे कार्लो विधि है जो आसानी से parallelize करने योग्य है लागू किया है। मैं बस प्रत्येक थ्रेड बेतरतीब ढंग से, इकाई वर्ग पर अंक उत्पन्न इकाई वृत्त के भीतर कितने झूठ यह पता लगाने, और एक कमी आपरेशन का उपयोग कर परिणाम का हिसाब है।
लेकिन वह निश्चित रूप से लगातार की गणना के लिए सबसे तेजी से एल्गोरिथ्म नहीं है। इससे पहले, जब मैं एक एकल थ्रेड CPU पर इस अभ्यास किया था, मैं Machin-like formulae इस्तेमाल किया अब तक तेजी से अभिसरण के लिए गणना करने के लिए। रुचि रखने वालों के लिए, इसमें अभिव्यक्ति का मूल्यांकन करने के लिए आर्कटैंजेंट्स के योग और टेलर श्रृंखला का उपयोग करके पीआई को व्यक्त करना शामिल है।
इस तरह के एक सूत्र का एक उदाहरण:
दुर्भाग्य से, मैंने पाया कि GPU धागे के हजारों के लिए इस तकनीक parallelizing आसान नहीं है। समस्या यह है कि अधिकांश ऑपरेशन डेटा के लंबे वैक्टरों पर फ्लोटिंग पॉइंट ऑपरेशंस करने के विरोध में उच्च परिशुद्धता गणित कर रहे हैं।
तो मुझे आश्चर्य है, जीपीयू पर पीआई के मनमाने ढंग से लंबे अंकों की गणना करने का सबसे प्रभावी तरीका क्या है?
आप इस को देखा है: https://sites.google.com/a/nirmauni.ac.in/cudacodes/ongoing-projects/automatic-conversion-of-source-code-for-c-to -क्यूडा-सी/रूपांतरित-प्रोग्राम/गणना-मूल्य-के-पीआई –
मुझे नहीं लगता कि कोई मनमाने ढंग से सटीक गणना करता है। – tskuzzy
@ जेम्स ब्लैक: जिस कोड से आपने लिंक किया है वह बिल्कुल बकवास है।यह जीपीयू कोड के सीरियल टुकड़े में सी कोड के सीरियल टुकड़े का एक अविश्वसनीय रूप से बेवकूफ स्वचालित अनुवाद प्रतीत होता है जहां कई धागे श्रृंखला विस्तार के समान पहले 1000 तत्वों की गणना करते हैं। कोड द्वारा किए गए गणना का सचमुच 99.99% अनावश्यक है। – talonmies