Найти тему
Adward Goncharov

Преимущество Nvidia перед AMD аппаратное или программное? Если копнуть глубоко…

Преимущество 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.

Но она всегда хуже  поддерживается и имеет тонны недостающих функций.

А иногда и заметные различия в производительности. Вывод очевиден!