समस्या यह हो सकती है कि आर प्रक्रिया एक कोर तक सीमित है (और उपप्रोसेस इसे प्राप्त करते हैं)।
इस प्रयास करें:
> system(sprintf("taskset -p 0xffffffff %d", Sys.getpid()))
pid 3064's current affinity mask: fff
pid 3064's new affinity mask: fff
अब, आपकी मशीन पर है, वर्तमान आत्मीयता मुखौटा रिपोर्ट एक 1 है, तो इस समस्या थी। रेखा से ऊपर इसे हल करना चाहिए (दूसरी पंक्ति FFF (या समान) रिपोर्ट करना चाहिए अर्थात्।
साइमन Urbanek एक समारोह mcaffinity
कि मल्टीकोर के लिए इस पर नियंत्रण की अनुमति देता है लिखा था। जहां तक मुझे पता है, यह अभी भी आर-devel में है।
जानकारी के लिए, उदाहरण के लिए देखते हैं कि यह discussion on R-sig-hpc
अद्यतन, और जिन गुओ के जवाब के अलावा:।
आप openblas और स्पष्ट बनता है (समानांतर/बर्फ/मल्टीकोर के माध्यम से) के माध्यम से निहित बनता है एक साथ उपयोग करते हैं, आप कर सकते हैं Openblas depe का उपयोग करता है कि थ्रेड की संख्या को बदलना चाहते हैं इस पर निर्भर करते हुए कि आप स्पष्ट रूप से समानांतर भाग में हैं या नहीं।
यह संभव है (लिनक्स के तहत ओपनब्लैस के साथ, मुझे किसी भी अन्य अनुकूलित अनुकूलित बीएलएएस के बारे में पता नहीं है जो धागे की संख्या में एक फ़ंक्शन प्रदान करता है), विवरण के लिए Simon Fuller's blog post देखें।
आप कोड की अधिक पोस्ट करने के लिए होगा आप निश्चित रूप से जानना चाहते हैं। लेकिन उबंटू 12.04 पर मेरे पास यह मुद्दा बिल्कुल नहीं है और आपने सुखद रूप से 24 कोर पर 100 बार कई बार देखा है। – Justin
यह किसी भी विशिष्ट कोड के लिए विशिष्ट नहीं है। –
तो मैं ज्यादा मदद नहीं कर सकता। क्योंकि यह मेरे लिए काम करता है! आप 'डीएमएमसी' पैकेज को भी आजमा सकते हैं ... लेकिन जिस तरह से आप 'doParallel' का उपयोग कर रहे हैं और फिर कार्यान्वयन का उपयोग कर रहे हैं (' foreach'? '।' paller' से 'समानांतर'?) मैं नहीं ' टी सोचता है कि कोई भी मदद कर सकता है। – Justin