क्या वैज्ञानिक कंप्यूटिंग में कोई प्रसिद्ध समस्याएं / एल्गोरिदम हैं जो समानांतरकरण द्वारा नहीं जा सकते हैं? यह मुझे CUDA पर किताबें पढ़ने के दौरान लगता है कि ज्यादातर चीजें हो सकती हैं।
क्या वैज्ञानिक कंप्यूटिंग में कोई प्रसिद्ध समस्याएं / एल्गोरिदम हैं जो समानांतरकरण द्वारा नहीं जा सकते हैं? यह मुझे CUDA पर किताबें पढ़ने के दौरान लगता है कि ज्यादातर चीजें हो सकती हैं।
जवाबों:
केंद्रीय मुद्दा संगणना की कुल राशि के सापेक्ष महत्वपूर्ण पथ की लंबाई है । यदि समानुपाती है , तो समानता एक निरंतर गति प्रदान करती है। यदि , से असमान रूप से छोटा है , तो समस्या का आकार बढ़ने पर अधिक समानता के लिए जगह है। एल्गोरिदम के लिए जिसमें इनपुट आकार में बहुपद है , सबसे अच्छा मामला क्योंकि बहुत कम उपयोगी मात्रा को लघुगणक समय की तुलना में गणना की जा सकती है।टी सी टी सी टी टी एन सी ~ लॉग टी
एनसी जटिलता वर्ग उन समस्याओं कि समानांतर में कुशलता से हल किया जा सकता (यानी, polylogarithmic समय में) की विशेषता है। यह अज्ञात है कि , लेकिन यह झूठी होने के लिए व्यापक रूप से परिकल्पित है। यदि यह वास्तव में मामला है, तो पी-पूर्ण उन समस्याओं को चिह्नित करता है जो "स्वाभाविक रूप से अनुक्रमिक" हैं और समानता के साथ महत्वपूर्ण रूप से नहीं उठाए जा सकते हैं।
इसे एक सैद्धांतिक पहलू देने के लिए, को समानांतर प्रोसेसर वाले सिस्टम पर समय में हल करने वाली जटिलता वर्ग के रूप में परिभाषित किया गया है । यह अभी भी अज्ञात है कि क्या (हालांकि अधिकांश लोगों को संदेह है कि यह नहीं है) जहां बहुपद समय में हल करने योग्य समस्याओं का समूह है। "सबसे मुश्किल" parallelize करने की समस्याओं के रूप में जाना जाता है अर्थ में -Complete समस्याओं में हर समस्या एक करने के लिए कम किया जा सकता के माध्यम से -Complete समस्या कटौती। यदि आप दिखाते हैं कि एक एकल -complete समस्या , तो आप साबित करते हैं किओ ( n कश्मीर ) पी = एन सी पी पी पी पी एन सी पी एन सी पी = एन सी (हालांकि यह शायद ऊपर बताए अनुसार गलत है)।
इसलिए किसी भी समस्या यह है कि है -Complete सहज parallelize करना कठिन होगा (हालांकि बड़ा speedups अभी भी संभव हैं)। एक -complete समस्या जिसके लिए हमारे पास बहुत अच्छा स्थिर कारक स्पीडअप नहीं है, रैखिक प्रोग्रामिंग है ( या ओआर-एक्सचेंज पर यह टिप्पणी देखें )।पी
Amdahl के नियम को ग्रूम करके शुरू करें । मूल रूप से बड़ी संख्या में धारावाहिक चरणों के साथ कुछ भी समानता से अविश्वसनीय रूप से लाभ होगा। कुछ उदाहरणों में पार्सिंग, रेगेक्स और सबसे उच्च-अनुपात संपीड़न शामिल हैं।
इसके अलावा, मुख्य मुद्दा अक्सर मेमोरी बैंडविड्थ में एक अड़चन है। विशेष रूप से अधिकांश GPU के साथ आपके सैद्धांतिक फ़्लॉप्स में आपके एएलयू को प्राप्त होने वाले फ़्लोटिंग पॉइंट नंबरों की मात्रा बहुत अधिक हो सकती है, क्योंकि कम अंकगणितीय तीव्रता (फ्लॉप्स / कैश-मिस) वाले एल्गोरिदम रैम पर प्रतीक्षा करने का एक बड़ा समय बिताएंगे।
अंत में, किसी भी समय कोड के एक टुकड़े को ब्रांचिंग की आवश्यकता होती है, इसे अच्छे प्रदर्शन की संभावना नहीं है, क्योंकि ALU के आमतौर पर आउटबर्नर लॉजिक है।
अंत में, किसी चीज़ का एक बहुत ही सरल उदाहरण जो कि एक GPU से गति प्राप्त करना कठिन होगा, बस एक पूर्णांक के एक सरणी में शून्य की संख्या की गिनती कर रहा है, जैसा कि आपको अक्सर शाखा करना पड़ सकता है, सबसे अधिक 1 ऑपरेशन (वेतन वृद्धि) द्वारा एक) उस स्थिति में जब आप एक शून्य पाते हैं, और प्रति ऑपरेशन कम से कम एक मेमोरी लाने के लिए।
ब्रांचिंग समस्या से मुक्त एक उदाहरण एक वेक्टर की गणना करना है जो किसी अन्य वेक्टर का संचयी योग है। ((1,2,1] -> [1,3,4])
मैं नहीं जानता कि क्या ये "प्रसिद्ध" के रूप में गिना जाता है, लेकिन निश्चित रूप से बड़ी संख्या में समस्याएं हैं जो समानांतर कंप्यूटिंग आपकी मदद नहीं करेगी।
इकोनो समीकरण को हल करने के लिए (प्रसिद्ध) फास्ट मार्चिंग विधि को समानांतर करके नहीं चलाया जा सकता है। इकोनो समीकरण को हल करने के लिए अन्य विधियां (उदाहरण के लिए तेजी से व्यापक तरीके) हैं जो समानांतरकरण के लिए अधिक उत्तरदायी हैं, लेकिन यहां तक कि यहां (समानांतर) स्पीडअप के लिए क्षमता सीमित है।
इकोनोल समीकरण के साथ समस्या यह है कि सूचना का प्रवाह समाधान पर ही निर्भर करता है। धीरे-धीरे बोलना, जानकारी विशेषताओं (यानी प्रकाशिकी में प्रकाश किरणों) के साथ बहती है, लेकिन विशेषताएँ समाधान पर निर्भर करती हैं। और अनियंत्रित Eikonal समीकरण के लिए जानकारी का प्रवाह और भी बदतर है, अगर कोई समानांतर स्पीडअप वांछित है, तो अतिरिक्त सन्निकटन (जैसे तेजी से व्यापक तरीकों में मौजूद) की आवश्यकता होती है।
समानांतरकरण के लिए कठिनाइयों को देखने के लिए, सेथियन के वेबपेज पर कुछ उदाहरणों की तरह एक अच्छे भूलभुलैया की कल्पना करें । भूलभुलैया के माध्यम से कम से कम पथ पर कोशिकाओं की संख्या (शायद) किसी भी (समानांतर) एल्गोरिदम की न्यूनतम संख्या के लिए एक कम बाध्य है जो संबंधित समस्या को हल करती है।
(मैं लिखता हूं "(शायद)", क्योंकि निचले सीमाएं साबित करने के लिए बेहद मुश्किल हैं, और अक्सर एक एल्गोरिथ्म द्वारा उपयोग किए जाने वाले संचालन पर कुछ उचित मान्यताओं की आवश्यकता होती है।)
समस्याओं का एक और वर्ग जो अभ्यास में समानांतर करना कठिन है, वे गोलाई त्रुटियों के प्रति संवेदनशील हैं, जहां अनुक्रमिक स्थिरता संख्यात्मक रूप से हासिल की जाती है।
उदाहरण के लिए ग्राम-श्मिट प्रक्रिया और उसके सीरियल संशोधन पर विचार करें। एल्गोरिथ्म वैक्टर के साथ काम करता है, इसलिए आप समानांतर वेक्टर ऑपरेशन का उपयोग कर सकते हैं, लेकिन यह अच्छी तरह से पैमाने पर नहीं है। यदि वैक्टर की संख्या बड़ी है और वेक्टर आकार छोटा है, तो समानांतर शास्त्रीय ग्राम-श्मिट और पुन: स्थापन का उपयोग एकल संशोधित ग्राम-श्मिट की तुलना में स्थिर और तेज हो सकता है, हालांकि इसमें कई गुना अधिक काम करना शामिल है।