2013-06-18 24 views
8

Dört Tesla kartlı bir GPU sunucusunda işleri çalıştırmak için Kereceyi kullanmak istiyorum. Kereste çalışanını dört işçiden oluşan bir havuzla işletiyorum, böylece her kart her zaman bir iş çalıştırır.Celery'da işçi kimliğini alın

Sorunum, işçilere her bir hak talebine bir GPU nasıl yönlendirileceğidir.

device_id = os.getpid() % self.ndevices 

Ancak, bu, her zaman çalışacağı garanti edilmez işçi süreçleri zamanla yeniden olsun yani: Şu anda çalışan işlemler tüm bitişik süreç kimlikleri edeceği varsayımına dayanır. İdeal olarak, her çalışanın kimliğini doğrudan almak istiyorum. Birisi işçiden bir görevin denetlenmesinin mümkün olup olmadığını veya işlerin GPU'larda dağıtılması için farklı bir çözüm önerisinde bulunabileceğini söyleyebilir mi?

from billiard import current_process 
from celery import task 

@task 
def print_info(): 
    # This will print an int in [0..concurrency[ 
    print current_process().index 

index 0-tabanlı olduğunu ve bir işçinin olursa: Eğer CELERYD_POOL = 'processes' kullanıyorsanız

cevap

11

, işçi havuz onun 0 tabanlı süreç endeksi açığa oluyor ki, billiard tarafından ele alınır yeniden başlatılması endeksini koruyacaktır.

olsa index değerine ilişkin herhangi bir belge bulamadı: Aslında dört süreçlerini çoğaltılır bir işçinin vardır:/

+1

benim terminolojisine belirsiz olduğunu düşünüyorum. Benim aradığım şey, UNIX pidinden ziyade Kereviz (0-3) içindeki süreç kimliğidir. Birden fazla Kereviz işçisine sahip olduğumu sanıyorum, her biri işe yarayacak, ancak daha az kullanışlı olacaktı. Kimliğe nerede sahip olduğum önemli değil: Görev seviyesinde denetlenebilir veya her süreç için global bir değişken olabilir. – oceanhug

+1

Anlaşılan, çözümümden çok memnun değilim ... Denetim otoritesi ile yönetilen bazı işçilerle bir üretim dağıtımınız varsa, ancak özel bir konfigürasyon gerektiriyorsa ve otomatik olarak tek bir tekil veriye dayalı kullanılabilir kaynakları kullanmazsanız sorun yoktur. --concurrency = xxx' argümanı. Orada * bir 'current_app.pool', ama ben onunla ne yapacağımı ayarlayamıyorum ... –

+1

Edit: yepyeni bir cevap buldu \ o/ –