Я исследую способы использовать GPU для обработки данных потоковой передачи. Я имел два варианта, но не мог решить который способ пойти?
Мои criterias следующие:
Я кодирую в C и C++ в соответствии с Linux.
OpenCL
CUDA
Итог - OpenCL портативен, CUDA - это только nVidia. Однако, будучи независимым языком, CUDA намного мощнее и имеет множество действительно хороших инструментов.
Мой личный опыт:
API: OpenCL имеет немного более сложный API. Однако большую часть времени вы потратите на написание кода ядра, и здесь оба почти идентичны.
Сообщество: CUDA до сих пор имеет гораздо большее сообщество, чем OpenCL, но это, вероятно, скоро выровняется.
Документация: Оба очень хорошо задокументированы.
Производительность: Мы убедились, что драйверы OpenCL еще не полностью оптимизированы.
Будущее: будущее за OpenCL, так как это открытый стандарт, не ограниченный поставщиком или конкретным оборудованием!
Эта оценка датирована 2010 годом, поэтому, вероятно, устарела.
OpenCL полностью, если у вас нет особой причины использовать CUDA. OpenCL хорошо работает на многоядерных процессорах, таких как Intel i7, в дополнение к работе с графическими процессорами. Используя OpenCL, вы можете запускать его на гораздо более широком спектре оборудования, от сотовых телефонов Droid до вычислительных узлов IBM Power7 на крупнейшем в мире суперкомпьютере Blue Waters , который должен быть запущен в следующем году.