2012-09-12 3 views
5

मैं matlab में समानांतर कंप्यूटिंग के बारे में नया हूँ। मेरे पास एक ऐसा फ़ंक्शन है जो क्लासिफायर (एसवीएम) बनाता है और मैं इसे कई डेटासेट के साथ परीक्षण करना चाहता हूं। मेरे पास 2 कोर वर्कस्टेशन है इसलिए मैं समानांतर में परीक्षण करना चाहता हूं। किसी ने मुझे के बीच अंतर की व्याख्या कर सकते: जबकि parfor पाश के लिए एक समानांतर है एसपीएमडी बनाम Parfor

dataset_array={dataset1, dataset2} 
matlabpool open 2 
spmd 
     my_function(dataset(labindex)); 
end 

और

dataset_array={dataset1, dataset2} 
matlabpool open 2 
parfor i:1=2 
     my_function(dataset(i)); 
end 

उत्तर

10

SPMD, एक समानांतर क्षेत्र है। अंतर यह है कि एसएमएमडी क्षेत्र में जब आप समानांतर में किए जा सकने वाले कार्यों की बात करते हैं तो आपके पास बहुत अधिक लचीलापन होता है। आप लूप के लिए लिख सकते हैं, आप वितरित सरणी और वैक्टर पर काम कर सकते हैं। आप एक पूरे कार्य प्रवाह को प्रोग्राम कर सकते हैं, जिसमें आम तौर पर लूप से अधिक होते हैं। यह कीमत पर आता है: आपको अपने धागे के बीच काम और डेटा वितरित करने के बारे में और जानना होगा। उदाहरण के लिए लूप को समानांतर करने के लिए श्रमिकों के बीच लूप इंडेक्स श्रेणियों को स्पष्ट रूप से विभाजित करने की आवश्यकता होती है (जो आपने प्रयोगशाला का उपयोग कर अपने कोड में किया था), और शायद वितरित सरणी बना सकते हैं।

दूसरी ओर पर पैरोर केवल यह करता है - लूप के लिए समानांतर। स्वचालित रूप से समांतर, आप जोड़ सकते हैं, इसलिए काम MATLAB द्वारा श्रमिकों के बीच बांटा गया है।

यदि आप केवल अपने स्थानीय ग्राहक के परिणाम पर समानांतर और बाद में काम में एक लूप चलाने के लिए चाहते हैं, तो आपको parfor का उपयोग करना चाहिए। यदि आप अपने पूरे MATLAB प्रोग्राम को समानांतर करना चाहते हैं, तो आपको spmd और कार्य वितरण की जटिलताओं से निपटना होगा।

+0

स्पष्टीकरण के लिए धन्यवाद। हां, अगर मैं गलत नहीं हूं, तो मैंने जो उदाहरण लिखे हैं, वे अलग-अलग तरीकों से परिणाम निकालते हैं, है ना? –

+1

@ Lazza87 हां। इस मामले में कोई अंतर नहीं है, आप दोनों विधियों का उपयोग कर सकते हैं। – angainor

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