Opencl или Cuda, какой путь?
Вопрос
Я расследую способы использования GPU, чтобы обработать потоковые данные. У меня было два варианта, но не смог решить, какой путь идти?
Мои критерии следующие:
- Простота использования (хорошая API)
- Сообщество и документация
- Представление
- Будущее
Я код в C и C ++ под Linux.
Решение
Opencl
- Сопряжено из вашего производственного кода
- Портативный между различными графическими оборудованием
- Ограниченные операции, но предварительно обработанные ярлыки
Куда
- Отдельный язык (CUDA C)
- Только оборудование NVIDIA
- Почти полный контроль над кодом (кодирование в C-похожем на язык)
- Много профилирования и инструментов отладки
Нижняя линия - OpenCL портативный, CUDA только является NVIDIA. Однако, будучи независимым языком, CUDA гораздо мощнее и имеет кучу действительно хороших инструментов.
- Простота использования - Opencl легче использовать из коробки, но как только вы настроите среду кодирования CUDA, это почти похоже на кодировку в C.
- Сообщество и документация - Оба имеют обширную документацию и примеры, однако я думаю, что CUDA лучше.
- Представление - CUDA позволяет для большего контроля, следовательно, может быть лучше тонкой настроения для более высокой производительности.
- Будущее - Трудно сказать на самом деле.
Другие советы
Мой личный опыт был:
API: Opencl имеет чуть более сложный API. Однако в большинстве случаев вы будете тратить с написания кода ядра, и здесь оба практически идентичны.
Сообщество: CUDA имеет гораздо большую общину, затем opencl upl up til теперь, но это, вероятно, вообще будет даже выходить.
Документация: Оба очень хорошо документированы.
Производительность: Мы сделали опыт, что водители OpenCL еще не полностью оптимизированы.
Будущее: будущее лежит в OpenCL, так как он является открытым стандартом, не ограничиваемым поставщиком или конкретному оборудованию!
Эта оценка составляется с 2010 года, так что, вероятно, устарело.
Opencl полностью, если у вас нет конкретной причины использования CUDA. OpenCL хорошо работает на многоцентах, таких как Intel I7, в дополнение к запуску на GPU. Используя OPENCL, вы можете запустить его на гораздо более широком диапазоне оборудования из мобильных телефонов Droid к IBM Power7 Computed узлам крупнейшего в мире суперкомпьютера, Голубые воды, который должен прийти в онлайн в следующем году.