2015-07-31 17 views
6

Sto usando il pacakge DEAP di Python e voglio il multi-core del mio codice e ho usato il tutorial su http://deap.gel.ulaval.ca/doc/dev/tutorials/distribution.html per farlo con successo usando il multiprocessing.python DEAP algoritmo genetico velocità multi-core

La mia domanda è la seguente: utilizzando 8 core, quanta velocità ho in teoria? Il motivo per cui lo chiedo è perché voglio decidere quanti individui e generazioni posso eseguire nella stessa quantità di tempo della versione single-core. Il mio codice usato per prendere ~ 200s per funzionare e con 8 core, ora richiede ~ 0,5 secondi (questo è un aumento di velocità 400X). Posso supporre che qualcosa verrà accelerato di 400X? So che è complesso, ma il tuo aiuto sarà molto apprezzato.

In generale, se qualcuno può aiutare, ho voluto capire in che modo il multicoring modifica il flusso del calcolo. Mappa semplicemente la valutazione di ogni individuo su diversi core per ogni generazione? Oppure gestisce generazioni in parallelo? Se sai di qualsiasi documentazione che potrei leggere su questo, per favore fatemelo sapere.

Non ho fornito un esempio di codice in quanto non sembra necessario perché si tratta di una domanda di livello molto elevato.

risposta

3

mappa semplicemente la valutazione di ogni individuo su diversi core per ogni generazione o esegue generazioni in parallelo?

L'esempio mappe dell'operazione evaluate così ...

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

il processo in esecuzione solitario colpisce la mappa: tutte le invalid_ind 's sono marshalling in un unico coda e, come un nucleo arriva a disposizione, il prossimo individuo in coda viene assegnato a quel nucleo per eseguire la routine evaluate. Quando la coda è vuota, tutti i risultati vengono riuniti in un elenco e assegnati a fitnesses. Quindi il processo continua su è solitario.

Quindi:

  • "Sì" lo fa mappare la valutazione di ogni individuo su diversi core e,
  • "No" non viene eseguito generazioni in parallelo

Almeno questo è quello che suppongo da quando I asked this question. A seconda dell'applicazione, naturalmente, nella mia esperienza con DEAP e cProfile, i primi due consumatori del tempo di CPU stavano valutando le persone e la copia.

Problemi correlati