Я ищу хорошую оболочку\библиотеку OpenCL для Python с хорошей документацией. Я пытался найти несколько... но не смог найти достаточно хорошего.
OpenCL для Python
Ответы (4)
Самый популярный и лучше всего задокументированный вариант — PyOpenCL. Он утверждает, что является полной оболочкой для OpenCL, и документация выглядит хорошо.
pycl — это привязка ctypes к OpenCL (размещенная на в битбакете)
Его основная цель проста: обернуть OpenCL таким образом, чтобы как можно больше реализаций Python могли его использовать. В настоящее время он тестируется на CPython 2.{5,6,7}, 3.2 и PyPy 1.5. Известно, что он в основном не работает на Jython, чья библиотека ctypes все еще незрелая.
Для этого мы избегаем модулей расширения и зависимостей за пределами стандартной библиотеки. В идеале такие вещи, как массивы NumPy и изображения PIL, должны просто работать, но они не должны требоваться.
В настоящее время он довольно новый. Я играл с ним недавно, и он работает хорошо. Тайминги не сделаны по сравнению с PyOpenCL, но производительность кажется вполне приемлемой.
У меня не получилось с OpenCL 1.0 в OS X 10.6 (и AMD Radeon 5870, см. здесь), но отлично работает под 10.7 и OpenCL 1.1
Что касается документации, это довольно прямая привязка к библиотекам C, поэтому любая документация будет применяться. Также "Приключения в PyOpenCL" хорош и применим почти ко всем привязкам
Мы разрабатываем opencl4py, привязки более высокого уровня. Этот проект использует CFFI, поэтому он работает на Pypy.
Основная проблема, с которой мы столкнулись при использовании pyopencl, заключается в том, что import pyopencl выполняет инициализацию OpenCL и занимает всю виртуальную память в случае драйвера NVIDIA, предотвращая правильное разветвление и эффективно отключая многопроцессорность (да, мы утверждаем, что использование pyopencl отключает многопроцессорность, по крайней мере, с NVIDIA ). opencl4py использует ленивую инициализацию OpenCL, разрешая этот «импортный ад».
Позже он получил некоторые приятные функции, такие как очень простое кэширование бинарных программ и т. д. К сожалению, документация несколько кратка. Лучший способ узнать, как это работает, — пройти тесты.