Matlab

2013-02-20 44 views
6

में कोर i3 के साथ PARFOR के साथ समानांतर 4 कार्य कैसे करें Ibuntu 64 बिट्स के लिए मेरे पास Matlab R2012b है। मैं @ 2.13GHz × 4.Matlab

मैं parfor उपयोग करने के लिए एक ही समय में 4 छोरों parallelize करना चाहते हैं एक इंटेल कोर i3 सीपीयू एम 330 की है। मैं इस कोड का उपयोग क्योंकि इंटेल कोर i3 2 कोर और 4 धागे होते हैं:

if matlabpool('size') == 0 % checking to see if my pool is already open 
    matlabpool(4) 
else 
    matlabpool close 
    matlabpool(4) 
end 

और मैं निम्न त्रुटि प्राप्त:

त्रुटि:

You requested a minimum of 4 workers, but the cluster "local" has the NumWorkers property set to allow a maximum of 2 workers. To run a communicating job on more workers than this (up to a maximum of 12 for the Local cluster), increase the value of the NumWorkers property for the cluster. The default value of NumWorkers for a Local cluster is the number of cores on the local machine.

क्यों? मेरी मशीन में न्यूमवर्कर्स का डिफ़ॉल्ट मान 2 है, लेकिन अगर मैं एक ही समय में 4 लूप कर सकता हूं, तो मैं इसे कैसे प्राप्त करूं?

उत्तर

8

डिफ़ॉल्ट NumWorkers को बढ़ाने के लिए, क्लस्टर प्रोफाइल प्रबंधक (समांतर-> क्लस्टर प्रोफाइल प्रबंधित करें) खोलें। local प्रोफ़ाइल चुनें, संपादित करें पर क्लिक करें, और NumWorkers को अधिकतम संभव मूल्य (आपके मामले में 4) में बढ़ाएं। अब आपकी मशीन पर भौतिक कोर की तुलना में अधिक श्रमिकों के साथ matlabpool बनाना संभव है।

हालांकि, ध्यान दें कि कोर की तुलना में अधिक श्रमिकों का उपयोग करने से श्रमिकों की संख्या समान होने की तुलना में कम प्रदर्शन हो सकती है।

+0

हाँ, यह वास्तव में सही है। +1 – Jonas

+0

दो प्रश्न: कोर से अधिक श्रमिकों ने प्रदर्शन में कमी क्यों की? मैं स्थानीय क्लस्टर के लिए NumWorkers के डिफ़ॉल्ट मान को कैसे जान सकता हूं? –

+2

डिफ़ॉल्ट मान भौतिक कोर की संख्या है (यह आपके प्रश्न में उद्धृत त्रुटि संदेश में भी कहा गया है)। कोर * से अधिक श्रमिक * आपके प्रदर्शन को कम कर सकते हैं क्योंकि वे शारीरिक रूप से अलग कोर पर नहीं चलते हैं, यानी, वे एक-दूसरे को प्रभावित कर सकते हैं। –

8

प्रोग्राम के रूप में local क्लस्टर प्रोफ़ाइल के 4 2 से NumWorkers का मूल्य बदलने के लिए, आप कर सकते हैं use:

myCluster = parcluster('local'); 
myCluster.NumWorkers = 4; % 'Modified' property now TRUE 
saveProfile(myCluster); % 'local' profile now updated, 
          % 'Modified' property now FALSE  

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^