2013-07-22 13 views
5

Sun Grid Engine çalıştıran bir kümede simulasyonları çalıştırmak istediğim çok yaygın bir senaryo için IPython Parallel'i kullanmaya çalışıyorum ve bunu yapmanın güvenilir bir yolunu bulamıyorum. bu.IPython'u Sun Grid Engine üzerinde Paralel Kullanılıyor

İşte yapmak çalışıyorum budur:

birkaç farklı parametre değerleriyle (Numpy dizileri kullanarak) sayısal simülasyonlar çalıştırmak istediğiniz - görevler/'utanç verici' paralel belli. Grid Engine çalıştıran kümenin baş düğümüne erişim (ssh aracılığıyla). Şimdiye kadar, QSUB komutuyla kabuk betikleri çalıştırıyordum, fakat bu oldukça beceriksiz (düğüm çöküyor vb.) Ve tüm bunları Python'da bir yol arıyordum.

IPython bu senaryo için ideal olarak uygun görünmektedir, ancak kurulumun sorunsuz çalışmasını sağlamak gayet zahmetlidir. IP düğümünü kullanarak n (20) motorlarını baş düğümde başlatıyorum ve daha sonra .json dosyalarını IPython.parallel.Client kullanarak bağlandığım yerel makinelerime kopyalarım. Ben IPClusterStart.controller_launcher_class = 'SGEControllerLauncher' ve

IPCLUSTER ince çalışıyor gözüküyor IPClusterEngines.engine_launcher_class = 'SGEEngineSetLauncher' belirledik

; Ben ssh terminal üzerindeki kafa düğümünden sonuç alırsınız: motorların birçok kontrolörü sonra bile kayıt için başarısız olur, çok sık

  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 
    

    Ancak, bu sorunları var Motorların başarılı bir şekilde başladığını söyleyen yukarıdaki mesajı görüyorum. IPCLUSTER'ı 20 motorla başlattığımda, Grid Engine kuyruğunda 10 - 15 motorun olduğunu görebiliyorum. Diğer motorlara ne olduğu hakkında hiçbir fikrim yok - çıktı dosyası yok. Sadece bazıları başlamak bu 10-15 motorların dışında kontrolörü ile kayıt ve onların çıkış dosyalarda bu bkz:

    ... [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 
    

    herhangi bir fikir neden bu: Diğerlerinde

    ... [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 
    

    bunu gördüm olur?

  2. Bazen motorları başlatmak ve başarılı bir şekilde kayıt ama onları çok view.execute('%pylab') gibi basit ve geri almak tek istisnası şey danışmak yaparken onlar ölmeye başlayınca şudur:

    [Motor İstisna] traceback (en son son arama tarihi: Dosya "/Library/Frameworks/EPD64.framework/Versions/7.3/lib/python2.7/site-packages/IPython/parallel/client/client.py", satır 708, _handle_stranded_msgs içinde artış hatası. EngineError ("Motor% r görev% r çalışırken öldü"% (bayt, msg_id)) EngineError: Motor çalışırken görev 1 'b9601e8a-cff5-4037-b9d9-a0b93ca2f256'

  3. Motorları bu şekilde çalıştırmak, herhangi bir şey yapmasalar bile, motorlar çalışırken düğümleri ve kuyrukları işgal ettiğim anlamına gelir. Motorları çalıştırmanın kolay bir yolu var mı? Böylece sadece bir komut dosyasını çalıştırmak istediğinizde kendiliğinden doğacaklar ve hesaplamalarının sonucunu döndürdüklerinde kapanacaklar mı?

  4. Izgara Motor Farklı bir düğüm üzerinde her zaman kontrolörü başlatmak gibi görünüyor, bu nedenle IPCLUSTER yapılandırma dosyalarında --ruse bayrak kullanışlı değildir; IPCLUSTER'ı her kullandığımda JSON dosyalarını kopyalamam gerekiyor. Bundan kaçınmanın bir yolu var mı? Bir SSH bağlantısı üzerinden bir SGE kümeye açıkça paralel işlerini göndermek için ipython paralel kullanarak: Birisi bu ortak senaryosu için basit bir iş akışı verebilir eğer

Gerçekten yararlı olacaktır. Orada motor çöker resubmission işleme bir yolu olmalı ve sadece simülasyon süresince küme kaynaklarını kullanmak için bir yol olup olmadığını o da güzel olurdu.

cevap

1

Bu biraz geç geliyor ve aslında özel soruya cevap vermiyor. Ancak, pythongrid ile denediniz mi?