शतरंज इंजन के लिए सीपीयू वी। जीपीयू


16

GPU कुछ प्रकार की गणनाओं में बेहतर होते हैं, जैसे बिटकॉइन उत्पन्न करना और जलवायु सिमुलेशन प्रदर्शन करना।

यदि सीपीयू के बजाय GPUs के साथ गणना की जाए तो क्या शतरंज इंजनों को लाभ होगा?

हो सकता है कि कुछ जानकार व्यक्ति दोनों के बीच के मतभेदों को उजागर कर सकें और हमें बता सकें कि क्या GPU (संयुक्त राष्ट्र) शतरंज के प्रकारों के लिए उपयुक्त है जो शतरंज इंजनों को निष्पादित करते हैं।

जवाबों:


13

संपादित करें:

Http://rybkaforum.net/cgi-bin/rybkaforum/topic_show.pl?tid=32317 में कुछ अन्य बिंदु उठाए गए हैं ।

  • GPU पुनरावृत्ति के लिए इतना अच्छा नहीं है
  • GPU फ्लोटिंग के लिए इतना अच्छा नहीं है
  • नई मशीन-सीखने के दृष्टिकोण के लिए GPU बेहतर काम कर सकता है, लेकिन पारंपरिक इंजन एल्गोरिदम नहीं

मूल :

@ मैक्सवेल 86 ने पहले ही उत्कृष्ट लिंक और संसाधन दिए हैं। जेटा-शतरंज इंजन पर ध्यान दें। यह GPU शतरंज इंजन है। दुर्भाग्य से, GPU ने शतरंज प्रोग्रामिंग में अपनी उपयोगिता साबित नहीं की है। वास्तव में, जेट शतरंज इंजन परियोजना बिल्कुल नहीं चली।

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

यहाँ छवि विवरण दर्ज करें

दाईं शाखा बाईं शाखा पर निर्भर करती है। विशेष रूप से, अगर हम कटऑफ (असफल-उच्च) प्राप्त कर सकते हैं, तो हमें शेष नोड्स को खोजने की भी आवश्यकता नहीं होगी। दुर्भाग्य से, यह कुछ ऐसा नहीं है जो एक GPU कुशलतापूर्वक कर सकता है। अल्फा-बीटा के लिए GPU प्रोग्राम लिखना संभव है, लेकिन GPU थ्रेड्स (गुठली के रूप में जाना जाता है) को प्रतीक्षा करने के लिए रुकना होगा। सीपीयू के विपरीत, एक GPU kennel सिर्फ कुछ और (थ्रेड-स्विच या प्रोसेस-स्विच के रूप में जाना जाने वाली प्रक्रिया) पर स्विच नहीं कर सकता है।

हमारे मौजूदा एल्गोरिथ्म और इंजन ज्ञान सीपीयू दुनिया के लिए व्युत्पन्न थे। संपूर्ण एल्गोरिथ्म को GPU के लिए पुनः स्थापित करने की आवश्यकता होगी। दुर्भाग्य से, इस पर ज्यादा रुचि और शोध नहीं है।


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

सच। लेकिन अगर मुख्य खोज को स्वयं लोड नहीं किया जा सकता है, तो छोटे कार्यों को बंद करने का कोई मतलब नहीं होना चाहिए।
हेलोवर्ल्ड

3
यह एक उत्कृष्ट उत्तर है। मेरी स्क्रीन पर +3 स्विच कहां है? मैं यह नहीं मिल सकता है!
thb

7

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

बेशक, यह शतरंज इंजन के लिए GPU प्रोग्रामिंग की वर्तमान स्थिति है, लेकिन GPU प्रोग्रामिंग अपेक्षाकृत नया है, इसलिए शायद वे भविष्य में वर्तमान समस्याओं के समाधान पाएंगे।

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


1
आपने याद किया: zeta-chess.blogspot.com
HelloWorld

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

5

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

http://lczero.org/

https://en.wikipedia.org/wiki/AlphaZero

https://groups.google.com/forum/#!forum/lczero


2

मैंने अपना वर्तमान रन जीटा v099a, अपने प्रयोगात्मक gpu शतरंज इंजन पर समाप्त किया।

https://github.com/smatovic/Zeta

वर्तमान पुनरावृत्ति का वास्तविक निष्कर्ष यह है, कि एक साधारण इंजन, मानक शतरंज प्रोग्रामिंग तकनीकों के साथ, एक Gpu पर चलने के लिए OpenCL में पोर्ट किया जा सकता है, लेकिन यह प्रति सेकंड गणना नोड्स के संदर्भ में इंजन को प्रतिस्पर्धी बनाने के लिए अधिक प्रयास करेगा ( गति), सांख्यिकी (विशेषज्ञ ज्ञान), और स्केलिंग (समानांतर खोज एल्गोरिदम)।

कंप्यूटर विज्ञान विषय के रूप में कंप्यूटर शतरंज, दशकों से विकसित हुआ, 40 और 50 के दशक में शुरू हुआ और एक मैच 1997 में डीप ब्लू बनाम कप्सरो के साथ एक शिखर पर पहुंच गया। आजकल शतरंज के इंजनों को हज़ारों और हज़ारों गेम खेलकर ट्यून किया जाता है, इसलिए एक शतरंज खेलने वाले इंजन को gpu पर चलाने के लिए और gpu पर चलने वाले एक प्रतिस्पर्धी शतरंज खेलने वाले इंजन को पाने के लिए दो अलग-अलग कार्य हैं।


0

मुझे CUDA और शतरंज प्रोग्रामिंग (इंजन प्रोग्रामिंग नहीं) के साथ कुछ अनुभव है। यह सवाल भी कई बार मेरे दिमाग में आया। यहाँ मेरी राय है, मैंने कभी इसका अध्ययन नहीं किया।

ठीक है, पहले, यह लगभग निश्चित है कि शतरंज इंजनों के वर्तमान डिजाइन के साथ यह असंभव है। अन्यथा कोई बस कर देता।

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

मेरी राय में सभी पेड़ गणना सीपीयू पर चलनी चाहिए।

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

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

30% अतिरिक्त गति को कहने के लिए इंजनों के पूरी तरह से नए डिजाइन बनाने के लिए करना शायद बहुत दिलचस्प बात नहीं है। और चलो कला GPU के राज्य पर 20x स्पीडअप कहने के लिए, आपको मूल्यांकन कार्यों को वास्तव में विदेशी बनाना होगा।

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

संपादित करें: चीजों को स्पष्ट करने के लिए, CPU आंशिक मूल्यांकन करने के लिए नियमित रूप से GPU सरणियों को पदों पर भेजेगा। हो सकता है कि जो मैंने लिखा था, उससे यह स्पष्ट न हो।

इस काम को करने के लिए कई समस्याएं।


0

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


Google ने मशीन सीखने के लिए GPU को आदर्श साबित किया है लेकिन पारंपरिक शतरंज प्रोग्रामिंग के लिए GPU अच्छा नहीं है।
हेलोवर्ल्ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.