Подтвердить что ты не робот

OpenCL или CUDA Какой путь?

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

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

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

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

4b9b3361

Ответ 1

OpenCL

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

CUDA

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

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

  • Простота использования. OpenCL проще использовать из коробки, но как только вы настроите среду кодирования CUDA, это почти похоже на кодирование на C.
  • Сообщество и документация - обе имеют обширную документацию и примеры, однако я думаю, что CUDA лучше.
  • Производительность - CUDA позволяет осуществлять более широкий контроль, поэтому можно более точно настроить его на более высокую производительность.
  • Будущее - трудно сказать.

Ответ 2

Мои личные переживания были:

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

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

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

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

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

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

Ответ 3

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