2012-08-31 8 views
9

में विभाजित करने और एल्गोरिदम को जीतने के लिए कैसे करें सबसे पहले मुझे लगता है कि मुझे समस्या है, पीआई के 1 बिलियन अंक की गणना करना, बड़ी संख्या के फैक्टोरियल की गणना करना, या बड़ी सूची में विलय करना। मैं समस्या को छोटे कार्यों में विभाजित करना चाहता हूं और प्रत्येक कार्य को एक साथ निष्पादित करना और परिणामों को गठबंधन करना चाहता हूं। सबसे पहले इस प्रकार की सहमति का नाम क्या है और आप क्लोजर में इसे कैसे करेंगे?क्लोजर

+1

मैंने उन्हें किसी भी गहराई में नहीं देखा है, लेकिन शायद यह "क्लोजर रेड्यूसर" के लिए एक नौकरी है जो हुड के नीचे समानांतरता का उपयोग करती है। –

+1

http://codereview.stackexchange.com/questions/15160/calculating-a- फैक्टोरियल-with-parallel-sub-computations-using-pmap-pvalues-and-p – noahlz

उत्तर

4

वर्तमान क्लोजर 1.4 में, आप इसे pmap, pcalls, या pvalues का उपयोग करके पूरा कर सकते हैं। pmap फ़ंक्शन map का समांतर संस्करण है, जबकि pcalls और pvalues वास्तव में समरूप गैर समांतर संस्करण नहीं हैं (हालांकि, मुझे लगता है कि listpvalues का "समानांतर संस्करण" है)।

हालांकि, आपके द्वारा वर्णित समस्याओं के लिए, ऐसा लगता है कि आप reduce के समांतर संस्करण का उपयोग करना चाहते हैं। क्लोजर 1.2 ( see here) से पुराना एक है, जिसका मैंने कभी उपयोग नहीं किया है, इसलिए मैं इसकी उपयोगिता के बारे में बात करने में सक्षम नहीं हूं।

क्लोजर 1.5 के साथ आने से यह नई "reducers" लाइब्रेरी होगी, जो रिच हिकी ब्लॉग here पर ब्लॉग करती है। यहां, foldreduce का समांतर संस्करण प्रतीत होता है।