Другие ответы здесь довольно хороши. Я добавлю и мои 2 цента.
Одна из причин, по которой процессоры стали настолько распространенными, заключается в их гибкости. Вы можете перепрограммировать их для бесконечного множества задач. В наши дни для компаний, которые производят продукты, дешевле и быстрее вставлять небольшой ЦП или микроконтроллер во что-то и программировать его функциональность, чем разрабатывать собственные схемы для выполнения той же задачи.
Используя то же устройство, что и другие, вы можете воспользоваться преимуществами известных решений проблем, использующих то же самое устройство (или подобное). По мере развития платформы ваши решения развиваются, становятся очень зрелыми и оптимизированными. Люди, кодирующие эти устройства, также приобретают опыт и становятся очень хорошими в своем деле.
Если бы вам пришлось создавать новый тип устройства с нуля, альтернативу графическому процессору, потребовались бы годы даже для самых первых пользователей, которые действительно научились бы его использовать. Если вы подключите ASIC к вашему ЦП, как вы оптимизируете выгрузку вычислений на это устройство?
Сообщество компьютерных архитекторов гудит от этой идеи в течение нескольких лет (очевидно, оно было популярно и раньше, но недавно пережило ренессанс). Эти «ускорители» (их термин) имеют различную степень перепрограммируемости. Проблема в том, насколько узко вы определяете масштаб проблемы, которую может решить ваш ускоритель? Я даже разговаривал с некоторыми людьми, которые работали над созданием ускорителя, используя аналоговые схемы с операционными усилителями для вычисления дифференциальных уравнений. Отличная идея, но чрезвычайно узкая сфера.
После того, как у вас будет рабочий ускоритель, экономические силы решат вашу судьбу. Инерция рынка - невероятная сила. Даже если что-то является отличной идеей, возможно ли с экономической точки зрения реорганизовать ваши рабочие решения для использования этого нового устройства? Может быть, а может и нет.
GPU на самом деле ужасны для определенных типов проблем, поэтому многие люди / компании работают над другими типами устройств. Но GPU уже настолько укоренились, станут ли их устройства когда-нибудь экономически жизнеспособными? Я думаю, мы увидим.
Изменить: немного расширив мой ответ, теперь, когда я схожу с автобуса.
Пояснительным примером является проект Intel Larrabee. Это началось как параллельное устройство обработки, которое могло сделать графику в программном обеспечении; у него не было специализированного графического оборудования. Я говорил с кем-то, кто работал над проектом, и главная причина, по которой они сказали, что он провалился и был отменен (помимо ужасной внутренней политики), заключалась в том, что они просто не могли заставить компилятор создать хороший код для него. Конечно, он создал рабочий код, но если весь смысл вашего продукта - максимальная производительность, вам лучше иметь компилятор, который производит довольно оптимальный код. Это напоминает мой предыдущий комментарий о том, что нехватка глубоких знаний в области аппаратного и программного обеспечения для вашего нового устройства является большой проблемой.
Некоторые элементы дизайна Larrabee превратили его в Xeon Phi / Intel MIC. Этот продукт действительно сделал это на рынок. Он был полностью сосредоточен на распараллеливании научных и других вычислений типа HPC. Похоже, это коммерческий провал сейчас. Другой человек, с которым я говорил в Intel, подразумевал, что они просто не были конкурентоспособны по цене с GPU.
Люди пытались интегрировать логический синтез для ПЛИС в компиляторы, чтобы вы могли автоматически генерировать код для ваших ускорителей ПЛИС. Они не работают так хорошо.
Одно из мест, которое кажется действительно плодородной почвой для ускорителей или других альтернатив графическим процессорам, - это облако. Экономия масштаба, существующая в таких крупных компаниях, как Google, Amazon и Microsoft, оправдывает инвестиции в альтернативные схемы вычислений. Кто-то уже упоминал о тензорных процессорах Google. Microsoft имеет FPGA и другие компоненты в своей инфраструктуре Bing и Azure. Та же история с Амазонкой. Абсолютно логично, если шкала может компенсировать ваши затраты времени, денег и слез инженера.
Таким образом, специализация противоречит многим другим вещам (экономика, зрелость платформы, инженерный опыт и т. Д.). Специализация может значительно улучшить вашу производительность, но она сужает область применения вашего устройства. Мой ответ был сосредоточен на многих негативах, но специализация также имеет массу преимуществ. Это абсолютно необходимо проводить и исследовать, и, как я уже говорил, многие группы преследуют его довольно агрессивно.
Извините, отредактируйте еще раз: я думаю, что ваша первоначальная предпосылка неверна. Я полагаю, что это был не случай поиска дополнительных источников вычислительной мощности, а скорее случай, когда люди признали возможность. Графическое программирование является очень линейной алгеброй, и графический процессор был разработан для эффективного выполнения общих операций, таких как умножение матриц, векторные операции и т. Д. Операции, которые также очень распространены в научных вычислениях.
Интерес к графическим процессорам начался как раз тогда, когда люди осознали, что обещания, данные проектом Intel / HP EPIC, были сильно завышены (конец 90-х - начало 2000-х). Не было общего решения для распараллеливания компилятора. Поэтому вместо того, чтобы говорить «где мы находим больше вычислительной мощности, о, мы могли бы попробовать GPU», я думаю, что это было больше, «у нас есть что-то, что хорошо в параллельных вычислениях, можем ли мы сделать это более программируемым». Многие из вовлеченных людей были в сообществе научных вычислительных машин, у которых уже был параллельный код на Фортране, который они могли запускать на машинах Cray или Tera (у Tera MTA было 128 аппаратных потоков). Возможно, было движение с обеих сторон, но я только слышал упоминания о происхождении GPGPU с этого направления.