OpenCL или CUDA Какой путь? - PullRequest
22 голосов
/ 15 апреля 2010

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

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

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

Я буду кодировать на C и C ++ под Linux.

Ответы [ 3 ]

36 голосов
/ 15 апреля 2010

OpenCL

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

* CUDA 1014 *

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

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

  1. Простота использования - OpenCL проще в использовании "из коробки", но после настройки среды кодирования CUDA это почти похоже на кодирование в C.
  2. Сообщество и документация - оба имеют обширную документацию и примеры, однако я думаю, что CUDA лучше.
  3. Производительность - CUDA обеспечивает больший контроль, следовательно, может быть лучше настроен для более высокой производительности.
  4. Будущее - трудно сказать на самом деле.
17 голосов
/ 15 апреля 2010

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

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

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

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

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

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

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

6 голосов
/ 01 июля 2010

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

...