आर्कगिस में मल्टीकोर प्रसंस्करण के अनुकूलन के लिए तरीके


12

मैं एक डेस्कटॉप कंप्यूटर पर उपलब्ध मल्टीकोर प्रोसेसिंग पावर की पूर्ण सीमा का उपयोग करने के लिए सीखने के तरीकों में दिलचस्पी रखता हूं। आर्क कहता है कि पृष्ठभूमि जियोप्रोसेसिंग उपयोगकर्ता को कई कोर का उपयोग करने की अनुमति देता है, हालांकि, कार्यों को अनिवार्य रूप से पिछले कार्य को पूरा करने के लिए कतार में इंतजार करना पड़ता है।

क्या आर्क / पायथन में किसी ने समानांतर या मल्टीथ्रेडेड जियोप्रोसेसिंग तरीके विकसित किए हैं? क्या हार्डवेयर अड़चनें हैं जो व्यक्तिगत कार्यों पर मल्टीकोर प्रसंस्करण को रोकती हैं?

मुझे Stackoverflow में एक दिलचस्प उदाहरण मिला जिसने मेरी दिलचस्पी को पकड़ लिया, हालांकि यह एक जियोप्रोसेसिंग उदाहरण नहीं है:

from multiprocessing import Pool
import numpy

numToFactor = 976

def isFactor(x):
    result = None
    div = (numToFactor / x)
    if div*x == numToFactor:
        result = (x,div)
    return result

if __name__ == '__main__':
    pool = Pool(processes=4)
    possibleFactors = range(1,int(numpy.floor(numpy.sqrt(numToFactor)))+1)
    print 'Checking ', possibleFactors
    result = pool.map(isFactor, possibleFactors)
    cleaned = [x for x in result if not x is None]
    print 'Factors are', cleaned

1
मेरे आर्क अनुभव में, यह लगभग हमेशा या तो 1 तक उबलता है) अपने डेटा को {कोर की संख्या} विखंडू, प्रसंस्करण और पुन: संयोजन या 2) में विभाजित करके मेमोरी में सब कुछ पढ़ता है और एक्स एपीआई को थ्रेडिंग को संभालने देता है। ध्यान दें this is not meant to discourage
वाल्वलंडन

धन्यवाद वाल्वलोन शायद नई आइवी ब्रिज तकनीक और केपलर जीपीयू अधिक परिष्कृत प्रसंस्करण दृष्टिकोणों के लिए अनुमति देगा।
आरोन

यहां ESRIs एनालिसिस और जियोप्रोसेसिंग टीम पर एक उत्पाद इंजीनियर से बहुउद्देश्यीय के बारे में उपयोगी ब्लॉग का लिंक दिया गया है। blogs.esri.com/esri/arcgis/2011/08/29/multiprocessing
हारून

जवाबों:


11

यहाँ एक बहुस्तरीय चापलूसी लिपि का उदाहरण दिया गया है। प्रक्रिया बहुत सीपीयू-गहन है, इसलिए यह बहुत अच्छी तरह से स्केल करता है: आर्कगिस डेस्कटॉप के लिए आर्कपी / पाइथन के लिए बिल्डिंग शैडो बनाने के लिए पोर्टिंग एवेन्यू कोड?

इस उत्तर में कुछ और सामान्य जानकारी: क्या एक मॉडल में समवर्ती प्रक्रियाओं को चलाया जा सकता है?


11

मेरे अनुभव में सबसे बड़ी समस्या स्थिरता का प्रबंधन है। यदि आप एक ही रात में छह सप्ताह का प्रसंस्करण करते हैं तो आपके पास छह सप्ताह की अकथनीय त्रुटियां और कीड़े भी होंगे।

एक वैकल्पिक तरीका स्टैंडअलोन स्क्रिप्ट विकसित करना है जो समस्याओं के कारण के बिना स्वतंत्र रूप से चल सकता है और विफल हो सकता है:

  • डेटा को विखंडू में विभाजित करें जिसे एक कोर कोर <20 मिनट (कार्य) में संसाधित कर सकता है।
  • एक स्टैंडअलोन आर्कपी स्क्रिप्ट का निर्माण करें जो एक ही कार्य को संसाधित कर सकती है और जितना संभव हो उतना सरल है (कार्यकर्ता)।
  • कार्यों को चलाने के लिए एक तंत्र विकसित करें। पहले से मौजूद अजगर समाधान के बहुत सारे मौजूद हैं। वैकल्पिक रूप से आप एक सरल कतार के साथ अपना खुद का बना सकते हैं।
  • यह सत्यापित करने के लिए कि कोड पूरा हो चुका है, कुछ कोड लिखें। यह जाँच के रूप में सरल हो सकता है कि एक आउटपुट फ़ाइल लिखी गई है।
  • डेटा को एक साथ मर्ज करें।

1
मैंने पाया है कि यह दृष्टिकोण, जिसमें मल्टीप्रोसेसिंग मॉड्यूल का उपयोग करना शामिल हो सकता है, एक अच्छा है - कुछ एक्सटेंशन, जैसे स्थानिक विश्लेषक, यदि आप एक ही फ़ंक्शन की कई प्रतियां एक साथ चल रहे हैं, तो बहुत अच्छा काम नहीं करते हैं, इसलिए कुछ ऐसा है आप जो वर्णन करते हैं कि एक उपयोगकर्ता द्वारा नियंत्रित कतार के रूप में अनुमति देता है (यानी, एक ही समय में उन कार्यों को शेड्यूल करने से बचता है या एक ही जियोडेटैबस का उपयोग करने से बचता है, एक बार फाइल लॉकिंग कारणों से) सबसे अच्छा होने वाला है।
nicksan
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.