2010-10-31 2 views
11

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

ответ

11

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

+0

Ow. tnx .. кажется, что я загружал PyOpenCL не с официального сайта .. и вот почему я не нашел для него документацию ... –

+0

@Ai_boy: Конечно, проблем нет. –

4

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

+0

CLyther намного более незрелый, чем PyOpenCL, хотя документация выглядит превосходно. –

4

pycl является ctypes связывающиеся с OpenCL (поддерживаемым on bitbucket)

Его основная цель проста: обернуть 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, see here), но отлично работает под 10.7 и OpenCL 1.1

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

2

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

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

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

+0

PyOpenCL автор здесь. Самое главное, что я могу сделать из вашего утверждения, это то, что opencl4py не загружает libOpenCL.so во время импорта. Если это проблема (как вы утверждаете), то почему бы не импортировать PyOpenCL точно там, где это необходимо? Не уверен, что я понимаю вашу мотивацию здесь. –

+0

В качестве дополнительного комментария PyOpenCL имеет [cffi branch] (https://github.com/pyopencl/pyopencl/tree/cffi), который может запускать ядра и работать с PyPy. Это не совсем готово к прайм-тайму, но он туда добирается. –

+0

Наше приложение имеет десятки модулей, которые используют OpenCL и задерживают импорт, что делает код очень подверженным ошибкам. Каждый раз, когда кто-то импортировал pyOpenCL «раньше, чем он должен», очень сложно было отлаживать и диагностировать ошибки ...иногда :) И, конечно же, он мог работать с устройствами, отличными от NVIDIA OpenCL, на машине разработчика. – markhor

Смежные вопросы