2013-08-24 5 views
8

Недавно я обнаружил мощь GP-GPU (универсального графического процессора) и хочу воспользоваться им для выполнения «тяжелых» научных и математических вычислений (которые в противном случае требуют больших кластеров CPU) на одиночный машина.Начало работы с PyOpenCL

Я знаю, что на графическом процессоре имеется несколько интерфейсов, наиболее заметными из которых являются CUDA и OpenCL. У последнего есть преимущество против CUDA для работы на большинстве видеокарт (NVIDIA, AMD, Intel), а не только с картами NVIDA. В моем случае у меня есть обычный Intel 4000 GPU, который, похоже, хорошо сотрудничает с OpenCL.

Теперь мне нужно научиться работать с PyOpenCL, чтобы получить его дальше! Итак, возникает вопрос:

Как я могу начать работу с PyOpenCL? Каковы предпосылки? Должен ли я действительно быть опытным в Python и/или OpenCL?

Мой фон в fortran, и на самом деле мне нужно перевести и распараллелить длинный код fortran на python (или pyopencl), который в основном касается решения PDE и диагонализирующих матриц.

Я прочитал два соответствующих сайта http://enja.org/2011/02/22/adventures-in-pyopencl-part-1-getting-started-with-python/ и http://documen.tician.de/pyopencl/, но они не очень полезны для новичков (т. Е. Манекенов).

Я просто не знаю с чего начать. Я не стремлюсь стать экспертом в этой области, просто чтобы узнать, как можно распараллелить простую математику и линейную алгебру на pyopencl.

Любые советы и помощь приветствуются!

+0

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

ответ

8

Кажется, что вы ищете самый быстрый и эффективный путь изучения PyOpenCL. Вначале вам не нужно знать OpenCL (сложная часть), но при запуске будет полезно знать Python.

Для быстрого обучения синтаксиса Python, я рекомендую Python трек Codecademy в: http://www.codecademy.com/tracks/python

Затем параллельное программирование курс Udacity является отличным местом, чтобы начать с GPGPU (даже если курс преподается в CUDA). https://www.udacity.com/course/cs344 Этот курс научит вас фундаментальным концепциям GPGPU очень быстро. Вам не понадобится GPU NVIDIA для участия, потому что все оценки курса проводятся онлайн.

После (или во время) курс Udacity, я рекомендую вам прочитать, запустить и настроить PyOpenCL примеры кода: https://github.com/inducer/pyopencl/tree/master/examples

+0

благодарю вас за советы. Я вижу, что это обсуждение - несколько лет. Было ли еще что-то лучше? –

+0

@ Stéphane Я подозреваю, что этот совет остается актуальным, потому что OpenCL и параллельное программирование не особенно быстрые. OpenCL - это подмножество C инструкций на физическом оборудовании, что делает его гораздо менее текучей ситуацией, чем что-то вроде Javascript, работающего в веб-браузерах. – benshope

5

Независимо от языка принятия для вычислений GPGPU, таких как Java, C/C++, Python, я бы порекомендовал вам сначала начать с основ GPGPU-вычислений и OpenCL.

Вы можете использовать следующие ресурсы, все из которых ориентированы на C/C++, но вы должны дать достаточно знаний об оборудовании OpenCL, GPGPU, чтобы вы начали.

  1. AMD OpenCL University Tool kit

  2. Hetergeneous Computing with OpenCL Book 2nd Edition

  3. NVIDIA OpenCL pages is another Excellent resorce

  4. Streamcomputing.eu has nice openCL starter articles.

  5. Intel OpenCL SDK tutorial

PyOpenCL конкретных

  1. OpenCL in Action: How to Accelerate Graphics and Computation есть глава о PyOpenCL
  2. OpenCL Programming Guide имеет главу PyOpenCL

Обе книги содержат OpenCL 1.1 реализацию, но она должна быть хорошей отправной точкой для вы.

1

Как кто-то новым для программирования GPU я нашел соответствующие статьи вы упомянули довольно простым, хотя я нашел образец кода отлично работал из командной строки, но не в Eclipse с Anaconda. Я думаю, это может быть потому, что Eclipse pyopencl из anaconda отличается от версии командной строки, и мне еще предстоит решить, как это решить.

Для изучения python существует большое количество ресурсов в Интернете, включая бесплатные электронные книги.

https://wiki.python.org/moin/BeginnersGuide http://codecondo.com/10-ways-to-learn-python/

должны быть хорошими стартеров. Если вы используете Eclipse, вы должны установить pydev. В любом случае установите Anaconda https://docs.continuum.io/anaconda/install, так как это сэкономит вам много хлопот.

Я оцениваю неделю или около того, чтобы достичь уровня владения языком, который вам нужен в Python, если вы picj несколько простых мини-проектов. Вы также можете обнаружить, что с записью numpy и scipy и, возможно, ipython вам может не понадобиться программировать на GPU

Эти ссылки могут помочь вам избежать программирования графического процессора или, по крайней мере, задержать его, чтобы изучить его. Имейте в виду, что Чет стоимость переключения между ядрами означает, что вы ВЗ назначить singificant объем работы каждого ядра

http://blog.dominodatalab.com/simple-parallelization/ https://pythonhosted.org/joblib/parallel.html

Вообще я считаю его более эффективным, если меньше удовольствия, чтобы узнать только одну вещь время.

Надеюсь, это поможет.