OpenCL для Python

Я ищу хорошую библиотеку OpenCL wrapper\для Python с хорошей документацией. Я попытался найти некоторые... но не смог найти достаточно одного.

Ответ 1

Наиболее популярным и лучшим документированным вариантом является PyOpenCL. Он утверждает, что является полной оболочкой для OpenCL, и документация выглядит хорошо.

Ответ 2

Оба CLyther и PyOpenCL look хорошо документированы для меня.

Ответ 3

pycl является привязкой ctypes к OpenCL (размещен на битбакете)

Его основная цель проста: оберните OpenCL таким образом, что многие реализации Python могут использовать это как возможно. В настоящее время он тестируется на CPython 2. {5,6,7}, 3.2 и PyPy 1.5. Известно, что в основном это не работает на Jython, чья библиотека ctypes еще незрела.

Для этого мы избегаем модулей расширения и зависимостей вне стандартной библиотеки. В идеале такие вещи, как массивы NumPy и изображения PIL, должны работать просто, но их не требуется

В настоящее время он довольно новый. Я недавно играю с ним, и он работает красиво. Не выполняется таймингов по сравнению с PyOpenCL, но производительность кажется совершенно разумной.

Я не работал у меня с OS X 10.6 OpenCL 1.0 (и AMD Radeon 5870, см. здесь), но отлично работает под 10.7 и OpenCL 1.1

Что касается документации, это довольно прямые привязки к библиотекам C, поэтому любая документация будет применяться. Также "Приключения в PyOpenCL" хороши и применимы почти ко всем привязкам

Ответ 4

Мы разрабатываем opencl4py, привязки более высокого уровня. Этот проект использует CFFI, поэтому он работает на Pypy.

Основная проблема, с которой мы столкнулись с pyopencl, заключается в том, что "import pyopencl" инициализирует OpenCL и берет всю виртуальную память в случае драйвера NVIDIA, предотвращая правильное форсирование и эффективно отключая многопроцессорность (да, мы утверждаем, что использование pyopencl отключает многопроцессорность в по крайней мере, с NVIDIA). opencl4py использует ленивую инициализацию OpenCL, разрешая этот "импортный ад".

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