OpenCL или CUDA, Который способ пойти?

Я исследую способы использовать GPU для обработки данных потоковой передачи. Я имел два варианта, но не мог решить который способ пойти?

Мои criterias следующие:

  1. Простота использования (хороший API)
  2. Сообщество и документация
  3. Производительность
  4. Будущее

Я кодирую в C и C++ в соответствии с Linux.

22
задан systemsfault 15 April 2010 в 12:54
поделиться

3 ответа

OpenCL

  • с интерфейсом из вашего производственного кода
  • переносимость между различным графическим оборудованием
  • ограниченные операции, но заранее подготовленные ярлыки

CUDA

  • отдельный язык (CUDA C)
  • только оборудование nVidia
  • почти полный контроль над кодом (кодирование на C-подобном языке)
  • множество инструментов профилирования и отладки

Итог - OpenCL портативен, CUDA - это только nVidia. Однако, будучи независимым языком, CUDA намного мощнее и имеет множество действительно хороших инструментов.

  1. Простота использования - OpenCL проще использовать из коробки, но после настройки среды кодирования CUDA это почти похоже на кодирование на C.
  2. Сообщество и документация - оба имеют обширный документация и примеры, но я думаю, что у CUDA лучше.
  3. Производительность - CUDA обеспечивает больший контроль, следовательно, его можно лучше настроить для повышения производительности.
  4. Будущее - сказать сложно.
36
ответ дан 29 November 2019 в 03:53
поделиться

Мой личный опыт:

  1. API: OpenCL имеет немного более сложный API. Однако большую часть времени вы потратите на написание кода ядра, и здесь оба почти идентичны.

  2. Сообщество: CUDA до сих пор имеет гораздо большее сообщество, чем OpenCL, но это, вероятно, скоро выровняется.

  3. Документация: Оба очень хорошо задокументированы.

  4. Производительность: Мы убедились, что драйверы OpenCL еще не полностью оптимизированы.

  5. Будущее: будущее за OpenCL, так как это открытый стандарт, не ограниченный поставщиком или конкретным оборудованием!

Эта оценка датирована 2010 годом, поэтому, вероятно, устарела.

17
ответ дан 29 November 2019 в 03:53
поделиться

OpenCL полностью, если у вас нет особой причины использовать CUDA. OpenCL хорошо работает на многоядерных процессорах, таких как Intel i7, в дополнение к работе с графическими процессорами. Используя OpenCL, вы можете запускать его на гораздо более широком спектре оборудования, от сотовых телефонов Droid до вычислительных узлов IBM Power7 на крупнейшем в мире суперкомпьютере Blue Waters , который должен быть запущен в следующем году.

6
ответ дан 29 November 2019 в 03:53
поделиться