2015-07-31 13 views
6

Python'un DEAP pacakge'ını kullanıyorum ve kodumu çok çekirdekli kullanmak istiyorum ve çok işlemciyi kullanarak başarılı bir şekilde yapmak için http://deap.gel.ulaval.ca/doc/dev/tutorials/distribution.html numaralı eğiticiyi kullandım.python DEAP genetik algoritma çok çekirdekli hız

Sorum şu: 8 çekirdek kullanarak, teoride ne kadar hıza ulaşıyorum? Sormamın nedeni, kaç tane kuşak ve neslin, tek kişilik versiyonla aynı miktarda çalışabileceğine karar vermek olduğudur. Benim kodum ~ 200s çalıştırmak için ve 8 çekirdekli, şimdi ~ 0,5 saniye sürer (bu 400X hızlandırır). Herhangi bir şeyin 400X kadar hızlandığını varsayabilir miyim? Karmaşık olduğunu biliyorum, ama yardımın çok takdir edilecek.

Genel olarak, eğer herhangi biri yardımcı olabilirse, çoklu noktalamanın hesaplama akışını nasıl değiştirdiğini anlamak istedim. Her bireyin her bir neslin farklı çekirdekler üzerindeki değerlendirmesini mi gösteriyor? Yoksa kuşaklara paralel mi koşar? Bu konuda okuyabileceğim herhangi bir belge biliyorsanız, lütfen bana bildirin.

Gerekli olmadığı için bir kod örneği vermedim, çünkü bu çok üst düzey bir sorudur.

cevap

3

Her bir neslin değerlendirmesini her nesil için farklı çekirdekler üzerinde mi eşleştiriyor, yoksa nesillere paralel mi çalışıyor?

örnek böylece evaluate operasyonu eşler ...

fitnesses = toolbox.map(toolbox.evaluate, invalid_ind) 

yalnız çalışan süreç haritası vurur: bir çekirdek mevcut gelir gibi tüm invalid_ind 'ler, tek sıraya konmasını ve edilir, sıradaki sonraki kişi evaluate rutinini çalıştırmak için bu çekirdeğe atanır. Sıra boş olduğunda, tüm sonuçlar bir listeye toplanır ve fitnesses'a atanır. Bu nedenle süreç kendi başına devam eder.

Yani:

  • "Evet" farklı çekirdek üzerinde her bireyin değerlendirme ve,
  • "Hayır" öyle olduğunu En azından paralel

jenerasyon çalışmaz map yapar I asked this question'dan ne anladım. Tabii ki uygulamanıza bağlı olarak, DEAP ve cProfile deneyimim ile, CPU zamanının en büyük iki kullanıcısı, bireyleri değerlendiriyor ve kopyalıyordu.

İlgili konular