निर्भरता ग्राफ प्रत्येक मेकफ़ाइल लक्ष्य के लिए सूचीबद्ध पूर्वापेक्षाएँ पर आधारित है, जैसा कि अपेक्षा करता है। make
एक ग्राफ तैयार करेगा जहां लक्ष्य और पूर्वापेक्षाएँ शिखर हैं और प्रीरेक्स से उनके लक्ष्य तक निर्देशित किनारा है। इस तरह आने वाले किनारों की संख्या आपको बताती है कि लक्ष्य के कितने prereqs है। यदि इसमें कोई आने वाली किनार नहीं है, तो इसकी कोई आवश्यकता नहीं है।
.c
और .h
फ़ाइलों के लिए शीर्ष, उदाहरण के लिए, कोई आवक किनार नहीं होगा। वे फ़ाइलें आपकी स्रोत फाइलें हैं और उन्हें बनाने की आवश्यकता नहीं है।
यह निष्पादन के आदेश को निर्धारित करने के लिए ग्राफ़ पर topological sort निष्पादित करता है। विकिपीडिया से:
टोपोलॉजिकल सॉर्टिंग (टोपोलॉजिकल ऑर्डर) का कैननिकल एप्लिकेशन नौकरियों या कार्यों के अनुक्रम को शेड्यूल करने में है; टोपोलॉजिकल सॉर्टिंग एल्गोरिदम का पहली बार परियोजना प्रबंधन (जेनागिन 1 9 60) में शेड्यूलिंग के लिए पीआरटी तकनीक के संदर्भ में 1 9 60 के दशक में अध्ययन किया गया था। नौकरी को शिखर से दर्शाया जाता है, और एक्स से वाई तक बढ़त होती है यदि नौकरी एक्स शुरू होने से पहले जॉब एक्स पूरा किया जाना चाहिए (उदाहरण के लिए, कपड़े धोते समय कपड़े धोने की मशीन को खत्म करने से पहले कपड़े धोना चाहिए)। फिर, एक स्थलीय प्रकार एक आदेश देता है जिसमें नौकरियां करने के लिए।
एक सांस्थितिकीय तरह का सार नहीं भेजे किनारों (कोई निर्भरता) के साथ कोने खोजने के लिए और उन पहले डाल करने के लिए है। फिर उन्हें ग्राफ से हटा दें। अब आपके पास आने वाले किनारों (कोई निर्भरता नहीं) वाले चरम का एक नया सेट होगा। वे अगले हैं। और इतने पर समाप्त होने तक।(यदि आप कभी ऐसे बिंदु तक नहीं पहुंचते हैं जब ऐसे कोई शिखर नहीं होते हैं तो निर्भरता ग्राफ में एक चक्र होता है, जो एक त्रुटि स्थिति है।)
एक सामान्य मेकफ़ाइल में इसका मतलब है कि आप पहले स्रोत फ़ाइलों का निर्माण करेंगे (कुछ भी करने की आवश्यकता नहीं है सामाप्त करो)। फिर ऑब्जेक्ट फ़ाइलें जो उन स्रोत फ़ाइलों पर निर्भर करती हैं। फिर उन ऑब्जेक्ट फ़ाइलों से निर्मित पुस्तकालयों और निष्पादन योग्य।
सामान्य गैर-समांतर ऑपरेशन make
के तहत प्रत्येक पुनरावृत्ति को केवल एक ही लक्ष्य चुनने और इसे बनाने के लिए चुना जाएगा। जब यह समानांतर होता है तो यह कई निर्भरता-कम लक्ष्य को पकड़ लेगा और इसे समानांतर में बनाएगा, अनुमत एक साथ नौकरियों की संख्या तक।
तो जब make
ऑब्जेक्ट फ़ाइल चरण में कहता है, तो इसमें ग्राफ में बड़ी संख्या में शिखर होंगे जिनके पास सभी आने वाले किनारों नहीं हैं। यह जानता है कि यह ऑब्जेक्ट फ़ाइलों को समानांतर में बना सकता है और इसलिए यह n ऑब्जेक्ट फ़ाइलों को बनाने के लिए gcc
की प्रतियां बंद कर देता है।
स्रोत
2010-03-02 22:32:10
समांतरता वास्तव में कैसे किया जाता है? मुझे लगता है कि यह 'openmpi' नहीं है .... – kilojoules