आर

2015-03-11 11 views
40

में डीएमसी और डूपरेल के बीच का अंतर doParallel और doMC के बीच foreach फ़ंक्शन से संबंधित अंतर क्या है? doParallel विंडोज़, यूनिक्स की तरह समर्थन करता है, जबकि doMC केवल यूनिक्स की तरह ही समर्थन करता है। दूसरे शब्दों में, doParalleldoMC को सीधे क्यों नहीं बदला जा सकता है? धन्यवाद।आर

अद्यतन: doParallelparallel पर बनाया गया है, जो अनिवार्य रूप multicore और snow के विलय है और स्वचालित रूप से आपके सिस्टम के लिए उपयुक्त उपकरण का उपयोग करता है। नतीजतन, हम बहु सिस्टम का समर्थन करने के लिए doParallel का उपयोग कर सकते हैं। दूसरे शब्दों में, हम doMC को प्रतिस्थापित करने के लिए doParallel का उपयोग कर सकते हैं।

रेफरी: registerDoParallel(ncores=3) और

cl <- makeCluster(3) 
registerDoParallel(cl) 

के बीच ऐसा लगता है registerDoParallel(ncores=3) क्लस्टर स्वचालित रूप से बंद कर सकते हैं, जबकि दूसरे स्वचालित रूप से बंद नहीं करते और जरूरत stopCluster(cl)http://michaeljkoontz.weebly.com/uploads/1/9/9/4/19940979/parallel.pdf

BTW, क्या अंतर है।

रेफरी: http://cran.r-project.org/web/packages/doParallel/vignettes/gettingstartedParallel.pdf

+0

बस इतना ही है कि दोनों जुड़े हुए हैं http://stackoverflow.com/questions/28829300/doparallel-cluster-vs-cores?noredirect=1&lq=1 – Tony

+0

[doParallel, क्लस्टर बनाम कोर] के संभावित डुप्लिकेट (https://स्टैक ओवरफ़्लो।कॉम/प्रश्न/28829300/डोपरेल-क्लस्टर-बनाम कोर) –

उत्तर

23

doParallel पैकेज doSNOW और doMC, parallel के रूप में ज्यादा के विलय है snow और multicore के विलय है। लेकिन doParallel में doMC की सभी विशेषताएं हैं, मुझे क्रांति Analytics के रिच कैलावे ने बताया था कि वे doMC को चारों ओर रखना चाहते थे क्योंकि यह कुछ परिस्थितियों में अधिक कुशल था, भले ही doMC का उपयोग करता है जैसे doParallel। मैंने व्यक्तिगत रूप से कोई बेंचमार्क नहीं चलाया है यह निर्धारित करने के लिए कि क्या महत्वपूर्ण अंतर है या नहीं।

मैं एक Windows कंप्यूटर पर एक लिनक्स या मैक ओएस एक्स कंप्यूटर, doParallel पर doMC का उपयोग करते हैं, और doMPI एक लिनक्स क्लस्टर पर है, लेकिन doParallel उन प्लेटफार्मों के सभी पर काम करता है।


अलग पंजीकरण तरीकों के लिए, यदि आप निष्पादित करें:

registerDoParallel(cores=3) 
एक Windows मशीन पर

, यह एक क्लस्टर वस्तु परोक्ष बाद में उपयोग के clusterApplyLB साथ पैदा करेगा, जबकि लिनक्स और मैक ओएस एक्स पर , कोई क्लस्टर ऑब्जेक्ट बनाया या उपयोग नहीं किया जाता है। mclapply पर कॉल करते समय कोर की संख्या को आसानी से याद किया जाता है और mc.cores तर्क के मान के रूप में उपयोग किया जाता है।

आप निष्पादित हैं:

cl <- makeCluster(3) 
registerDoParallel(cl) 

तो पंजीकृत क्लस्टर वस्तु मंच की परवाह किए बिना clusterApplyLB साथ इस्तेमाल किया जाएगा। आप सही हैं कि इस मामले में, क्लस्टर ऑब्जेक्ट को बंद करने की आपकी ज़िम्मेदारी है क्योंकि आपने इसे बनाया है, जबकि निहित क्लस्टर ऑब्जेक्ट स्वचालित रूप से बंद हो जाता है।

+1

क्रांति Analytics के रिच कैलावे से 'डीएमएमसी' के लिए "कुछ परिस्थितियों" के बारे में शब्द या दस्तावेज हैं? इसके अलावा, 'ncores' और' makeCluster' स्थिति में प्रदर्शन पर विचार करने में कोई अंतर है? मैंने एक आर [कोगेना] विकसित किया (https://github.com/zhilongjia/cogena) पैकेज जहां समानांतर 'डीएमसी' मूल रूप से प्रतिलिपि बनाई गई थी। कुछ घंटे पहले विंडोज़ का समर्थन करने के लिए मैंने इसे 'doParallel' में बदल दिया। 'डीएमएमसी 'और' डूपरेल 'के मिश्रण के माध्यम से लागू होने पर यह' NAMESPACE' और 'import' से संबंधित एक कूड़े का परिसर है। धन्यवाद। –

+0

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

+0

मुझे आपका विचार मिल गया है। धन्यवाद। यदि सामान्य मशीन में प्रदर्शन अंतर होता है, तो जैसा कि आपने सुझाव दिया है, मैं करूँगा। यदि नहीं, तो मैं अब तक अपने पैकेज का उपयोग करना आसान बनाता हूं। मैंने 'doParallel' के रखरखाव को ईमेल किया और आपको अपडेट रखेगा। –