2010-04-15 2 views
22

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

Мои критериями являются следующие:

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

Я код в C и C++ под linux.

+1

См. Также: http://stackoverflow.com/questions/2384930 –

ответ

36

OpenCL

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

CUDA

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

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

  1. Удобство использования - OpenCL проще в использовании из коробки, но как только вы настройки среды кодирования CUDA это почти как кодирование в С.
  2. сообщество и документация - оба имеют обширная документация и примеры, однако я думаю, что CUDA лучше.
  3. Производительность - CUDA позволяет осуществлять большой контроль, поэтому может быть лучше настроена для более высокой производительности.
  4. Будущее - трудно сказать действительно.
+9

На самом деле есть еще одно преимущество в использовании OpenCL, оно также может распараллелить задачи в процессоре. – systemsfault

+0

@ holydiver, действительная точка, но вы спросили о GPU :) –

+4

@holydiver, в этом духе вы могли бы сказать, что ни Windows, ни MacOS X не имеют светлого будущего:> –

17

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

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

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

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

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

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

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

6

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

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