Оборудование для многопроцессорной обработки Python - PullRequest
1 голос
/ 08 апреля 2019

У меня есть задача, где мне нужно запускать одну и ту же функцию на разных панелях данных панд.Я загружаю все кадры данных в список, а затем передаю его в Pool.map с помощью модуля multiprocessing.Сам код функции в максимально возможной степени векторизован, содержит несколько предложений if / else и никаких матричных операций.

В настоящее время я использую 10-ядерный xeon и хотел бы ускорить процесс, в идеале передавая его.от Pool(10) до Pool(xxx).Я вижу две возможности:

  • обработка графического процессора.Из того, что я прочитал, я не уверен, что смогу добиться того, чего хочу, и в любом случае потребуется много изменений кода.

  • Xeon-Phi.Я знаю, что это прекращается, но, предположительно, адаптация кода проще, и если бы это действительно так, я бы с радостью его получил.

На каком пути мне следует сосредоточиться?Любые другие альтернативы?

Программное обеспечение: Ubuntu 18.04, Python 3.7.Аппаратное обеспечение: чипсет X99, 10-ядерный Xeon (без HT)

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Потребовалось некоторое время, но после того, как я изменил все это на numpy и немного увеличил векторизацию, мне удалось увеличить скорость более чем в 20 раз - так что спасибо Полу.max9111 спасибо тоже, посмотрю на нумбу.

0 голосов
/ 08 апреля 2019

Вы можете положиться на новую платформу Intel 2066 или Xeon.С новейшим AVX512 они значительно ускорили обработку NumPy (Numpy является основой панд).Проверьте: https://software.intel.com/en-us/articles/the-inside-scoop-on-how-we-accelerated-numpy-umath-functions

Прежде всего, попробуйте перейти к вычислениям на основе числа (даже с простыми значениями в серии), это может повысить скорость обработки до 10x

Вы также можете попытаться получить материнскую плату с двумя процессорами и получить больше распараллеливания для вычислений.

В большинстве случаев узким местом является не обработка данных, а операции ввода-вывода - чтение с диска в память.Это тоже будет проблемой при использовании графического процессора.

...