Преимущество Nvidia перед AMD аппаратное или программное? Программное естественно. Сейчас расскажу почему.
Еще в начале 2000-х годов люди начали экспериментировать с графическими процессорами для вычислительных задач.
Но это было трудно, потому что графические процессоры предоставляли только графические API.
Поэтому все должно быть переведено туда и обратно и оформлено как графические алгоритмы со всеми сопутствующими ограничениями.
Это было сложно и медленно. Как с точки зрения времени разработки, так и с точки зрения эффективности времени выполнения.
NVIDIA GeForce 399.24 — новые драйвера от компании
NVIDIA выпустила CUDA еще в 2006 году-API, который позволял людям программировать графические процессоры напрямую. Без необходимости делать все бессмысленные переводы.
Это сделало GPGPU жизнеспособным для реальных задач. И NVIDIA продолжала поддерживать и развивать его по сей день.
Преимущество Nvidia перед AMD аппаратное или программное? — минусы AMD
В ответ AMD выпустила экспериментальный API низкого уровня, близкий к железу.
Но он был слишком сложным в использовании, и он не прижился. Позже был Streams API, о котором никто не знал по какой-то причине.
Я предполагаю, что в тот момент все искали некую гибкость, как потенциальную пользу при переходе с CUDA. Но переход на другой Проприетарный фреймворк на самом деле не имел большого смысла.
Компания AMD в конце концов решила поддержать OpenCL в конце 2008 года. Но было уже слишком поздно. В CUDA уже было написано много кода, и поколение новых программистов GPGPU уже были знакомы с CUDA.
Для исследователей, которые гораздо больше заинтересованы в написании бумажек, чем в написании кода, не имеет смысла изучать OpenCL. Тем более когда CUDA все еще конкурентоспособна (и, возможно, лучше).
Даже если это означает, что они будут привязаны к NVIDIA и будут затем покупать более дорогие графические процессоры.
А теперь посмотрите на все популярные фреймворки машинного обучения (машинное обучение-самый большой вариант использования GPGPU). Все они имеют идеальную поддержку CUDA.
И только некоторые из них имеют экспериментальную поддержку OpenCL.
Но она всегда хуже поддерживается и имеет тонны недостающих функций.
А иногда и заметные различия в производительности. Вывод очевиден!