Почему люди используют графические процессоры для высокопроизводительных вычислений вместо более специализированного чипа?


105

Насколько я понимаю, люди начали использовать GPU для общих вычислений, потому что они являются дополнительным источником вычислительной мощности. И хотя они не являются быстрыми как ЦП для каждой операции, они имеют много ядер, поэтому их можно лучше адаптировать для параллельной обработки, чем ЦП. Это имеет смысл, если у вас уже есть компьютер, на котором установлена ​​графическая карта для обработки графики, но вам не нужна графика, и вам нужны дополнительные вычислительные мощности. Но я также понимаю, что люди покупают графические процессоры специально для увеличения вычислительной мощности, не имея намерения использовать их для обработки графики. Мне это кажется похожим на следующую аналогию:

Мне нужно подстричь траву, но моя газонокосилка слабовата. Поэтому я снимаю клетку с вентилятора, который держу в спальне, и заточаю лезвия. Я приклеиваю его к косилке и нахожу, что он работает достаточно хорошо. Спустя годы я работаю закупщиком в крупном бизнесе по уходу за газонами. У меня значительный бюджет, чтобы тратить на травосборники. Вместо того, чтобы покупать газонокосилки, я покупаю кучу фанатов. Опять же, они работают нормально, но я должен заплатить за дополнительные детали (например, клетку), которые я не буду использовать в конечном итоге. (для целей этой аналогии мы должны предположить, что газонокосилки и коробчатые вентиляторы стоят примерно одинаково)

Так почему же нет рынка для чипа или устройства, обладающего вычислительной мощностью графического процессора, а не графических издержек? Я могу придумать несколько возможных объяснений. Какой из них, если таковые имеются, является правильным?

  • Такая альтернатива была бы слишком дорогой для разработки, когда графический процессор уже является хорошим вариантом (газонокосилки не существуют, почему бы не использовать этот совершенно хороший коробочный вентилятор?).
  • Тот факт, что «G» обозначает графику, обозначает только предполагаемое использование, и на самом деле не означает, что какие-либо усилия направлены на то, чтобы сделать чип более приспособленным к обработке графики, чем любой другой вид работы (газонокосилки и коробчатые вентиляторы - это то же самое, когда Вы получаете право на это, никакие модификации не нужны, чтобы заставить один функционировать как другой).
  • Современные графические процессоры носят то же имя, что и их древние предшественники, но в наши дни высокопроизводительные графические процессоры не предназначены специально для обработки графики (современные вентиляторы с корпусом предназначены для работы в основном в качестве газонокосилок, даже если не были более старые).
  • Практически любую проблему легко перевести на язык обработки графики (траву можно подстригать, очень быстро продувая воздух).

РЕДАКТИРОВАТЬ:

На мой вопрос ответили, но, основываясь на некоторых комментариях и ответах, я чувствую, что должен уточнить свой вопрос. Я не спрашиваю, почему все не покупают свои собственные вычисления. Понятно, что большую часть времени это будет слишком дорого.

Я просто заметил, что, похоже, существует спрос на устройства, которые могут быстро выполнять параллельные вычисления. Мне было интересно, почему кажется, что оптимальным таким устройством является графический процессор, а не устройство, предназначенное для этой цели.


66
Поскольку они являются специализированными для такого рода вещи; это в основном тот же тип математики. Кроме того, nVidia создала и продала платы только для графических процессоров для людей, выполняющих этот тип массового параллельного сокращения чисел.
Гептит

7
Имейте в виду, что у нас есть специальные "единицы", добавленные к фишкам. AES делается аппаратно (я думаю) на процессорах. AVX также реализован аппаратно. Однако где вы остановитесь? Chipmaker не знает, что вам нужно, и большинство людей не имеют возможностей (технологических или финансовых) иметь свои собственные чипы, предназначенные для очень специфических задач. Графические карты, как уже говорилось, представляют собой один тип специализированной архитектуры, которая хорошо подходит для определенных задач. Они хороши не для всего - но для определенных конкретных задач и, следовательно, используются там.
DetlevCM

4
Более точная аналогия заменяет коробчатые вентиляторы комбайнами шириной 100 метров.
MooseBoys

6
Мой ПК уже имеет готовый к использованию графический процессор, а разработка и производство специального чипа обойдется мне в пару миллионов.
PlasmaHH

19
Попробуйте другую аналогию. Предположим, у нас есть боксовые вентиляторы и вертолетные винты. В нашем гипотетическом мире для применения коробочных вентиляторов требовались прогрессивно большие вентиляторы, работающие на более высоких скоростях, пока мы не получили 20-метровые вентиляторы из углеродного волокна, а массовое производство сделало их дешевыми. Затем кто-то понял, что 20-метровый вентилятор - это, по сути, вертолетный ротор с клеткой вокруг него. Это действительно так похоже.
Грэм

Ответы:


109

Это действительно комбинация всех ваших объяснений. Дешевле и проще, уже существует, а дизайн отошел от чистой графики.


Современный графический процессор можно рассматривать в основном как потоковые процессоры с некоторым дополнительным графическим оборудованием (и некоторыми ускорителями с фиксированной функцией, например, для кодирования и декодирования видео). В настоящее время в программировании GPGPU используются API, специально разработанные для этой цели (OpenCL, Nvidia CUDA, AMD APP).

За последние десять или два десятилетия графические процессоры превратились из конвейера с фиксированными функциями (в основном только для графики) в программируемый конвейер ( шейдеры позволяют писать пользовательские инструкции) в более современные API, такие как OpenCL, которые обеспечивают прямой доступ к ядрам шейдеров без сопровождающий графический конвейер.

Остальные графические биты являются второстепенными. Они настолько малы, что их стоимость не так уж и мала, и вы не несете расходов на их разработку, а вы несете расходы на дополнительный дизайн. Так что обычно этого не делается - нет вычислительно-ориентированного эквивалента большинства графических процессоров - за исключением самых высоких уровней, и они довольно дорогие.

Обычные «игровые» графические процессоры очень часто используются, потому что экономия от масштаба и относительная простота делают их дешевыми и легкими для начала. Это довольно простой путь от графического программирования до ускорения других программ с GPGPU. Кроме того, в отличие от других опций, аппаратное обеспечение легко обновлять, поскольку доступны более новые и более быстрые продукты.


В основном, выбор сводится к:

  • Универсальный процессор, отлично подходит для ветвления и последовательного кода
  • Обычный "игровой" GPU
  • Ориентированные на вычисления графические процессоры, например, Nvidia Tesla и Radeon Instinct Они часто вообще не поддерживают вывод графики, поэтому графический процессор немного ошибочен. Однако они используют ядра GPU, аналогичные обычным GPU, и код OpenCL / CUDA / APP более или менее напрямую переносим.
  • ПЛИС, которые используют совершенно другую модель программирования и имеют тенденцию быть очень дорогостоящими. Это где существенный барьер для входа существует. Они также не обязательно быстрее, чем GPU, в зависимости от рабочей нагрузки.
  • ASIC, специально разработанные схемы (аппаратные средства). Это очень очень дорого и стоит только в крайнем масштабе (мы говорим о тысячах единиц, по крайней мере), и там, где вы уверены, что программа никогда не должна будет меняться. Они редко осуществимы в реальном мире. Вам также придется перепроектировать и тестировать все это каждый раз, когда технология развивается - вы не можете просто заменить новый процессор, как вы можете с процессорами и графическими процессорами.

16
ASIC также имеет смысл, когда вычисления буквально окупаются (крипто-майнинг)
трещотка

4
На самом деле FPGA часто хуже, чем GPU. Проблема в том, что ПЛИС очень гибки; они могут реализовывать множество различных операций. Тем не менее, вычисления, как правило, являются формой математики, и на самом деле основная часть состоит всего из двух операций: сложение и умножение (вычитание и деление являются вариантами вышеописанного). GPU очень, очень хороши в этих двух операциях, гораздо больше, чем FPGA.
MSalters

19
Вы должны уточнить больше о FPGA. Идея, что есть «шаг вперед», немного вводит в заблуждение. Они более шаг в сторону.
Якк

6
Как пример последнего, у Google есть свои собственные «единицы обработки Tensor» для машинного обучения. В какой степени они настроены, неясно, но описаны как ASIC.
mbrig

4
@MSalters Одним из главных преимуществ FPGA по сравнению с графическими процессорами является производительность / ватт, которая становится все более важной, когда центры обработки данных начинают поражать стену электропитания (FPGA, как правило, более энергоэффективны). Что касается математики, ПЛИС сопоставимы с графическими процессорами в фиксированной и целочисленной арифметике, и только в математике с плавающей точкой отстают.
Уилкрофт

32

Моя любимая аналогия:

  • Процессор : гений Полимата. Может делать одну или две вещи одновременно, но эти вещи могут быть очень сложными.
  • GPU : тонна низкоквалифицированных рабочих. Каждый из них не может сделать очень большие проблемы, но в целом вы можете многое сделать. На ваш вопрос, да, есть некоторые графические издержки, но я считаю, что они незначительные.
  • ASIC / FPGA : компания. Вы можете нанять тонну низкоквалифицированных рабочих или пару гениев, или комбинацию низкоквалифицированных рабочих и гениев.

То, что вы используете, зависит от чувствительности к затратам, степени параллелизации задачи и других факторов. Из-за того, как рынок вышел на новый уровень, графические процессоры - лучший выбор для большинства высокопараллельных приложений, а центральные процессоры - лучший выбор, когда первостепенное значение имеют мощность и стоимость устройства.

Непосредственно на ваш вопрос: почему GPU над ASIC / FPGA? Вообще стоимость. Даже при сегодняшних завышенных ценах на GPU все еще (как правило) дешевле использовать GPU, чем проектировать ASIC для удовлетворения ваших потребностей. Как указывает @ user912264, существуют определенные задачи, которые могут быть полезны для ASIC / FPGA. Если у вас есть уникальное задание, и вы получите выгоду от масштабирования, тогда стоит разработать ASIC / FPGA. Фактически, вы можете разрабатывать / покупать / лицензировать проекты ПЛИС специально для этой цели. Это сделано для питания пикселей, например, в телевизорах высокой четкости.


7
Комментарии не для ответа в любом случае, и это кажется мне разумным ответом.
Раймунд Крамер

1
@BobtheMogicMoose Но может быть на несколько порядков быстрее использовать пользовательскую FPGA, предназначенную для геномного анализа, чем иметь эквивалентный код в графическом процессоре. Когда вы платите ученым за ожидание результатов, более быстрая FPGA окупается очень быстро.
doneal24

ПЛИС становятся намного более доступными и для обычного разработчика - например, у Microsoft есть решение облачного ИИ с использованием ПЛИС (Project BrainWave). AWS также предлагает несколько предложений. Любой может сдать в аренду некоторые пользовательские ПЛИС для специализированных задач, не создавая их самостоятельно, что было невозможно во многих случаях даже несколько лет назад.
Бричинс

Да, я думаю, что есть даже наборы хобби FPGA, которые сравнимы с Arduino Raspberry-Pi. Я все еще думаю, что программирование FPGA намного дороже, чем более развитые архитектуры.
BobtheMagicMoose

10

Ваша аналогия плохая. По аналогии, когда вы покупаете оборудование для крупного бизнеса по уходу за газоном, вы предполагаете, что есть хорошие газонокосилки. Это не так в вычислительном мире - графические процессоры - это лучший доступный инструмент.

Затраты на НИОКР и возможное повышение производительности специализированного чипа, вероятно, слишком высоки, чтобы оправдать его создание.

Тем не менее, я знаю, что Nvidia выпускает некоторые графические процессоры специально для вычислений общего назначения - у них не было видеовыходов - что-то вроде продажи коробочных вентиляторов с уже удаленными клетками.


9

Конечно, вы можете использовать специализированные микросхемы, либо для энергоэффективности, либо для скорости вычислений. Позвольте мне рассказать вам историю майнинга биткойнов:

  • Биткойн новый, гики мои с их процессорами.
  • Биткойн - это что-то новое, умные гики со своими графическими процессорами.
  • Биткойн теперь (вроде) известен, люди покупают FPGA.
  • Биткойн теперь известен (2013), даже новички покупают ASIC («Интегральные схемы для конкретных приложений») для эффективного майнинга.
  • Вознаграждение за блок падает (периодически), даже старые ASIC больше не приносят прибыли.

Так что нет никаких причин использовать графический процессор вместо специализированного «гигантского калькулятора». Чем больше экономические стимулы, тем больше специализируется оборудование. Однако их довольно сложно спроектировать и невозможно изготовить, если вы не производите тысячи одновременно. Если разработка чипов невозможна, вы можете купить один из них в ближайшем Walmart.

TL; DR Конечно, вы можете использовать более специализированные чипы.


1
«Конечно, вы можете использовать более специализированные чипы», но есть специализированные чипы для биткойнов (SHA-256), а затем для лайткойнов (scrypt), и это почти все. Высокопроизводительного вычислительного оборудования для других проблем не существует. (То есть с производительностью выше, чем у современных высокопроизводительных графических процессоров)
Agent_L

8

То, что вы описываете в своей аналогии, именно то, что произошло. Как только вы взяли вентилятор и заточили лезвия, чтобы попытаться использовать его в качестве газонокосилки, группа исследователей поняла: «Эй, у нас есть довольно симпатичный многоядерный процессор, давайте попробуем использовать его для вычислений общего назначения! ».

Результат был хорош, и мяч начал катиться. Графический процессор перешел от графического устройства для поддержки вычислений общего назначения, чтобы помочь в самых сложных ситуациях.

Потому что в любом случае самой требовательной к вычислениям операцией, которую мы ожидаем от компьютеров, является графика. Достаточно взглянуть на потрясающие достижения того, как игры выглядят сегодня по сравнению с тем, что они делали всего несколько лет назад. Это означает, что много усилий и денег было потрачено на разработку графических процессоров, и тот факт, что они также могут быть использованы для ускорения определенного класса вычислений общего назначения (то есть чрезвычайно параллельных), только добавил к их популярности.

Итак, в заключение, первое объяснение, которое вы предлагаете, является наиболее точным:

  • Такая альтернатива была бы слишком дорогой для разработки, когда графический процессор уже является хорошим вариантом.

Графические процессоры там, где они уже есть, они доступны каждому и работают.


5
Я должен не согласиться с тем, что «самой сложной вычислительной операцией» является графика, в зависимости, конечно, от того, кто именно «мы». Да, для обычных пользователей, но в научно-техническом сообществе есть много вещей, требующих большего, чем графика. В конце концов, приемлемая графика (как для игр) может быть получена с помощью одного ПК среднего класса и графического процессора. Значительные проблемы часто объединяют сотни или тысячи таких модулей для получения производительности в диапазоне петафлоп - и тогда проблемы все еще могут занимать дни или недели вычислительного времени.
jamesqf

Самая сложная в вычислительном отношении операция, которую я ожидаю от своего компьютера, - это техническая графика, но вычисления, основанные на структуре с движением, - это не то, о чем думает большинство людей (или разработчиков графических процессоров), когда они слышат слово «графика».
Mark

5

В частности, графические процессоры не являются «ядрами» в смысле «параллелизма задач». По большей части это происходит в форме «параллелизма данных». SIMD - это «одна инструкция, несколько данных». Это означает, что вы не будете делать это:

for parallel i in range(0,1024): c[i] = a[i] * b[i]

Это будет означать, что у вас есть 1024 указателя инструкций, выполняющих отдельные задачи с разной скоростью. SIMD, или «векторное вычисление», будет выполнять инструкции для целых массивов одновременно, более похоже на это:

c = a * b

«Циклы» находятся в инструкциях «*» и «=», а не вне инструкций. Выше будет делать это для всех 1024 элементов в то же время, в то же самое указатель инструкций для всех них. Это как три огромных регистра для a, b и c. Код SIMD чрезвычайно ограничен и хорошо работает только для задач, которые не являются чрезмерно «ветвистыми».

В реальных случаях эти значения SIMD не так велики, как 1024 элемента. Вообразите переменную, которая является бандой int32, связанной вместе. Вы можете думать о умножении и назначать в качестве реальной машинной инструкции.

int32_x64 c; int32_x64 b; int32_x64 a; c = b * a;

Настоящие графические процессоры сложнее, чем SIMD, но в этом их суть. Вот почему вы не можете просто бросить случайный алгоритм ЦП на графический процессор и ожидать ускорения. Чем больше ветвлений команд выполняет алгоритм, тем менее он подходит для графического процессора.


5

Другие ответы здесь довольно хороши. Я добавлю и мои 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 с этого направления.


Под «ускорителями» вы имеете в виду изготовленное на заказ аппаратное обеспечение или супер кластеры маломощных вычислительных узлов? Можете ли вы уточнить, предоставив ссылку на некоторые примеры аппаратного ускорителя.
Манав Мн

Извините, я думал, что ясно дал понять из контекста. Ускоритель - это общий термин для сопроцессора или разгрузочной карты. Первоначально плавающая точка находилась в сопроцессоре, а не в главном процессоре, и ее считали бы ускорителем. Графические процессоры, DSP, Xeon Phi, FPGA, когда они находятся на плате PCIe или что-то подобное, аналоговое дифференциальное уравнение, которое я упомянул, есть устройства, которые помогают в виртуализации, есть текущие исследования ускорителей нейронных сетей. Это все примеры ускорителей.
NerdPirate

4

введите описание изображения здесь

ASIC (изготовленный на заказ кремний) очень быстрый, но очень дорогой в разработке и производстве. Раньше ASIC были специфичными для конкретных целей, а CPU был одним из подходов, который позволял «программировать» компьютеры, чтобы вычислительные задачи могли выполняться программным обеспечением. Ранние процессоры давали людям возможность воспользоваться мощью ASIC без огромных затрат, программируя чип на месте. Этот подход стал настолько успешным, что дал начало (очень) быстрому компьютеру, который вы используете прямо сейчас.

Так почему же графические процессоры?

В середине 90-х годов 3DFX поняла, что задачи 3D-рендеринга были настолько специфическими, что пользовательская ASIC будет работать НАМНОГО лучше, чем ЦП. Они создали компьютерный сопроцессор, который выгружал задачи трехмерного рендеринга из CPU в этот сопроцессор, который они назвали «GPU». Конкуренция и рыночный спрос привели инновации в этом пространстве до такой степени, что графические процессоры выполняли вычисления НАМНОГО быстрее, чем процессорные, поэтому возник вопрос: «Почему я не могу использовать графический процессор для вычисления своих чисел вместо центрального процессора?» Производители графических процессоров увидели спрос и способ заработать больше денег, поэтому они начали изменять свои платформы, чтобы позволить разработчикам использовать их оборудование. Но аппаратное оборудование было настолько специфичным для конкретной цели, что были и остаются ограничения в том, что вы можете попросить сделать графический процессор. Я не буду вдаваться в подробности, почему здесь.

Так почему же не было более специализированного кремния? Почему просто графика?

Две причины: 1) Цена. У GPU был хороший рынок, и он мог это оправдать, но даже тогда это был огромный риск. Никто на самом деле не знал, сможет ли 3DFX получить прибыль (оказывается, они на самом деле не могли и перестали существовать). Даже сейчас, с размером рынка графических процессоров, на самом деле есть только 3 конкурента. 2) ЦП фактически удовлетворяли потребность в «кастомном кремнии» с расширениями инструкций. Вспомните MMX - на самом деле это была попытка Intel ускорить графику в процессоре, так как 3DFX набирал скорость. С тех пор набор команд x86 стал довольно массовым со всеми этими пользовательскими расширениями. В то время многие из этих расширений имели смысл (например, MMX), но в настоящее время они в значительной степени просто утомляют процессор. Вы не можете удалить их, потому что тогда это нарушает существующее программное обеспечение. Это' На самом деле, одна из привлекательных сторон ARM - ARM - это упрощенный набор инструкций. Существует не так много расширений инструкций, но это делает кремний меньше и дешевле в производстве.

Мне кажется, что вы могли бы заработать много денег, если бы вы могли снизить стоимость обычного кремния. Никто не работает над этим?

Существует технология, называемая FPGA - программируемая полевая вентильная матрица, которая существует с первых дней вычислений. По сути, это микрочип, который вы можете создать «на месте» с помощью программного обеспечения. Это очень крутая технология, но вся структура, необходимая для программирования микросхемы, требует много кремния и заставляет микросхемы работать на гораздо более низких тактовых частотах. ПЛИС МОЖЕТ быть быстрее, чем ЦП, если у вас достаточно кремния на кристалле И можно эффективно распараллелить задачу. Но они ограничены в том, сколько логики вы можете на них надеть. Все, кроме самых дорогих FPGA, были медленнее, чем GPU, для раннего майнинга биткойнов, но их аналоги ASIC фактически положили конец прибыльности майнинга GPU. Другие криптовалюты использовали специальные алгоритмы, которые нельзя распараллелить, поэтому FPGA и ASIC '

Основным ограничителем в FPGA является размер кремния - сколько логики вы можете разместить на чипе? Второй - это тактовая частота, потому что в FPGA сложно оптимизировать такие вещи, как горячие точки, утечки и перекрестные помехи. Новые методы изготовления свели к минимуму эти проблемы, и Intel объединилась с Altera, чтобы предоставить FPGA, которая может использоваться инженерами для использования преимуществ «пользовательского кремния» в качестве сопроцессора на сервере. Так что, в некотором смысле, это происходит.

Будут ли когда-нибудь FPGA заменять процессоры и графические процессоры?

Вероятно, не в ближайшее время. Новейшие процессоры и графические процессоры MASSIVE и кремний, настроенные на тепловые и электрические характеристики. Вы не можете оптимизировать FPGA так же, как вы можете настраивать ASIC. Если не использовать некоторые передовые технологии, процессор, скорее всего, останется ядром вашего компьютера с сопроцессорами FPGA и GPU.


1
В то время многие из этих расширений имели смысл (например, MMX), но в настоящее время они в значительной степени просто утомляют процессор. 3D-рендеринг далеко не единственный случай использования SIMD. Большая часть «веса» MMX - это исполнительные блоки, и они могут использоваться совместно с более широкими векторами, такими как SSE2, AVX2 и AVX512. Они интенсивно используются для высококачественного кодирования видео на процессорах и многих других задач, включая высокопроизводительные вычисления. Но также реализации библиотек memchr, strlen и многих других вещей. например, фильтрация массива более чем по 1 элементу за раз
Питер Кордес

3

Действительно, существуют специализированные платы для высокоскоростных вычислений, например, у Xilinx есть список из 178 плат PCI-e, использующих свои ПЛИС, и около трети этих плат являются «числовыми преобразователями» с одним или несколькими мощными чипами ПЛИС и множеством встроенных плат. плата DDR памяти. Существуют также высокопроизводительные платы DSP ( пример ), предназначенные для высокопроизводительных вычислительных задач.

Я предполагаю, что популярность графических плат связана с их стремлением к более широкой группе клиентов. Вам не нужно вкладывать средства в специальное оборудование, чтобы играть с Nvidia CUDA, поэтому к тому времени, когда у вас возникнет задача, требующая специального оборудования, графические процессоры Nvidia будут иметь конкурентное преимущество в том, что вы уже знаете, как их программировать.


2

Я думаю, что ответ на ваш вопрос зависит от того, как определить высокопроизводительные вычисления.

В общем случае высокопроизводительные вычисления связаны со временем вычислений. В таком случае мне нравится делиться ссылкой высокопроизводительного вычислительного кластера .

В ссылке указана причина использования графического процессора; Использование графических карт (или, точнее, их графических процессоров) для выполнения вычислений для грид-вычислений значительно более экономично, чем использование процессоров, хотя и менее точно.


2
Высокопроизводительные GPGPU обладают хорошей пропускной способностью для 64-битной doubleточности, а не только для 32-битной с одинарной точностью float. (Некоторые обычные графические процессоры экономят на HW для double). Все основные поставщики поддерживают математику IEEE FP (думаю, даже с ненормативной лексикой). Таким образом, нет потери точности, если вы не хотите обменять точность на производительность, например, с 16-битной FP с половинной точностью, которая имеет даже лучшую пропускную способность на некоторых аппаратных средствах (и, конечно, половину пропускной способности памяти). Высокопроизводительный код на процессорах также часто использует 32-разрядные float, чтобы получить вдвое больше элементов на SIMD-вектор и половину пропускной способности памяти.
Питер Кордес

1
@PeterCordes Я видел некоторую работу в области приблизительных вычислений, которая даже снижается до восьмибитной плавающей запятой, хотя я не думаю, что многие графические процессоры поддерживают это в аппаратном обеспечении.
JAB
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.