Инженерный взгляд на успех NVidia

Этоу статью можно назвать ответом инженера на другую статью об успехе NVidia, где главная роль отводится ее CEO. С моей точки зрения, это не совсем так - успех NVidia кроется совсем не в умении предвидеть тренды, каждый шаг на пути к успеху был либо ответом на спрос со стороны энтузиастов, либо ответом на текущую угрозу.

Предистория

Долгое время NVidia выпускала графические карты (GPU), и все было более-менее прозаично - они достигали переменного успеха в сравнении с ATI и другими производителями в попытках создать лучшую видеокарту. Проблема заключалась в том, что этот рынок был не очень большим.

Графические процессоры против центральных процессоров

Чтобы донести свою главную идею, мне нужно сначала рассказать, что такое видеокарта и чем она отличается от центрального процессора. Как известно, центральный процессор (CPU) содержит два важных компонента: ALU (арифметико-логическое устройство) и CU (устройство управления). ALU, грубо говоря, выполняет вычисления, а CU управляет - подает данные в ALU и указывает, что считать. Важно отметить, что на один ALU приходится один CU.

Видеокарты устроены по-другому. Особенность видеокарт в том, что они специализированы и обычно выполняют огромное количество простых однотипных вычислений. Для оптимизации этого сценария проектировщики видеокарт объединили несколько ALU в блоки под управлением одного CU. За счет сокращения числа CU и упрощения самих ALU, видеокарты содержат большое количество ALU. Их можно называть ядрами, но в отличие от CPU, ядра GPU не полноценны - у них нет выделенного CU. Может показаться, что наличие огромного числа ядер видеокарт позволяет им быть чрезвычайно производительными, но в общем случае это не так. Они производительны только в отдельных случаях, когда вычисления можно распараллелить так, что одновременно несколько ALU выполняют одни и те же операции над разными данными.

Энтузиасты шейдерных вычислений, GPGPU и CUDA

"Простаивающие" мощности GPU не могли не привлечь внимания энтузиастов. В нулевых программирование шейдеров и попытки заставить GPU выполнять общие вычисления (GPGPU - General-purpose computing on graphics processing units) были очень популярны. Я не знаю, какому инженеру NVidia пришла в голову идея создать фреймворк для таких энтузиастов, но это, безусловно, выглядит как инженерная идея. Так появилась CUDA. Изначально на нее обратили внимание исключительно шейдерные энтузиасты, и в целом она прошла почти незамеченной. Одной из причин было то, что общие вычисления все равно были неэффективны на GPU из-за нехватки CU.

Создание CUDA было важным шагом для NVidia на пути к будущему успеху. Она открыла возможность использование графических процессоров для общих вычислений. Без CUDA NVidia могла и не выжить в борьбе с Intel, но на тот момент это было еще непонятно.

NVidia наносит ответный удар

Тем временем, AMD, борясь с Intel, приобрела ATI. Вместо покупки NVidia, Intel, будучи самоуверенным монополистом, решила просто убить ее, создав свои GPU. Они были уверены, что с легкостью обойдут NVidia. Hад последней нависла угроза, и внезапно NVidia нанесла ответный удар, выйдя на рынок суперкомпьютеров и высокопроизводительных вычислений (HPC).

Intel всегда волновали бенчмарки. Их самым любимым бенчмарком для рынка HPC был linpack. Они приложили огромные усилия для его популяризации. И, оказалось, что linpack отлично параллелится на GPU. NVidia предложила создавать суперкомпьютеры с использованием своих GPU, именно благодаря уже существующему CUDA это стало возможным.

Таким образом, NVidia ворвалась на рынок HPC. Это был успех, открывший для NVidia новый рынок, и наверняка вызвавший кризис внутри Intel. Но по сравнению, с тем, чего достигнет Nvidia потом, это было весьма посредственным достижением: по бенчмаркам GPU NVidia были круты, но они подходили только для ограниченного набора задач.

Для рынка HPC NVidia стала массово выпускать вычислительные юниты на базе графических процессоров, заточенные под вычисления, а не вывод графики, как видеокарты. С их появлением NVidia стала полностью готова к грядущему успехy.

Эра искусственного интеллекта и крупнейший успех NVidia

Итак, у NVidia была CUDA, и вычислительные юниты, пригодные лишь для ограниченного числа задач. И одной из таких задач оказалась реализация алгоритма обратного распространения ошибки в нейронных сетях (backpropogation), который, грубо говоря, представляет собой linpack - простые матричные операции. Вот здесь и наступил звездный час NVidia. Успех OpenAI, которая использовала для обучения своих нейронных сетей кластер NVidia, привлек всеобщее внимание к компании, ее продукция оказалась востребованной для задач искусственного интеллекта.

Кудос ранним энтузистам GPGPU

Технически говоря, GPU изначально отлично подходили для такого типа операций. Никакого суперпредвидения CEO для этого не требовалось. Вместо этого стоит отметить роль тех энтузиастов нулевых, которые начали использовать шейдеры GPU для вычислений на видеокартах.

1717
1 комментарий

смори - сразу два лайка срубил. И за коммент, и за статью :)
Так держать, комрад

1