![image](https://habrastorage.org/getpro/geektimes/post_images/186/4b2/e83/1864b2e83508a01e1218e949ec137bb8.png)
Судя по всему, эра GPU-вычислений наступила! У Intel всё плохо. Если вы не читали мой блог последние несколько лет достаточно регулярно, то поясню, что я [Алекс Св. Джон] стоял у истоков изначальной команды DirectX в Microsoft в далёком 1994 году, и создал Direct3D API вместе с другими первыми создателями DirectX (Крэйг Эйслер и Эрик Энгстром) и способствовал его распространению в индустрии видеоигр и у производителей графических чипов. По этой теме в моём блоге можно найти множество историй, но ту, что имеет непосредственное отношение к данному посту, я написал в 2013-м году.
История Nvidia
Думаю, что версия игр будущего от Nvidia правильная, и мне очень нравится жить в эпоху, когда я могу работать с такими потрясающими компьютерными мощностями. Мне кажется, будто я дожил до эпохи, в которой я могу прогуляться по мостику Энтерпрайза и поиграть с варп-двигателем. Причём буквально – варпами Nvidia называет минимальную единицу параллельных процессов, которую можно запустить на GPU.
Те, кто следит за биржевыми котировками, могли заметить, что акции Nvidia недавно резко пошли вверх после многих лет медленного карабкания. Мне кажется, что этот внезапный рывок объявляет революционный сдвиг в компьютерных вычислениях, представляющий кульминацию многолетнего прогресса в разработке GPGPU. До сего дня Intel удерживала монополию над вычислениями на промышленном рынке, успешно отражая атаки конкурентов на их превосходство в промышленном вычислительном пространстве. Это доминирование закончилось в этом году, и рынок видит его приближение. Чтобы понять, что происходит и почему это происходит, я вернусь назад к моим ранним годам в Microsoft.
В 90-х Билл Гейтс придумал термин «кооперенция» [Cooperatition = конкуренция + кооперация] для описания вымученных конкурентных партнёрств с другими лидерами техноиндустрии того времени. В разговорах об Intel термин всплывал особенно часто. И пока судьбы и успех Microsoft и Intel переплетались всё туже, две компании постоянно воевали друг с другом за доминирование. В обеих компаниях были команды людей, «специализировавшихся» на попытках получения преимуществ над соперником. Пол Мариц, бывший в то время исполнительным директором Microsoft, очень переживал по поводу того, что Intel может попытаться виртуализировать Windows, позволив многим другим конкурирующим ОС выйти на рынок и существовать на настольном ПК параллельно с Windows. Интересно, что Пол Мариц позже стал генеральным директором VMWARE. И действительно, Intel активно вкладывалась в такие попытки. Одной из их стратегий была попытка эмуляции на уровне ПО всей общепринятой функциональности железа, с которой OEM-производители обычно поставляли ПК – видеокарты, модемы, звуковые карты, сетевое оборудование, и т.п. Перенеся все внешние вычисления в процессор Intel, компания могла бы уничтожить продажи и рост всех возможных альтернативных вычислительных платформ, которые иначе могут вырасти, неся угрозу CPU от Intel. Конкретно анонс компанией Intel технологии 3DR в 1994 году побудил Microsoft на создание DirectX.
Я работал на команду в Microsoft, отвечавшую за стратегическое позиционирование компании в свете конкурентных угроз на рынке, «группу по связям с разработчиками» [Developer Relations Group, DRG]. Intel потребовала, чтобы Microsoft отправила своего представителя выступить на презентации 3DR. Как эксперта по графике и 3D в Microsoft, меня отправили с особой миссией оценки угрозы, которую потенциально представляла новая инициатива от Intel, и формированию эффективной стратегии борьбы с ней. Я решил, что Intel действительно пытается виртуализировать Windows, эмулируя на уровне ПО все возможные устройства обработки данных. Я написал предложение под названием «серьёзно отнестись к развлечениям», где предложил для блокирования попыток Intel сделать ОС Windows незначительной создать конкурентный потребительский рынок для новых возможностей аппаратного обеспечения. Я хотел создать новый набор драйверов Windows, позволявших проводить массивную конкуренцию на рынке железа, чтобы работа новых медиа, включая аудио, ввод данных, видео, сетевые технологии, и т.п. на создаваемом нами рынке игр для ПК зависела от собственных драйверов Windows. Intel не справилась бы с конкуренцией на свободном рынке, созданной нами для компаний, производящих потребительское железо, и поэтому не смогла бы создать CPU, способный эффективно виртуализировать всю функциональность, которую могли потребовать пользователи. Так и родился DirectX.
В этом блоге можно найти множество историй о событиях, окружавших создание DirectX, но если вкратце, то наша «злобная стратегия» удалась. Microsoft поняла, что для доминирования на потребительском рынке и сдерживания Intel необходимо было сфокусироваться на видеоиграх, после чего появились десятки производителей 3D-чипов. Прошло двадцать с чем-то лет, и среди небольшого числа выживших Nvidia совместно с ATI, с тех пор приобретённой AMD, доминировали сначала на рынке потребительской графики, а в последнее время – и на рынке промышленных вычислений.
Это возвращает нас к текущему 2017-му году, когда GPU наконец начинает полностью вытеснять процессоры x86, к которым раньше все относились с благоговением. Почему сейчас и почему GPU? Секрет гегемонии x86 состоял в успехе Windows и обратной совместимости с инструкциями x86 вплоть до 1970-х. Intel могла поддерживать и увеличивать свою монополию на промышленном рынке из-за того, что стоимость переноса приложений на CPU с любым другим набором инструкций, не занимающий никакой рыночной ниши, был слишком велик. Феноменальный набор возможностей ОС Windows, привязанной к платформе x86, укреплял рыночную позицию Intel. Начало конца наступило, когда Microsoft и Intel совместно не смогли совершить скачок к доминированию на нарождавшемся рынке мобильных вычислений. В первый раз за несколько десятилетий на рынке x86 CPU появилась трещина, которую заполнили процессоры от ARM, после чего новые, альтернативные Windows ОС от Apple и Google смогли захватить новый рынок. Почему же Microsoft и Intel не смогли совершить этот скачок? Можно найти вагон интересных причин, но в рамках данной статьи я хотел бы подчеркнуть одну – багаж обратной совместимости x86. Впервые энергоэффективность стала более важной для успеха CPU, чем скорость. Все транзисторы и все миллионы строк кода для x86, вложенные Intel и Microsoft в ПК, превратились в препятствия на пути к энергетической эффективности. Самый важный аспект рыночной гегемонии Intel и Microsoft в один момент стал помехой.
![image](https://habrastorage.org/getpro/geektimes/post_images/bd8/b95/5a9/bd8b955a998c81e63778baaea88a8aba.jpg)
Потребность Intel в постоянном увеличении скорости работы и поддержке обратной совместимости заставляла компанию тратить всё больше и больше охочих до энергии транзисторов для получения постоянно уменьшающихся приростов в скорости в каждом новом поколении процессоров x86. Обратная совместимость также серьёзно затруднила возможность Intel делать распараллеливать свои чипы. Первый параллельный GPU появился в 90-х, а первый CPU с двойным ядром Intel выпустили лишь в 2005-м. Даже сегодня самый мощный CPU от Intel справляется только с 24 ядрами, хотя в большинстве современных видеокарт стоят процессоры с тысячами ядер. GPU, изначально бывшие параллельными, не тащили с собой багаж обратной совместимости, и благодаря независимым от архитектуры технологиям API вроде Direct3D и OpenGL были свободны в инновациях и увеличении параллельности без необходимости идти на компромиссы с совместимостью или транзисторной эффективностью. К 2005 году GPU даже стали вычислительными платформами общего назначения, поддерживающими разнородные параллельные вычисления общего назначения. Под разнородностью я имею в виду то, что чипы от AMD и NVIDIA могут исполнять одни и те же скомпилированные программы, несмотря на совершенно различные низкоуровневую архитектуру и набор инструкций. И в то время, когда чипы от Intel добивались всё уменьшающихся скачков производительности, GPU удваивали скорость работы каждые 12 месяцев, уменьшая при этом энергопотребление в два раза! Экстремальная параллелизация позволяла очень эффективно использовать транзисторы, обеспечивая каждому очередному добавленному к GPU транзистору возможность эффективного влияния на скорость работы, в то время как всё большее количество растущих в количестве транзисторов x86 не занималось делом.
И хотя GPU всё чаще вторгались на территорию промышленных суперкомпьютеров, производства медиа и VDI, основной поворот на рынке произошёл, когда Google стала эффективно использовать GPU для тренировки нейросетей, способных на весьма полезные вещи. Рынок понял, что ИИ станет будущим обработки больших данных и откроет огромные новые рынки автоматизации. GPU идеально подходили для обеспечения работы нейросетей. До этого момента Intel успешно полагалась на два подхода, подавлявших растущее влияние GPU на промышленные вычисления.
1. Intel оставляла скорость шины PCI на низком уровне и ограничивала количество путей ввода-вывода, поддерживаемое их процессором, тем самым гарантируя, что GPU всегда будут зависеть от процессоров Intel в обработке их нагрузки и останутся отделены от различных ценных приложений реального времени высокоскоростных вычислений из-за задержек и ограничений пропускной способности PCI. Пока их CPU был способен ограничивать доступ приложений к быстродействию GPU, Nvidia томилась на том конце PCI-шины без доступа к многим практически полезным промышленным нагрузкам.
2. Обеспечивала дешёвый GPU с минимальной функциональностью на потребительском процессоре, чтобы изолировать Nvidia и AMD от премиального игрового рынка и от всеобщего принятия рынком.
Растущая угроза со стороны Nvidia и неудавшиеся попытки самой Intel создать суперкомпьютерные ускорители, совместимые с x86, заставила Intel избрать иную тактику. Они приобрели Altera и хотят включать программируемые FPGA в следующее поколение процессоров от Intel. Это хитроумный способ сделать так, чтобы процессор от Intel поддерживал большие возможности I/O по сравнению с ограниченным шиной PCI железом от конкурентов, и чтобы GPU не получал никаких преимуществ. Поддержка FPGA давала Intel возможность идти в направлении поддержки параллельных вычислений на их чипах, не играя в ворота растущего рынка приложений, использующих GPU. Она также позволяла производителям промышленных компьютеров создавать железо высокой специализации, всё ещё зависящее от x86. Это был гениальный ход со стороны Intel, поскольку он исключал возможность проникновения GPU на промышленный рынок сразу по нескольким направлениям. Гениальный, но, скорее всего, обречённый на провал.
Пять последовательных новостей описывают причину, по которой я уверен, что вечеринка x86 закончится в 2017 году.
1. Фонд VisionFund от SoftBank получил инвестиций в размере $93 млрд от компаний, желающих встать на место Intel
2. SoftBank купил ARM Holdings за $32 млрд
3. SoftBank купил акций Nvidia на $4 млрд
4. Nvidia запускает Project Denver [кодовое название для микроархитектуры от Nvidia, реализующей набор инструкций ARMv8-A 64/32-bit, используя комбинацию простого аппаратного декодера и программного двоичного транслятора c динамической рекомпиляцией / прим. перев.]
5. NVIDIA анонсировала Xavier Tegra SOC с Volta GPU с 7 млрд транзисторов, 512 CUDA Cores и 8 ARM64 Custom Cores – мобильный чип ARM/Hybrid с ядрами ARM, ускоряемыми при помощи GPU.
Почему эта последовательность событий важна? Именно в этом году первое поколение самостоятельных GPU вышло на рынок в широкий доступ, и способно запускать свои собственные ОС без препятствий в виде PCI. Nvidia больше не нужен процессор x86. ARM обладает внушительным количеством потребительских и промышленных ОС и перенесённых на них приложений. Все промышленные и облачные рынки переходят на чипы от ARM в качестве контроллеров для большого спектра своих рыночных решений. В чипы ARM уже интегрированы FPGA. Чипы ARM потребляют мало энергии, уступая в производительности, но GPU чрезвычайно быстры и эффективны, так что GPU могут обеспечить процессорную мощность, а ядра ARM – обрабатывать нудные операции IO и UI, не требующие вычислительной мощности. Всё большему количеству приложений, работающих с большими данными, высокопроизводительными вычислениями, машинным обучением уже не нужна Windows, и они не работают на x86. 2017 – это год, когда Nvidia сорвётся с поводка и станет по-настоящему жизнеспособной конкурентной альтернативой промышленным вычислениям, основанным на x86, на ценных новых рынках, не приспособленных для решений на базе x86.
Если процессор ARM недостаточно мощный для ваших нужд, то IBM в сотрудничестве с Nvidia собирается производить новое поколение CPU Power9 для обработки больших данных, работающих со 160-ю линиями PCIe.
![](https://habrastorage.org/getpro/geektimes/post_images/cee/ddd/356/ceeddd356c1ba3d5b6c4b8b7a61c4cf7.png)
AMD также запускает новый Ryzen CPU, и, в отличие от Intel, у AMD нет стратегического интереса задушить быстродействие PCI. Их потребительские чипы поддерживают 64 линии PCIe 3.0, а профессиональные – 128. AMD также запускает новый HIP кросс-компилятор, благодаря которому приложения для CUDA становятся совместимыми с GPU от AMD. Несмотря на то, что эти две компании конкурируют между собой, обе они выиграют от смещения Intel на промышленном рынке с альтернативными подходами к GPU-вычислениям.
Всё это означает, что в ближайшие годы решения на базе GPU будет захватывать промышленные вычисления с возрастающей скоростью, а мир настольных интерфейсов всё больше будет полагаться на облачную визуализацию или работу на мобильных процессорах ARM, поскольку даже Microsoft анонсировала поддержку ARM.
![](https://habrastorage.org/getpro/geektimes/post_images/859/694/4fb/8596944fb6c2c6b213e7e6cec3b56604.png)
Сложив всё вместе, я предсказываю, что через несколько лет мы будем слышать лишь про битву между GPU и FPGA за преимущество в промышленных вычислениях, в то время как эра CPU будет постепенно заканчиваться.