2015-07-31 1 views
6

Я использую PAPAX DEAP pacakge, и я хочу использовать многоядерный код, и я использовал учебник по адресу http://deap.gel.ulaval.ca/doc/dev/tutorials/distribution.html, чтобы успешно выполнить его с использованием многопроцессорной обработки.python DEAP генетический алгоритм многоядерная скорость

Мой вопрос заключается в следующем: используя 8 ядер, насколько ускоряюсь до теории? Причина, по которой я спрашиваю, заключается в том, что я хочу решить, сколько людей и поколений я могу запустить за такое же количество времени, что и однострочная версия. Мой код использовался для запуска ~ 200 секунд и с 8 ядрами, теперь он занимает ~ 0,5 секунды (это 400-кратное ускорение). Могу ли я предположить, что что-то будет ускорено на 400X? Я знаю, что это сложно, но ваша помощь будет очень оценена.

В общем, если кто-нибудь может помочь, я хотел бы понять, как многоядерность меняет поток вычислений. Означает ли это только сопоставление оценки каждого человека по разным ядрам для каждого поколения? Или он запускает поколения параллельно? Если вы знаете какую-либо документацию, которую я мог бы прочитать об этом, сообщите мне.

Я не представил пример кода, поскольку он кажется не необходимым, потому что это очень высокий вопрос.

ответ

3

Это просто сопоставление оценки каждого отдельного пользователя по разным ядрам для каждого поколения или параллельное выполнение поколений?

Пример отображает evaluate операцию таким образом ...

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

Единственный запущенный процесс поражает карту: все invalid_ind «s маршалируются в одной очереди и, как ядро ​​приходит в наличии, следующее лицо в очереди назначается этому ядру для запуска подпрограммы evaluate. Когда очередь пуста, все результаты собираются в список и присваиваются обратно fitnesses. Отсюда процесс продолжается, он одинок.

Итак:

  • «Да» это делает карту оценки каждого индивидуума над разными ядрами и,
  • «Нет» это не запускалось поколения параллельно

По крайней мере, что я догадываюсь, когда I asked this question. В зависимости от вашего применения, конечно, в моем опыте с DEAP и cProfile, два лучших потребителя процессорного времени оценивали людей и копировали.