Чому люди використовують GPU для високоефективних обчислень замість більш спеціалізованого чіпа?


105

З мого розуміння, люди почали використовувати GPU для загальних обчислень, оскільки вони є додатковим джерелом обчислювальної потужності. І хоча вони не швидкі, як процесор для кожної операції, у них багато ядер, тому вони можуть бути краще адаптовані для паралельної обробки, ніж процесор. Це має сенс, якщо ви вже володієте комп'ютером, який має графічний процесор для обробки графіки, але графіка вам не потрібна, і ви хочете трохи більше обчислювальної потужності. Але я також розумію, що люди купують GPU спеціально для додавання обчислювальної потужності, не маючи намір використовувати їх для обробки графіки. Мені це здається подібним до наступної аналогії:

Мені потрібно скосити траву, але моя газонокосарка в'яла. Тому я знімаю клітку з вентилятора коробки, яку тримаю в своїй спальні, і загострюю леза. Я провожу стрічку до своєї косарки, і я вважаю, що вона працює досить добре. Через роки я завідуюча великим бізнесом по догляду за газонами. У мене є значний бюджет, який потрібно витратити на травостої. Замість того, щоб купувати газонокосарки, я купую купу вентиляторів коробки. Знову вони працюють чудово, але я повинен заплатити за додаткові частини (наприклад, клітку), які я не закінчу. (для цілей цієї аналогії ми повинні припустити, що газонокосарки та вентилятори коробки коштують приблизно однаково)

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

  • Таку альтернативу було б надто дорого розробити, коли GPU вже чудовий варіант (газонокосарки не існують, чому б не використати цей ідеально хороший вентилятор коробки?).
  • Той факт, що "G" означає графіку, позначає лише призначене використання, і насправді не означає, що будь-які зусилля спрямовані на те, щоб чіп краще адаптувався до обробки графіки, ніж будь-який інший вид роботи (газонокосарки та вентилятори коробки - це те саме, що ви переходите до нього; жодні зміни не потрібні, щоб одна функціонувала, як і інша).
  • Сучасні графічні процесори носять таку ж назву, що і їхні древні попередники, але в наші дні висококласні не розроблені спеціально для обробки графіки (сучасні вентиляторні коробки призначені для роботи в основному як газонокосарки, навіть якщо старші не були).
  • Легко перекласти будь-яку проблему на мову обробки графіки (траву можна порізати, подуваючи повітря дуже швидко).

Редагувати:

На моє запитання відповіли, але грунтуючись на деяких коментарях та відповідях, я вважаю, що варто уточнити своє запитання. Я не запитую, чому кожен не купує власні обчислення. Зрозуміло, що це було б занадто дорого у більшості випадків.

Я просто зауважив, що, здається, є попит на пристрої, які можуть швидко виконувати паралельні обчислення. Мені було цікаво, чому здається, що оптимальним таким пристроєм є блок обробки графіки, на відміну від пристрою, призначеного для цієї мети.


66
Оскільки вони є спеціалізованими для такого роду речі; це в основному однотипний математика. І nVidia розробила та продала лише графічні плати для людей, які роблять цей тип масового паралельного стискання чисел.
Гептит

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

4
Більш точна аналогія замінила б вентилятори боксу на 100-метрові сільськогосподарські комбайни.
MooseBoys

6
На моєму ПК вже є готовий до використання графічний процесор, проектування та виробництво виділеного чіпа повернуло б мені пару мільйонів.
ПлазмаHH

19
Спробуйте іншу аналогію. Припустимо, у нас є вентилятори коробки, і у нас є ротори вертольотів. У нашому гіпотетичному світі додатки для вентиляторів коробки потребували прогресивно більших вентиляторів, що працюють на більш високих швидкостях, поки ми не закінчилися 20-метровими вентиляторами коробки з вуглепластикових волокон, і масове виробництво зробило їх дешевими. Потім хтось зрозумів, що 20-метровий бокс-вентилятор - це по суті просто ротор вертольота з кліткою навколо нього. Це насправді таке схоже.
Грем

Відповіді:


109

Це дійсно поєднання всіх ваших пояснень. Дешевше і простіше, вже існує, а дизайн відійшов від чистої графіки.


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

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

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

Звичайні «ігрові» графічні процесори дуже часто використовуються, оскільки економія масштабу та відносна простота роблять їх дешевими та зручними. Це досить простий шлях від графічного програмування до прискорення інших програм з GPGPU. Оновити апаратне забезпечення також легко, оскільки доступні новіші та швидші продукти на відміну від інших варіантів.


В основному вибір зводиться до:

  • Процесор загального призначення, відмінно підходить для розгалуження та послідовного коду
  • Нормальний «ігровий» GPU
  • Орієнтований на обчислювальний процес графічний процесор, наприклад, Nvidia Tesla та Radeon Instinct. Вони часто взагалі не підтримують графічний вихід, тому графічний процесор є дещо помилковим. Однак вони використовують подібні ядра GPU до звичайних GPU, і код OpenCL / CUDA / APP є більш-менш безпосередньо переносним.
  • FPGA, які використовують зовсім іншу модель програмування, і, як правило, дуже затратні. Тут існує значна перешкода для входу. Вони також не обов'язково швидші, ніж GPU, залежно від завантаженості.
  • ASIC, спеціально створені схеми (апаратні засоби). Це дуже дорого і коштує лише з надзвичайними масштабами (ми говоримо, як мінімум, багато тисяч одиниць), і там, де ви впевнені, що програму ніколи не потрібно буде змінювати. Вони в реальному світі рідко здійсненні. Вам також доведеться переробляти і тестувати всю річ щоразу, коли технологія просувається - ви не можете просто обмінятися новим процесором, як можна з процесорами та графічними процесорами.

16
ASIC також мають сенс, коли обчислювачі буквально окупаються (криптовалюта)
храповик виродка

4
Насправді, FPGA часто гірші, ніж GPU. Проблема полягає в тому, що FPGA дуже гнучкі; вони можуть реалізувати безліч різних операцій. Однак обчислення, як правило, є формою математики, і насправді основна частина - це лише дві операції: додавання та множення (віднімання та ділення - варіанти вищезазначеного). GPU дуже добре в цих двох операціях, набагато більше, ніж у FPGA.
MSalters

19
Вам потрібно уточнити більше про FPGA. Думка про те, що є "крок вгору", трохи вводить в оману. Вони більше кроку вбік.
Якк

6
Як приклад останнього, компанія Google має власні «одиниці обробки тензорів» для машинного навчання. Наскільки вони налаштовані незрозуміло, але вони описуються як ASIC.
mbrig

4
@MSalters Однією з головних точок продажу FPGA над графічними процесорами є продуктивність / Ватт, яка стає все більш важливою, оскільки центри обробки даних починають вражати стінку живлення (FPGA, як правило, більш енергоефективні). Щодо математики, FPGA порівнянні з графічними процесорами в арифметиці з фіксованою точкою та цілим числом, і лише математика з плаваючою комою відстає.
wilcroft

32

Моя улюблена аналогія:

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

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

Прямо до вашого запитання: чому GPU над ASIC / FPGA? Взагалі вартість. Навіть за сьогоднішніх завищених цін на GPU, користуватися графічним процесором все-таки дешевше, ніж проектувати ASIC для задоволення ваших потреб. Як зазначає @ user912264, існують конкретні завдання, які можуть бути корисними для ASIC / FPGA. Якщо у вас є унікальне завдання, і ви отримаєте користь від масштабу, тоді це може бути вартим розробки ASIC / FPGA. Насправді ви можете розробити / придбати / ліцензувати проекти FPGA спеціально для цієї мети. Це робиться, щоб, наприклад, живити пікселі на телевізорах високої чіткості.


7
Коментарі все-таки не для відповіді, і це здається мені розумною відповіддю.
Раймунд Крамер

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

FPGA стають набагато доступнішими для звичайного розробника - Microsoft, наприклад, має хмарне рішення AI, використовуючи FPGA (Project BrainWave). AWS також має деякі пропозиції. Кожен може орендувати деякі спеціальні FPGA для спеціалізованих завдань, не будуючи їх самостійно, що неможливо для багатьох випадків використання навіть кілька років тому.
бричін

Так, я думаю, що є навіть комплекти хобі FPGA, які можна порівняти з ардуїновою малиною-пі. Я все ще думаю, що програмування FPGA набагато дорожче, ніж більш розвинені архітектури.
BobtheMagicMoose

10

Ваша аналогія погана. Аналогічно, купуючи обладнання для великого бізнесу по догляду за газонами, ви припускаєте, що є хороші газонокосарки. Це не так у світі обчислень - GPU - це найкращий інструмент, який легко доступний.

Витрати на НДДКР та можливі підвищення продуктивності спеціалізованого чіпа, ймовірно, занадто високі, щоб виправдати його виготовлення.

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


9

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

  • Біткойн новий, гіки видобуті з їх процесорами.
  • Біткойн дещо новий, розумні вундеркінги, що минають зі своїми графічними процесорами.
  • Зараз Bitcoin (свого роду) відомий, люди купують FPGA.
  • Зараз Bitcoin відомий (2013 рік), навіть новачки купують ASIC ("Інтегральні схеми для конкретних додатків") для ефективного видобутку.
  • Блокуйте падіння винагороди (періодично), навіть старі ASIC вже не вигідні.

Так ні, немає причин використовувати GPU замість спеціалізованого "гігантського калькулятора". Чим більше економічних стимулів, тим більше обладнання спеціалізується. Однак їх досить складно спроектувати і неможливо виготовити, якщо ви не виробляєте тисячі відразу. Якщо проектувати мікросхеми не під силу, ви можете придбати один з таких у найближчому Walmart.

TL; DR Звичайно, ви можете використовувати більш спеціалізовані фішки.


1
"Звичайно, ви можете використовувати більш спеціалізовані фішки" - але є спеціалізовані фішки для біткойна (SHA-256), потім для litecoin (скрипт), і це майже все. Високопродуктивного обчислювального обладнання для інших проблем не існує. (Тобто, з продуктивністю вище, ніж у поточних високоякісних графічних процесорів)
Agent_L

8

Те, що ви описуєте у своїй аналогії, саме те, що сталося. Тільки що ви схопили вентилятор і заточували леза, щоб спробувати використовувати його як косарку, група досліджень зрозуміла: «Гей, у нас є тут дуже гарний багатоядерний процесор, давайте спробуємо використовувати його для обчислень загального призначення! ".

Результат був хороший, і м'яч почав котитися. GPU перейшов від графічного пристрою для підтримки обчислень загального призначення для надання допомоги у найвибагливіших ситуаціях.

Оскільки в будь-якому випадку найвибагливішою операцією, яку ми очікуємо від комп'ютерів, є графіка. Цього достатньо, щоб поглянути на приголомшливий успіх того, як виглядають ігри сьогодні, порівняно з тим, як вони робили лише кілька років тому. Це означає, що на розвиток графічних процесорів витрачено чимало зусиль та коштів, а той факт, що вони також могли бути використані для прискорення певного класу загальних обчислень (тобто надзвичайно паралельних), просто додав їх популярності.

Отже, на закінчення, перше пояснення, яке ви пропонуєте, є найбільш точним:

  • Таку альтернативу було б надто дорого розробити, коли GPU вже є чудовим варіантом.

Графічні процесори, де вже є, вони доступні для всіх і вони працювали.


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

Найвимогливішою в обчислювальній роботі, яку я очікую від свого комп'ютера, є технічна графіка, але обчислення структури з руху - це не те, про що думає більшість людей (або дизайнерів GPU), коли вони чують слово "графіка".
Марк

5

Зокрема, GPU не є «ядрами» в значенні «паралелізму завдань». Здебільшого це у формі "паралелізму даних". SIMD - це "одноразова множина даних". Це означає, що ви цього не робили:

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

Це означає, що у вас є 1024 покажчики інструкцій, які виконують окремі завдання, прогресуючи з різною швидкістю. SIMD або "векторні обчислення" виконуватимуть вказівки через цілі масиви відразу, приблизно так:

c = a * b

"Цикли" знаходяться в інструкціях "*" і "=", а не за межами інструкцій. Сказане зробить це для всіх 1024 елементів одночасно, за вказівкою SAME для всіх. Це як би мати три величезні регістри для a, b і c. SIMD-код надзвичайно обмежений, і добре працює лише для проблем, які не надто «розгалужені».

У реалістичних випадках ці значення SIMD не настільки великі, як 1024 позиції. Уявіть змінну, яка є бандою int32, зв'язаною між собою. Ви можете придумати множення і призначити як справжню машинну інструкцію.

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

Справжні графічні процесори складніші, ніж SIMD, але в цьому суть їх. Ось чому ви не можете просто кинути алгоритм випадкового процесора на графічний процесор і очікувати прискорення. Чим більше інструкцій розгалуження алгоритму, тим менш доцільно це для GPU.


5

Інші відповіді тут досить хороші. Я також кину свої 2 копійки.

Однією з причин того, що процесори стали настільки поширеними, є те, що вони гнучкі. Ви можете перепрограмувати їх на нескінченну різноманітність завдань. У наші дні компаніям, які виробляють продукцію, дешевше і швидше вкласти щось у невеликий процесор чи мікроконтролер і програмувати його функціональність, ніж розробляти власні схеми, щоб виконати те саме завдання.

Використовуючи той самий пристрій, що і інші, ви можете скористатися відомими рішеннями проблем із використанням того самого пристрою (або подібного). І коли платформа дозріває, ваші рішення розвиваються та стають дуже зрілими та оптимізованими. Люди, що кодують ці пристрої, також набувають досвіду та стають дуже хорошими у своїй майстерності.

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

Спільнота комп'ютерної архітектури вже кілька років зловживає цією ідеєю (очевидно, вона була популярною і раніше, але останнім часом спостерігається ренесанс). Ці "прискорювачі" (їх термін) мають різну ступінь перепрограмованості. Проблема полягає в тому, наскільки вузько ви визначаєте сферу проблеми, яку може вирішити ваш прискорювач? Я навіть говорив з деякими людьми, які працювали над створенням прискорювача, використовуючи аналогові схеми з підсилювачами для обчислення диференціальних рівнянь. Чудова ідея, але надзвичайно вузька сфера застосування.

Після того, як у вас буде робочий прискорювач, економічні сили збираються вирішити вашу долю. Ринкова інертність - неймовірна сила. Навіть якщо щось є чудовою ідеєю, чи економічно доцільно переробити робочі рішення для використання цього нового пристрою? Можливо, може й ні.

Графічні процесори насправді жахливі для певних типів проблем, тому багато людей / компаній працюють над іншими типами пристроїв. Але GPU вже настільки закріпилися, чи коли-небудь їхні пристрої стануть економічно вигідними? Я думаю, ми побачимо.

Редагувати: Трохи розширюючи свою відповідь, тепер, коли я виходжу з автобуса.

Обережний приклад - проект Intel Larrabee. Він розпочався як пристрій паралельної обробки, який міг робити графіку в програмному забезпеченні; у нього не було спеціалізованого графічного обладнання. Я розмовляв з тим, хто працював над проектом, і головна причина, по якій вони сказали, що він провалився, і його скасували (окрім жахливої ​​внутрішньої політики), це те, що вони просто не могли змусити компілятора створити хороший код для цього. Звичайно, він створив робочий код, але якщо вся точка вашого продукту є максимальною продуктивністю, вам краще мати компілятор, який створює досить оптимальний код. Це чує мій попередній коментар про відсутність глибокого досвіду як апаратного, так і програмного забезпечення для вашого нового пристрою, що є великою проблемою.

Деякі елементи дизайну Larrabee перетворили його на Xeon Phi / Intel MIC. Цей продукт фактично вийшов на ринок. Він повністю орієнтований на паралелізацію наукових та інших обчислень типу HPC. Схоже, це комерційний провал зараз. Інша людина, з якою я розмовляв в Intel, натякав, що вони просто не були конкурентоспроможними за ціною та продуктивністю з графічними процесорами.

Люди намагалися інтегрувати синтез логіки для FPGA в компілятори, щоб ви могли автоматично генерувати код для своїх прискорювачів FPGA. Вони не так добре працюють.

Одне місце, яке здається дійсно родючим ґрунтом для прискорювачів або інших альтернатив GPU, - це хмара. Економія масштабу, яка існує в таких великих компаніях, як Google, Amazon та Microsoft, робить інвестиції в альтернативні схеми обчислення вартістю. Хтось уже згадував тензорні підрозділи Google. Корпорація Майкрософт має FPGA та іншу інформацію у всій своїй інфраструктурі Bing та Azure. Та сама історія з Amazon. Це абсолютно має сенс, якщо масштаб може компенсувати ваші інвестиції у час, гроші та сльози інженера.

Підсумовуючи, спеціалізація суперечить багатьом іншим речам (економіка, зрілість платформи, інженерна експертиза тощо). Спеціалізація може значно підвищити вашу ефективність, але це звужує область, до якої ваш пристрій застосований. У моїй відповіді було зосереджено багато негативу, але спеціалізація теж має переваги. Це абсолютно слід шукати і досліджувати, і як я вже згадував, багато груп переслідують це досить агресивно.

Вибачте, редагуйте ще раз: Я думаю, що ваша початкова передумова неправильна. Я вважаю, що це був менше випадків пошуку додаткових джерел обчислювальної потужності, а більше випадків, коли люди визнають можливість. Графічне програмування є дуже лінійною алгеброю, і GPU був розроблений для ефективного виконання загальних операцій, таких як матричне множення, векторні операції тощо. Операції, які також дуже поширені для наукових обчислень.

Інтерес до графічних процесорів почався саме тоді, коли люди зрозуміли, що обіцянки, надані проектом Intel / HP EPIC, були значно завищені (кінець 90-х - початок 2000-х). Не було загального рішення для паралелізації компілятора. Тому замість того, щоб сказати, "де ми знаходимо більше процесорної потужності, о, ми могли б спробувати GPU", я думаю, це було більше "у нас є щось, що добре при паралельних обчисленнях, чи можемо ми зробити це більш загально програмованим". Багато людей, що займаються, були в науковому обчислювальному середовищі, у якого вже був паралельний код Fortran, який вони могли працювати на машинах Cray або Tera (Tera MTA мала 128 апаратних ниток). Можливо, був рух з обох напрямків, але я чув лише про згадки про походження ГПГПУ з цього напрямку.


Під "прискорювачами" ви маєте на увазі обладнання, виготовлене на замовлення, або супер кластери обчислювальних вузлів малої потужності? Чи можете ви детальніше розробити, надавши посилання на деякий приклад прискорювального обладнання.
манав мн

Вибачте, я думав, що це зрозумів із контексту. Прискорювач - це лише парасольовий термін для копроцесора або картки розвантаження. Плаваюча точка спочатку була в копроцесорі, а не в основному процесорі, і його вважали б прискорювачем. Графічні процесори, DSP, Xeon Phi, FPGA, коли вони перебувають на PCIe-картці чи щось подібне, аналогове диференціальне рівняння, про яке я згадував, є пристрої, які допомагають у віртуалізації, є поточні дослідження прискорювачів нейронної мережі. Це все приклади прискорювачів.
NerdPirate

4

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

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

То чому GPU?

У середині 90-х 3DFX зрозумів, що завдання 3D-рендерінгу настільки специфічні, що користувацький ASIC буде виконувати МНОГО краще, ніж процесор. Вони створили комп’ютерний спільний процесор, який завантажував завдання з 3D-рендерінгу з центрального процесора на цей спільний процесор, який вони називали "GPU". Конкуренція та попит на ринку призвели до інновацій у цьому просторі до того, що GPU виконував обчислення набагато швидше, ніж процесор, тому виникло питання: "Чому я не можу використовувати GPU, щоб розчавити свої номери замість процесора?" Виробники GPU побачили попит і спосіб заробити більше грошей, тому вони почали змінювати свої платформи, щоб дозволити розробникам використовувати їх обладнання. Але апаратне обладнання було настільки цільовим, що існували і є досі обмеження в тому, що ви можете попросити зробити GPU. Я не буду вникати в конкретику того, чому тут.

То чому ж не було більш конкретного кремнію? Чому ДУЖЕ графіку?

Дві причини: 1) Ціна. GPU мав хороший ринок, і це міг виправдати, але навіть тоді це було величезним ризиком. Ніхто насправді не знав, чи може 3DFX отримати прибуток (виявляється, насправді вони не змогли, і вийшли з ладу). Навіть зараз, за ​​розмірами ринку GPU, насправді є лише 3 конкуренти. 2) Процесори насправді задовольняли потребу в "спеціальному кремнію" з розширеннями інструкцій. Подумайте про MMX - це насправді була спроба Intel прискорити графіку в центральному процесорі, оскільки 3DFX набирав швидкість. З тих пір набір інструкцій x86 став досить масовим з усіма цими розширеннями. Багато з цих розширень на той час мали сенс (як MMX), але зараз є значною мірою просто мертвою вагою в процесорі. Однак ви не можете їх видалити, оскільки тоді воно порушує існуюче програмне забезпечення. Це ' s фактично одна з точок продажу для ARM - ARM - це збитий набір інструкцій. Існує не так багато розширень інструкцій, але це робить кремній меншим і дешевшим у виробництві.

Мені здається, ви могли б заробити багато грошей, якби могли зменшити вартість спеціального кремнію. Хіба ніхто не працює над цим?

Існує технологія під назвою FPGA - поле програмованого масиву воріт, яке існує вже з перших днів обчислень. По суті це мікрочіп, який можна сконструювати "у польових умовах" за допомогою програмного забезпечення. Це дуже класна технологія, але вся структура, необхідна для того, щоб чіп був програмованим, займає багато кремнію і змушує мікросхеми працювати на набагато менших тактових частотах. CAN FPGA може бути швидшим, ніж процесор, якщо у вас є достатня кількість кремнію на мікросхемі І може ефективно паралелізувати завдання. Але вони обмежені тим, скільки логіки ви можете на них застосувати. Усі, крім найдорожчих FPGA, були повільнішими, ніж GPU для раннього видобутку біткойна, але їхні колеги ASIC фактично припинили прибутковість видобутку GPU. Інші криптовалюти використовували конкретні алгоритми, які не можна паралелізувати, тому FPGA та ASIC '

Основним обмежувачем у FPGA є розмір кремнію - скільки логіки ви можете помістити на мікросхемі? Друга - тактова швидкість, тому що важко оптимізувати такі речі, як гарячі місця, витоки та перехресні розмови на FPGA. Новіші способи виготовлення мінімізували ці проблеми, і Intel об'єдналася з Altera, щоб забезпечити FPGA, який може бути використаний інженерами для використання переваг "користувацького кремнію" як спільного процесора на сервері. Отже, це в певному сенсі.

Чи замінять FPGA коли-небудь заміни процесора та GPU?

Напевно, не скоро. Останні процесори та графічні процесори - МАСИВНІ, а кремній налаштований на теплові та електричні характеристики. Ви не можете оптимізувати FPGA таким же чином, як і звичайний ASIC. Якщо не мати певної новітньої технології, процесор, ймовірно, залишиться ядром вашого комп'ютера з FPGA та GPU-копроцесорами.


1
Багато з цих розширень на той час мали сенс (як MMX), але зараз є значною мірою просто мертвою вагою в процесорі. 3D-рендерінг - далеко не єдиний варіант використання для SIMD. Більшу частину "ваги" MMX складають одиниці виконання, і їх можна ділити з більш широкими векторами, такими як SSE2, AVX2 та AVX512. Вони широко використовуються для якісної відеокодування на процесорах та багатьох інших завдань, включаючи високопродуктивні обчислення. Але також реалізація бібліотеки memchr, strlen та багато іншого. наприклад, фільтруючи масив одночасно з більш ніж 1 елемента
Пітер Кордес

3

Дійсно, є спеціалізована плата для високошвидкісних обчислень, наприклад, Xilinx має список 178 плат PCI-e, що використовують їх FPGA, і приблизно третина цих плат - це «сукупність крейсерів» з одним або кількома потужними чіпами FPGA та великою кількістю вбудованих чіпів плата пам'яті DDR. Існують також високопродуктивні плати DSP ( приклад ), спрямовані на високопродуктивні обчислювальні завдання.

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


2

Я думаю, що відповідь на ваше запитання залежить від того, як визначити високоефективні обчислення.

Загалом, високоефективні обчислення пов'язані з часом обчислення. У цьому випадку мені подобається ділитися посиланням високопродуктивного обчислювального кластера .

Посилання вказується на причину використання GPU; Використання графічних карт (а точніше їхніх графічних процесорів) для розрахунків для обчислення в сітці набагато економічніше, ніж використання процесорів, незважаючи на те, що вони є менш точними.


2
GPGPU високого класу мають хорошу пропускну здатність для 64-бітової doubleточності, а не лише одноточної 32-бітової float. (Деякі звичайні GPU скупилися на HW for double). Усі основні постачальники підтримують математику IEEE FP (я думаю, навіть із денормалами). Так що втрат на точність немає, якщо ви не хочете торгувати точністю для продуктивності, наприклад, з 16-бітною напівточністю FP, яка має ще кращу пропускну здатність для деяких апаратних засобів (і, звичайно, половину пропускної здатності пам'яті). Для високоефективного коду на процесорах часто використовується і 32-бітний float, щоб отримати вдвічі більше елементів на SIMD-вектор і половину пропускної здатності пам'яті.
Пітер Кордес

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