2013-07-22 5 views
5

पर आईपीथॉन समांतर का उपयोग करना मैं एक बहुत ही सामान्य परिदृश्य के लिए आईपीथन समांतर का उपयोग करने की कोशिश कर रहा हूं, जहां मैं सन ग्रिड इंजन चलाने वाले क्लस्टर पर सिमुलेशन चलाने के लिए चाहता हूं, और मुझे ऐसा करने का विश्वसनीय तरीका नहीं मिल रहा है इस।सूर्य ग्रिड इंजन

यहाँ मैं क्या करने की कोशिश कर रहा हूँ है:

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

आईपीथॉन इस परिदृश्य के लिए आदर्श रूप से उपयुक्त लगता है, लेकिन सेटअप को आसानी से काम करने के लिए यह बोझिल हो रहा है। मैं आईपीसीएलस्टर का उपयोग करके नोड (20 कहें) इंजन शुरू करता हूं, और उसके बाद .json फ़ाइलों को मेरी स्थानीय मशीनों में कॉपी करता हूं जहां से मैं IPython.parallel.Client का उपयोग कर कनेक्ट करता हूं।

मैं IPClusterStart.controller_launcher_class = 'SGEControllerLauncher' और IPClusterEngines.engine_launcher_class = 'SGEEngineSetLauncher'

IPCLUSTER ठीक चल रहा प्रतीत हो रहा है की स्थापना की है; मैं ssh टर्मिनल पर सिर नोड से इस उत्पादन प्राप्त करें:

  1. अक्सर इंजन के कई नियंत्रक के बाद भी साथ रजिस्टर करने के असफल हो जायेगी:

    -- [IPClusterStart] Starting Controller with SGEControllerLauncher 
    -- [IPClusterStart] Job submitted with job id: '143396' 
    -- [IPClusterStart] Starting 4 Engines with SGEEngineSetLauncher 
    -- [IPClusterStart] Job submitted with job id: '143397' 
    -- [IPClusterStart] Engines appear to have started successfully 
    

    हालांकि, मैं इन मुद्दों है मैं उपरोक्त संदेश देखता हूं जो कहता है कि इंजन सफलतापूर्वक शुरू हो गए हैं। जब मैं 20 इंजन के साथ आईपीसीएलस्टर शुरू करता हूं, तो मैं ग्रिड इंजन कतार पर प्रदर्शित होने वाले 10-15 इंजन देख सकता हूं। मुझे नहीं पता कि अन्य इंजनों के साथ क्या होता है - कोई आउटपुट फाइल नहीं होती है। इन 10-15 इंजन जो केवल उनमें से कुछ शुरू से बाहर नियंत्रक के साथ रजिस्टर और मैं अपने उत्पादन में फाइलों पर इस देखें:

    ... [IPEngineApp] Using existing profile dir: .../.ipython/profile_sge' 
    ... [IPEngineApp] Loading url_file .../.ipython/profile_sge/security/ipcontroller-engine.json' 
    ... [IPEngineApp] Registering with controller at tcp://192.168.87.115:64909 
    ... [IPEngineApp] Registration timed out after 2.0 seconds 
    

    किसी भी विचार क्यों यह:

    ... [IPEngineApp] Using existing profile dir: .../.ipython/profile_sge' 
    ... [IPEngineApp] Loading url_file ... .ipython/profile_sge/security/ipcontroller-engine.json' 
    ... [IPEngineApp] Registering with controller at tcp://192.168.87.106:63615 
    ... [IPEngineApp] Using existing profile dir: .../.ipython/profile_sge' 
    ... [IPEngineApp] Completed registration with id 0 
    

    दूसरों पर मैं यह देख हो जाता?

  2. कभी कभी, इंजन शुरू और रजिस्टर सफलतापूर्वक लेकिन वे जब मैं उन्हें view.execute('%pylab') की तरह बहुत ही सरल और एकमात्र अपवाद मैं वापस पाने के कुछ चलाने कर मर शुरू यह है:

    [इंजन अपवाद] Traceback (सबसे हाल अंतिम कॉल करें): फ़ाइल "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/IPython/parallel/client/client.py", पंक्ति 708, _handle_stranded_msgs त्रुटि में वृद्धि करें। EngineError ("कार्य% r चलाते समय इंजन% r की मृत्यु हो गई"% (eid, msg_id)) इंजन त्रुटि: कार्य चलाने के दौरान इंजन 1 की मृत्यु हो गई 'b9601e8a-cff5-4037-b9d9-a0b93ca2f256'

  3. इंजन शुरू करना इस तरह से है कि जब तक इंजन चल रहा है, तब तक मैं नोड्स और कतार पर कब्जा कर लेता हूं, भले ही वे कुछ भी निष्पादित नहीं कर रहे हों। क्या इंजन शुरू करने का कोई आसान तरीका है ताकि जब आप कुछ स्क्रिप्ट चलाएं तो वे केवल तभी तैयार हो जाएंगे जब वे अपनी गणना के परिणाम लौटने के बाद बंद हो जाएंगे?

  4. ग्रिड इंजन हर बार एक अलग नोड पर नियंत्रक शुरू करना प्रतीत होता है, इसलिए IPCLUSTER कॉन्फ़िगरेशन फ़ाइलों में --रुज ध्वज उपयोगी नहीं है; जब भी मैं आईपीसीएलस्टर का उपयोग करता हूं तो मुझे जेएसओएन फाइलों की प्रतिलिपि बनाना पड़ता है। इससे बचने का कोई रास्ता है क्या? IPython समानांतर का उपयोग कर एक SSH कनेक्शन पर एक SGE क्लस्टर के लिए स्पष्ट रूप से समानांतर कार्य सबमिट करने:

यह अगर किसी को इस आम परिदृश्य के लिए एक सरल काम प्रवाह दे सकते हैं वास्तव में मददगार होगा। इंजन दुर्घटनाओं के लिए पुनर्वितरण को संभालने का कोई तरीका होना चाहिए, और सिमुलेशन की अवधि के लिए क्लस्टर संसाधनों का उपयोग करने का कोई तरीका होने पर भी यह अच्छा होगा।

उत्तर

1

यह थोड़ा देर हो गया है, और यह वास्तव में आपके विशिष्ट प्रश्न का उत्तर नहीं दे रहा है। हालांकि, क्या आपने pythongrid के साथ प्रयास किया है?

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