Как запустить Python на AMD GPU? - PullRequest
1 голос
/ 20 мая 2019

В настоящее время мы пытаемся оптимизировать систему, в которой есть как минимум 12 переменных.Общая комбинация этих переменных составляет более 1 миллиарда.Это не глубокое обучение или машинное обучение или Tensorflow или что-то еще, а произвольный расчет на данных временных рядов.

Мы реализовали наш код на Python и успешно запустили его на CPU.Мы также попробовали многопроцессорную обработку, которая также хорошо работает, но нам нужны более быстрые вычисления, так как вычисления занимают недели.У нас есть графическая система, состоящая из 6 графических процессоров AMD.Мы хотели бы запустить наш код в этой системе графического процессора, но не знаем, как это сделать.

Мои вопросы:

  1. Можем ли мы запустить наш простой код Python на моем ноутбуке с поддержкой AMD?
  2. Можем ли мы запустить одно и то же приложение на нашей системе GPU?

Мы читаем, что нам нужно настроить код для вычислений на GPU, но мы не знаем, как это сделать.

PS: Я могу добавить больше информации, если вам нужно.Я старался сделать пост максимально простым, чтобы избежать конфликта.

1 Ответ

2 голосов
/ 20 мая 2019

Существует как минимум два варианта ускорения вычислений с использованием графического процессора:

Но я обычно не рекомендую запускать код на GPU с самого начала. Расчеты на GPU не всегда быстрее. В зависимости от того, насколько они сложны и насколько хороши ваши реализации на CPU и GPU. Если вы будете следовать приведенному ниже списку, вы сможете получить хорошее представление о том, чего ожидать.

  1. Если ваш код - чистый Python (list, float, for-loop и т. Д.), Вы можете увидеть значительное ускорение (возможно, до 100 x) при использовании векторизованного кода Numpy. Это также важный шаг, чтобы выяснить, как ваш код GPU может быть реализован, поскольку вычисления в векторизованном Numpy будут иметь похожую схему. Графический процессор лучше справляется с небольшими задачами, которые можно распараллелить.

  2. Если у вас есть хорошо оптимизированный пример Numpy, вы можете попытаться получить первый взгляд на ускорение графического процессора с помощью Numba . Для простых случаев вы можете просто украсить свои функции Numpy для запуска на GPU. Вы можете ожидать ускорения от 100 до 500 по сравнению с кодом Numpy, если ваша проблема может быть распараллелена / векторизована.

  3. Возможно, вы до сих пор обходились без написания кода OpenCL C для GPU, но ваш код все еще работает на нем. Но если ваша проблема слишком сложна, вам придется написать собственный код и запустить его, используя PyOpenCL . Ожидаемое ускорение также составляет от 100 до 500 по сравнению с хорошим кодом Numpy.

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

Если у вас есть небольшой пример кода, не стесняйтесь его опубликовать.

Еще одна вещь, которую нужно сказать, это то, что CUDA часто проще в использовании, чем OpenCL. Больше библиотек, больше примеров, больше документации, больше поддержки. Nvidia с самого начала отлично поработала, не поддерживая OpenCL. Я обычно использую открытые стандарты, но мы быстро перешли на оборудование CUDA и Nvidia, когда дела стали коммерческими и коммерческими.

...