Генетический алгоритм python DEAP многоядерная скорость

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

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

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

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

1 ответ

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

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

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

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

Так:

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

По крайней мере, это то, что я догадываюсь, когда я задал этот вопрос. Конечно, в зависимости от вашего приложения, исходя из моего опыта работы с DEAP и cProfile, два главных потребителя процессорного времени занимались оценкой отдельных пользователей и копированием.

Другие вопросы по тегам