क्या आज की विशाल समानांतर प्रसंस्करण इकाइयाँ सेल्युलर ऑटोमेटा को कुशलता से चलाने में सक्षम हैं?


20

मुझे आश्चर्य है कि क्या आजकल ग्राफिक कार्ड में व्यापक रूप से समानांतर गणना इकाइयों को प्रदान किया जाता है (एक जो ओपनसीएल में प्रोग्राम करने योग्य है , उदाहरण के लिए) 1 डी सेलुलर ऑटोमेटा (या शायद 2 डी सेलुलर ऑटोमेटा) को कुशलतापूर्वक अनुकरण करने के लिए पर्याप्त है?

यदि हम चिप की मेमोरी के अंदर जो भी परिमित ग्रिड फिट करेंगे, उसे चुन सकते हैं, क्या हम इस ग्रिड पर परिभाषित कोशिकीय ऑटोमोबैटन के एक संक्रमण की निरंतर समय (क्वासी) में गणना करने की उम्मीद कर सकते हैं?

मुझे लगता है कि 2 डी सेलुलर ऑटोमेटा को 1 डी ऑटोमेटा की तुलना में चिप्स के विभिन्न हिस्सों के बीच संचार के लिए अधिक बैंडविड्थ की आवश्यकता होगी।

मुझे FPGA प्रोग्रामिंग या कस्टम चिप्स के मामले में भी इसी सवाल से दिलचस्पी होगी।


शायद यह एक "समकक्ष" चिप की तुलना करने के लिए अधिक प्रासंगिक होगा जो समान सेलुलर ऑटोमेटा को सामान्य तरीके से अनुकरण करता है। (सामान्य वॉन
न्यूमैन

अच्छा प्रश्न। मुझे पता नहीं है कि GPU पर किस तरह के एल्गोरिदम अच्छी तरह से काम करते हैं, इसलिए मैं जवाबों की प्रतीक्षा कर रहा हूं।
राफेल

1
FPGAs के बावजूद, exp probs exp probs हैं। शायद यहाँ और यहाँ से संबंधित है

जवाबों:


7

बहुत बढ़िया सवाल। मेरा मानना ​​है कि उत्तर हां है।

एक सेलुलर ऑटोमेटन का विकास अनिवार्य रूप से एक स्टैंसिल गणना करने के लिए बराबर है। कुछ 1 डी, 2 डी या 3 डी ग्रिड पर, बिंदु के पड़ोस के अंतिम मूल्य के आधार पर अंकों (या कोशिकाओं) के क्रमिक मूल्यों की गणना की जाती है। 1 डी सीए में, यह पड़ोस बाईं और दाईं ओर दो सेल हो सकता है। जीपीयू पर स्टैंसिल कंप्यूटेशन के कई उदाहरण दिए जा रहे हैं; ORCL के SHOC बेंचमार्क सुइट के लिए OpenCL / CUDA में एक 2 डी स्टैंसिल उदाहरण है।

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

यह उत्तर बहुत बेहतर होगा यदि मैं एक उदाहरण दूं, लेकिन मैं अभी किसी भी कोड को लिखने में बहुत व्यस्त हूं ... लेकिन सिद्धांत रूप में, मुझे लगता है कि स्टैंसिल के बाद उन्हें मॉडलिंग द्वारा GPU पर सीए को कुशलतापूर्वक अनुकरण करना संभव होना चाहिए संगणना। हालांकि, बहुत सारे विचार GPU के लिए एक अच्छी स्टैंसिल गणना लिखने में जाते हैं।


5

आप जो कुछ भी करते हैं, एक सेलुलर ऑटोमोबाटन के लिए अगले राज्य की गणना करने के लिए ऑटोमोबाइल में सेल की तुलना में अधिक गणना होती है। इस प्रकार एक निरंतर समय प्राप्त करने के लिए, आपको कई कंप्यूटिंग कोर की आवश्यकता होती है क्योंकि कोशिकाएं होती हैं।

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

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

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

सारांश: - यदि आप सभी मध्यवर्ती राज्यों को देखना चाहते हैं, तो GPU सबसे प्रभावी दृष्टिकोण है - यदि आप नहीं करते हैं, तो आपको कुछ बेहतर करने के लिए ASIC को सही ठहराने के लिए वॉल्यूम की आवश्यकता है, FPGA शायद पर्याप्त लाभ प्रदान नहीं करेगा यदि वे कोई भी।


2

मुझे आश्चर्य है कि क्या आजकल ग्राफिक कार्ड में व्यापक रूप से समानांतर कम्प्यूटेशन इकाइयां 1 डी सेलुलर ऑटोमेटा (या शायद 2 डी सेलुलर ऑटोमेटा?) को कुशलतापूर्वक अनुकरण करने के लिए पर्याप्त हैं।

बहुत सामान्य होने के नाते, हाँ GPU कंप्यूटिंग सभी के लिए उपलब्ध मानक हार्डवेयर में सबसे अच्छा विकल्प है।

हे(1)nपीnपीहे(1)

FPGA और ASIC पक्ष में, मुझे पता है कि राज्यों के साथ तर्क गेट्स की एक ग्रिड के रूप में एक भौतिक सीए के निर्माण पर शोध किया गया है, सभी उनके पड़ोसियों द्वारा जुड़े हुए हैं; यानी सिस्टोलिक ऐरे । यह विचार अब वैश्विक स्मृति का उपयोग नहीं करेगा, बल्कि ग्रिड में प्रत्येक नोड की स्थिति पर निर्भर करेगा। इस प्रकार की एक मशीन क्रांतिकारी होगी, तब से हम एक CA के अनुकरण वाले कंप्यूटर के बारे में बात करना बंद कर सकते हैं और एक CA को एक कंप्यूटर के रूप में चलाने के बारे में बात करना शुरू कर सकते हैं (कुछ CA पूरा इलाज कर रहे हैं)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.