क्या समानांतर मैट्रिक्स प्रतिक्षेपक एल्गोरिदम हैं जो अनुक्रमिक गुणन की तुलना में अधिक कुशल हैं?


11

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


1
आपने क्या प्रयास किया है? कहां फंस गए? आपने क्या शोध किया है? शीर्षक के अलावा, सवाल कहां है? आपकी समस्या के निर्णय संस्करण के लिए (शीर्षक से), उत्तर "हां" है, लेकिन आप पहले से ही जानते हैं, है ना?
ईविल

2
@TomR यह सवाल शायद आपके लिए दिलचस्पी का है
एड्रिनन

1
हो सकता है कि कुछ इस तरह ? या आप कुछ और ढूंढ रहे हैं? आपके आवेदन में आकार और शक्तियाँ क्या हैं?
ईविल

1
आप n-1 गुणन से कम के साथ nth शक्ति की गणना कर सकते हैं जब n large 4. बड़े मैट्रिसेस के लिए, यह आमतौर पर गुणा की सबसे छोटी संभव संख्या को खोजने के लिए सार्थक होगा (उदाहरण के लिए, 6 के साथ n 15 की गणना करने के लिए एक सरल विधि है गुणन, लेकिन यह 5 के साथ किया जा सकता है)। फिर आप अनुक्रमिक गुणन की सबसे छोटी संख्या को खोजने के लिए एक ही सिद्धांत लागू कर सकते हैं, जो कठिन होगा।
gnasher729

1
आपको अपने पास उपलब्ध समानता की मात्रा पर भी विचार करना चाहिए। "समानांतरवाद" उन संसाधनों के दोहन के बारे में है जो अन्यथा अप्रयुक्त होंगे। यदि मैट्रिक्स गुणन का कार्यान्वयन पहले से ही कुशलतापूर्वक उपलब्ध सभी संसाधनों का उपयोग कर सकता है, तो परिपक्वता की शक्तियों की गणना के लिए शोषण करने के लिए और कुछ नहीं है।
gnasher729

जवाबों:


5

यदि आपके पास कई प्रोसेसर हैं जो समानांतर में काम कर सकते हैं, तो आप किसी भी पावर को k (चरणों में 2 ^ k) तक की गणना कर सकते हैं। उदाहरण के लिए: गणना करने के लिए , आप गणना करते हैं:M15

चरण 1: एम 2 की गणना करेंM2

चरण 2: की गणना और एम 4 = एम 2 * एम 2M3=M2MM4=M2M2

चरण 3: की गणना और एम 8 = एम 4 * एम 4M7=M4M3M8=M4M4

स्टेज 4: की गणना M15=M8M7

यह तीन गुणा में गणना करने और एक और दो गुणा में M 5 को तीसरी शक्ति तक बढ़ाने से एक गुणा अधिक है , लेकिन यदि आपके पास दो प्रोसेसर हैं तो तेज होना चाहिए। मनमानी उच्च शक्तियों के लिए, आपको अधिक प्रोसेसर की आवश्यकता होगी।M5M5

यदि आप एक बल बल एल्गोरिथ्म का उपयोग गुणा, पंक्ति को स्तंभ से गुणा करते हैं, तो आप किसी उत्पाद की एक पंक्ति की गणना करके कुछ समय बचा सकते हैं, फिर अगले उत्पाद के लिए तुरंत उस पंक्ति का उपयोग कर सकते हैं। यह की गणना में मदद करेगा जहां हम एम 3 की गणना शुरू कर सकते हैं जैसे ही एम 2 की पहली पंक्ति की गणना की गई है; यह M 4 के साथ सहायक नहीं होगा क्योंकि हमें M 2 की पंक्तियों और स्तंभों की आवश्यकता है । बड़ी शक्तियों के लिए, आप संभवतः गणना करने के लिए किन शक्तियों की व्यवस्था कर सकते हैं।M3M3M2M4M2

और यह पोस्टिंग के बाद यह स्पष्ट हो जाता है कि आप एकाधिक प्रोसेसर बहुत आसानी से उपयोग कर सकते हैं: आप की पहली पंक्ति की गणना के द्वारा शुरू । आप उस पंक्ति है, तो आप सभी जानकारी की पहली पंक्ति की गणना करने की जरूरत है एम 3 = एम 2 * एम , ताकि आप की दूसरी पंक्ति की गणना एम 2 और की पहली पंक्ति में एम 3 समानांतर में। तो फिर तुम की तीसरी पंक्ति की गणना कर सकते एम 2 , की दूसरी पंक्ति एम 3 , और की पहली पंक्ति एम 4 समानांतर में और इतने पर।M2=MMM3=M2MM2M3M2M3M4

यह आवश्यक से बहुत अधिक संचालन करेगा (उदाहरण के लिए, लिए 14 मैट्रिक्स गुणन न्यूनतम 5 या चार-चरण विधि के 6 के बजाय)। यदि बिजली प्रोसेसर की संख्या की तुलना में बड़ी नहीं है, तो यह अभी भी तेज होगी। लेकिन इस विधि का उपयोग करके चार प्रोसेसर के साथ एम 1000 की गणना करना अक्षम होगा; एक इष्टतम तरीके से ऐसा करना एक दिलचस्प समस्या होगी।M15M1000

संयुक्त दृष्टिकोण: उदाहरण के लिए चार प्रोसेसर का उपयोग करके, आप एक समय में प्रत्येक उत्पाद एक पंक्ति की गणना करके एबी, एबीसी, एबीसीडी और एबीसीडीई की गणना लगभग समानांतर में कर सकते हैं। यह एक प्रोसेसर के साथ एक उत्पाद के रूप में एक ही समय में चार प्रोसेसर का उपयोग करके से एम 5 के सभी चार की गणना करने की अनुमति देता है ।M2M5

इन चार परिणामों और मूल एम को देखते हुए, आप एक ही समय में फिर से मैट्रिसेस से एम 25 में से चार की गणना कर सकते हैं , बशर्ते मैट्रिस एक दूसरे से अलग पांच शक्तियों पर हों। तो एम 25 तक की प्रत्येक शक्ति की गणना एकल प्रोसेसर मैट्रिक्स उत्पाद के लगभग दो बार की जा सकती है।M6M25M25

इन मैट्रिक्स की गणना के साथ, सभी मैट्रिसेस और कुछ और M 125 तक की गणना एक ही मैट्रिक्स उत्पाद के तीन बार में की जा सकती है यदि चार प्रोसेसर उपलब्ध हैं। K प्रोसेसर्स के साथ यह कम से कम पावर k ( k + 1 ) 2 तक जाना चाहिए ।M108M125k(k+1)2


4

मैट्रिक्स एक्सप्रेशन के साथ समानांतर स्पीडअप का विश्लेषण करने वाले दो स्तर हैं: "मैक्रो-एल्गोरिदमिक" स्तर जो यह तय करता है कि कौन से गुणा करना है, और "माइक्रो-एल्गोरिदमिक" स्तर जहां आप समानांतरवाद के साथ खुद को गुणा कर सकते हैं।

पिछले के लिए, विकिपीडिया पता चलता है कि एक गुणा करने के लिए से n मैट्रिक्स, हम की एक जटिलता को प्राप्त कर सकते हे ( लॉग ऑन 2 ( एन ) ) सैद्धांतिक रूप से प्रोसेसर की एक असीम नंबर, या के साथ हे ( एन ) एक और अधिक यथार्थवादी समानांतर एल्गोरिथ्म के साथ।nnO(log2(n))हे(n)

(ध्यान दें: विकिपीडिया पृष्ठ सामान्य मैट्रिक्स संगणना के लिए है। मुझे यकीन नहीं है कि अगर हम मैट्रिक्स का उपयोग कर रहे हैं तो जानकारी का उपयोग करके इसे और भी अधिक समानांतर किया जा सकता है।)

पूर्व के लिए, यह प्रश्न बदल जाता है कि कुछ मैट्रिक्स A के लिए गणना करने के लिए मैट्रिक्स गुणन के कितने राउंड आवश्यक हैं ? (मैं कहता हूं राउंड, क्योंकि किसी दिए गए दौर में सभी गुणा समानांतर में किया जा सकता है)।

हरा करने के लिए अनुक्रमिक एल्गोरिथ्म, जैसा कि अन्य उत्तरों में नोट किया गया है, स्क्वेरिंग द्वारा प्रतिपादक है । यह आपको ( लॉग ( के ) ) गुणा में गणना करने की अनुमति देता है।हे(लॉग())

सवाल यह है कि क्या हम इसे समानता के साथ हरा सकते हैं? मेरा दावा है कि उत्तर नहीं है।

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

इसे बेहतर ढंग से समझने के लिए, आइए देखें कि यदि हम एक्सप्रेशन नहीं कर रहे हैं तो आप मैट्रिक्स गुणन को कैसे समानांतर बनाएंगे। मान लीजिए आप गुणा parallelize करने के लिए देख रहे थे अलग वर्ग मैट्रिक्स:

12345

यह समानांतर करने का प्राकृतिक तरीका स्पष्ट है, आपको प्रदर्शन करने के लिए दुरुपयोग करना चाहिए2

(12)(34)(56)(-1)

हे(लॉग())

हालांकि, अगर हम इस तरह से प्रदर्शन करने वाले थे, तो यह इस तरह दिखेगा:

()()()()

2

nnहे(लॉग2(n)लॉग())हे(nलॉग())


3

लॉग2

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