इस लेख की जानकारी पुराना है।
प्रविष्टि
जितनी जल्दी या बाद में, Matlab / Simulink पैकेज के उपयोगकर्ता को उस कंप्यूटर के अपर्याप्त प्रदर्शन की समस्या का सामना करना पड़ता है, जिस पर वह काम करता है। मैंने भी सामना किया।
पहली बात जो दिमाग में आई वह थी लोहे का आधुनिकीकरण। मैं एक पुराने लैपटॉप पर काम करता हूं, और इसलिए मैं एक स्थिर पीसी के बारे में सोचने लगा। लेकिन इसने उत्पादकता में बड़ी वृद्धि का वादा नहीं किया, और वास्तव में यह एक गेमर का तरीका है, लेकिन एक इंजीनियर का नहीं।
कट के तहत विवरण >>
इस तथ्य के आधार पर कि समानांतर कंप्यूटिंग का उपयोग करते हुए यह मेरा पहला अनुभव था, विषय शुरुआती के लिए भी है। समानांतर कंप्यूटिंग के पारखी मेरे कार्यों की अच्छी सलाह और टिप्पणियों के लिए मेरा आभार व्यक्त करेंगे।
तो:
- नया कंप्यूटर।
जैसा कि मैंने ऊपर उल्लेख किया है, एक आरामदायक "वैज्ञानिक" काम के लिए, मुझे सिर्फ एक "गेमिंग" पीसी की आवश्यकता थी, जिसमें बहुत अधिक परमाणु प्रोसेसर और कम से कम 1.3 की क्षमता वाले एक ग्राफिक्स त्वरक है। महंगा और स्केलेबल नहीं। मुझे यकीन था कि मैं उनकी बेलगाम शक्ति को बहुत तेज़ी से मास्टर करूँगा, और फिर से यह कम होगा। - अनुकूलन और कम से कम / मॉडल और कोड का शोधन।
अपने लैपटॉप की क्षमताओं की सीमा से पहले मैं इस रास्ते पर चल चुका हूं। विधि पूरी तरह से समाप्त हो गई जब मॉडलिंग का समय मानक कॉफी / चाय के समय से अधिक लंबा हो गया। "आप अनुकरण शुरू कर सकते हैं और सो सकते हैं!", जो जानते हैं वे कहेंगे, लेकिन इसके लिए पहले से ही अनुकूलित मॉडल और यह कैसे व्यवहार करेगा, इसका स्पष्ट विचार होना आवश्यक है। मुझे विकास के प्रारंभिक चरणों में भी प्रदर्शन की आवश्यकता थी। - एक कंप्यूटिंग क्लस्टर का उपयोग करना।
हाथ में कोई क्लस्टर नहीं था, लेकिन यूरेनस जैसे लोगों को दस्तक देने में काफी समय लगा। और समस्या का बयान तीसरे पक्ष के संसाधनों का उपयोग करने के लिए बहुत उपयुक्त नहीं था। मैं एक बार भी कार्य चलाने और परिणाम एकत्र करने के लिए तैयार नहीं था। यह अभी भी एक लंबा रास्ता तय करना था।
नतीजतन, इसे बनाने का फैसला किया गया था, हालांकि छोटा, लेकिन अपने स्वयं के क्लस्टर के
साथ लाठी ।
लोहे की खोज
हमारी दुनिया में अच्छाई की प्रबलता की आशा करते हुए, मैंने मदद के लिए सहयोगियों और परिचितों की ओर रुख किया। नतीजतन, कुछ ने स्वेच्छा से और अपने पीसी को मेरे प्रयोग के लिए प्रदान किया। कई विकल्प थे, लेकिन मुझे केवल दो कारों का चयन करना था। मैं यह समझाने की कोशिश करूंगा कि क्यों:
- प्रत्येक में बोर्ड पर एक कोर i7 प्रोसेसर था। चार कोर ने 2 वर्चुअल दिए। कुल मिलाकर, मुझे उनके आधार पर 16 आभासी कार्यों को बनाने का अवसर मिला, जो बहुत अच्छा है। साथ ही, ऑपरेटिंग मेमोरी एक 6 और अन्य 8 जीबी में थी।
- वे उसी स्थानीय नेटवर्क में स्थित थे, जो आभासी प्रयोगशालाओं के बीच डेटा हस्तांतरण के लिए खर्च किए गए समय को कम करने के लिए बस आवश्यक था। इस नेटवर्क से कनेक्ट करने के लिए, मैंने वीपीएन चैनल को उठाया, और प्रत्येक पीसी के साथ काम करने के लिए मैंने एक मानक रिमोट डेस्कटॉप स्थापित किया।
विपक्ष भी मौजूद थे:
- दोनों पीसी विंडोज 7 x64 चला रहे थे, जबकि मेरे लैपटॉप में x86 ऑपरेटिंग सिस्टम था। मतलाब क्लस्टर के लिए अनिवार्य आवश्यकताओं में से एक ऑपरेटिंग सिस्टम की समान गहराई है। नतीजतन, मैंने अपने लैपटॉप के प्रोसेसर के आधार पर क्लस्टर में दो और कार्यों को जोड़ने का अवसर खो दिया।
- वीडियो कार्ड की uda क्षमता 1.3 से कम थी और उन्हें एक गुच्छा में शामिल करना संभव नहीं था।
लेकिन जब से प्लसस को अभी भी आगे बढ़ाया गया था, घुटने पर क्लस्टर का पहला पत्थर रखा गया था।
एक क्लस्टर का निर्माण
सॉफ्टवेयर आवश्यकताओं
मैंने ऊपर लोहे के लिए आवश्यकताओं को कवर किया। सॉफ़्टवेयर आवश्यकताएँ निम्नानुसार हैं:
- हर मशीन पर मतलाब।
एक मंच के बिना मत करो। - प्रत्येक मशीन पर वितरित कम्प्यूटिंग टूलबॉक्स (DCT)।
- प्रत्येक मशीन पर MATLAB वितरित कम्प्यूटिंग इंजन (MDCE)।
दोनों टूलबॉक्स केवल एक साथ काम करते हैं। - संकलक मानक Matlab संकलक से अलग है।
64 बिट ऑपरेटिंग सिस्टम वाली मशीनों पर, यदि हम उन्हें सिम कोड में सीम्यूलिंक मॉडल को संकलित करने के लिए एक मेजबान के रूप में उपयोग करने जा रहे हैं। मतलाब समर्थित संकलक की एक लंबी सूची प्रदान करता है, जिनमें से कुछ मुफ्त हैं। मैंने Microsoft Visual C ++ 2010 का उपयोग किया। - गतिविधि के प्रकार के आधार पर सिमुलिंक और अन्य एक्सटेंशन।
क्लस्टर लॉन्च
सबसे पहले, प्रत्येक मशीन पर, आपको एमडीसीई को एक सेवा के रूप में स्थापित और चलाने की आवश्यकता है। यह मैटलैब को छोड़ने के बिना ("का उपयोग करके दोनों" किया जा सकता है! साइन मैटलैब कमांड को सिस्टम कमांड के रूप में निष्पादित करता है), या कमांड लाइन का उपयोग करके। * .bat फाइलें इसके लिए मैटलैब इंस्टॉलेशन डायरेक्टरी के साथ पथ \ टूलबॉक्स \ डिस्टैम्प \ बिन \ पर स्थित हैं।
प्रत्येक मशीन पर MDCE स्थापित और चलाएं:
cd('C:\Program Files\MATLAB\R2010b\toolbox\distcomp\bin\')
!mdce install
!mdce start
हम शेड्यूलर शुरू करते हैं, जो समानांतर कंप्यूटिंग का प्रबंधन करेगा:
!startjobmanager -name jm -v
Matlab कमांड विंडो में विस्तार से स्टार्टअप प्रक्रिया प्रदर्शित करने के लिए -v विकल्प जिम्मेदार है। शेड्यूलर को हमारे निपटान में किसी भी पीसी पर दूरस्थ रूप से चलाया जा सकता है।
हम तथाकथित श्रमिकों का चक्र शुरू करते हैं, जो एक साथ उन्हें सौंपे गए कार्यों को पूरा करेंगे:
clientHost = 'slovak';
node = {'slovak', 'puls'};
for i = 1:length(node)
for j = 1:8
str = ['!startworker -name w_' num2str(j) '_' node{i} ' -jobmanagerhost ' clientHost ' -jobmanager jm -remotehost ' node{i} ' -v'];
eval(str)
end
end
'स्लोवाक' होस्ट वह कंप्यूटर है जिस पर शेड्यूलर चल रहा है। मेरे मामले में, यह काम करने वाले पीसी में से एक है। मुझे इसका नाम बदलना पड़ा, क्योंकि पिछला नाम सिरिलिक में था, जिसे मतलाब बर्दाश्त नहीं करता है।
वर्कहॉर्स बनाने के बाद
, हम अपने क्लस्टर की प्रशंसा कर सकते हैं:
!nodestatus -infolevel 3
नोड्स पर विस्तृत जानकारी के लिए -infolevel 3 विकल्प।
...
Job manager:
Name jm
Running on host Slovak
Number of workers 16
...
आप GUI का उपयोग करके क्लस्टर का प्रबंधन कर सकते हैं। ऐसा करने के लिए, admincenter.bat फ़ाइल बैच फ़ाइल फ़ोल्डर में है, जो प्रशासन उपयोगिता लॉन्च करती है। हमारे मामले में, यह इस तरह दिखता है:

लेख लिखने के समय, पीसी पल्स "गिर गया" और इसलिए व्यवस्थापक केंद्र में केवल 8 कार्यकर्ता हैं।
अगला, हमें Matlab का उपयोग करके बनाए गए अनुसूचक को खोजने की आवश्यकता है:
jm = findResource('scheduler','type','jobmanager', ...
'LookupURL', 'slovak:27350', 'Name', 'jm');
इस चरण के बाद, आप पूरी तरह से रिबन काट सकते हैं और आत्मविश्वास से मान सकते हैं कि हमारा क्लस्टर बनाया गया है और काम करने के लिए तैयार है। अगला, आपको नोड्स के बीच काम को सही ढंग से वितरित करने, साझा संसाधनों तक पहुंच व्यवस्थित करने, और बहुत कुछ करने की आवश्यकता है। मैं यह भी नोट करना चाहता हूं कि इस स्तर पर हम केवल मतलाब से समानांतर कार्य चला सकते हैं। सिमुलिंक मॉडल को समानांतर करने के लिए, मुझे एक से अधिक बार तंबूरा के साथ नृत्य करना पड़ा। परिणामस्वरूप, मैंने अपने सभी कार्यों की अवधारणा को विशेष रूप से समानांतर समाधान की सुविधा के लिए बदल दिया, लेकिन यह एक अलग विषय का विषय है।
विषय पर जानकारी निम्नलिखित संसाधनों से खींची गई थी:
- मतलूब वेबसाइट
- मतलाब उपयोगकर्ता ब्लॉग
- रूसी-भाषा उपयोगकर्ता मंच Matlab
- एनएन ओलेनेव, आर.वी. Pechenkin, ए.एम. MATLAB और इसके अनुप्रयोगों में चेरनेत्सोव समानांतर प्रोग्रामिंग एम .: वीटीएस आरएएस, 2007.120 पी।
वैज्ञानिक परीक्षण और त्रुटि की विधि
आपका ध्यान के लिए धन्यवाद!
पुनश्च: सभी कार्य किए गए थे, Matlab R2010b के संस्करण के साथ किया गया था, लेकिन जब मैंने पहली बार R2011a के नए संस्करण के डिस्टेम्पल फ़ोल्डर में संक्षिप्त रूप से नज़र डाली, तो पहली नज़र में, मैथवर्क्स टीम का काम छोटा नहीं था। दुर्भाग्य से, मेरे पास अभी तक नया संस्करण नहीं है, लेकिन जैसे ही अवसर पैदा होता है, मैं उन नवाचारों को उजागर करने का प्रयास करूंगा जो यह हमें प्रदान कर सकते हैं। यद्यपि अब मैं माइक्रोकंट्रोलर्स के लिए सिमुलिंक मॉडल से सी कोड उत्पन्न करने में अधिक व्यस्त हूं।