Чому ми все ще використовуємо процесори замість GPU?


373

Мені здається, що в наші дні на GPU робиться багато розрахунків. Очевидно, тут робиться графіка, але за допомогою CUDA тощо, AI, алгоритми хешування (думаю, біткойни) та інші також робляться на GPU. Чому ми не можемо просто позбутися процесора і використовувати GPU самостійно? Що робить GPU набагато швидшим, ніж процесор?


3
як я можу знати, які відповіді містять правильну інформацію? Чи варто чекати, поки відповіді інших вгору / вниз голосують? Я думаю, що я занадто поспішив у прийнятті відповіді: O
ell

14
Зараз є кілька останніх відповідей @ell, які не містять "дезінформації". Вони поступово піднімаються до вершини набравши голосів завдяки ефективному ринковому механізму чудово розробленого StackExchange ;-) Я б запропонував почекати ще трохи, перш ніж приймати відповідь. Схоже, ви дуже завбачливо робите саме це. Це, до речі, хороше питання. Це може здатися очевидним, але це зовсім не так. Дякую за запитання!
Еллі Кессельман

124
Начебто запитуйте "Якщо Boeing 747 швидший і більш економічний, чому ми все ще їздимо на автомобілях"?
vartec

7
Ні, тому що це не RISC проти CISC. Це одна з інших основ інформатики, трохи замаскована. Це "Чому ми перевантажуємо роботу з центрального процесора на процесори вводу / виводу?" .
JdeBP

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

Відповіді:


388

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


GPGPU все ще є відносно новою концепцією. GPU спочатку використовувались лише для візуалізації графіки; З розвитком технологій велика кількість ядер у графічних процесорах відносно процесорів використовувалася шляхом розробки обчислювальних можливостей для графічних процесорів, щоб вони могли обробляти багато паралельних потоків даних одночасно, незалежно від того, якими вони можуть бути. Хоча графічні процесори можуть мати сотні або навіть тисячі потокових процесорів, кожен з них працює повільніше, ніж ядро ​​центрального процесора, і має менше функцій (навіть якщо вони Turing завершені і можуть бути запрограмовані для запуску будь-якої програми, яку може запускати процесор). До функцій, відсутніх у графічних процесорах, належать переривання та віртуальна пам'ять, необхідні для впровадження сучасної операційної системи.

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

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

Сучасні графічні процесори здатні виконувати векторні операції та арифметику з плаваючою комою, а новітні карти здатні маніпулювати числами з плаваючою комою подвійної точності. Такі рамки, як CUDA та OpenCL, дозволяють записувати програми для графічних процесорів, а природа GPU робить їх найбільш придатними для операцій із великою паралельністю, наприклад, в наукових обчисленнях, де серія спеціалізованих обчислювальних карт GPU може бути життєздатною заміною для невеликої обчислити кластер, як у персональних суперкомп'ютерах NVIDIA Tesla . Споживачі із сучасними графічними процесорами, які мають досвід Folding @ home, можуть використовувати їх для участі у клієнтах GPU , які можуть виконувати симуляції складання білка з дуже високою швидкістю та сприяти більшій роботі над проектом (обов'язково читайте поширені запитанняпо-перше, особливо ті, що стосуються GPU). Графічні процесори також можуть вдосконалити фізичне моделювання у відеоіграх за допомогою PhysX, прискорити кодування та декодування відео та виконати інші завдання, що вимагають обчислень. Саме такі типи завдань найкраще підходять для виконання графічних процесорів.

AMD є новаторським процесором, який називається прискореним процесором (APU), який поєднує звичайні ядра процесора x86 з графічними процесорами. Цей підхід дозволяє графічній продуктивності значно перевершувати графічні рішення, інтегровані до материнської плати (хоча це не відповідає більш дорогим дискретним графічним процесорам), а також дозволяє компактну, недорогу систему з хорошими мультимедійними характеристиками без необхідності окремого графічного процесора. Останні процесори Intel також пропонують графічну інтегровану графіку, хоча конкурентоспроможність інтегрованого GPU наразі обмежена кількома чіпами з Intel Iris Pro Graphics. Оскільки технології продовжують просуватися, ми спостерігатимемо все більшу ступінь зближення цих колись окремих частин. AMD передбачаємайбутнє, де процесор і GPU - це одне ціле, здатне безперешкодно працювати разом над одним завданням .

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


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

Варто відзначити, що Intel працював над архітектурою Larrabee (занадто довго), яка по суті є чіпом з величезною кількістю x86 ядер.
Кріс S

Прекрасна відповідь для обговорення апаратних причин та обговорення APU та як вони це змінять. Однак, @Soren дає дуже гарну точку з боку програмного забезпечення. Насправді, це поєднання апаратних проблем, програмного забезпечення та того, що процесори працюють, і коли щось, як відомо, працює, важко змусити людей замінити його.
Ніч Дель

3
"у нас немає гарних мов програмування основного потоку для роботи з паралельними архітектурами, як це. - Haskell, OCaml, Scheme, F #, Erlang і багато іншого функціонального мови програмування дуже добре справляються з багатопотоковою програмою. Усі, про які я згадував, - це мейнстрім.
BlueRaja - Danny Pflughoeft

1
@BlueRaja - нам відомі ці мови, ваше визначення основного потоку має бути іншим, ніж моє :-)
Soren

252

Що робить GPU набагато швидшим, ніж процесор?

Графічний процесор не швидший за процесор. Процесор і GPU розроблені з двома різними цілями, з різними компромісами, тому вони мають різну характеристику продуктивності. Окремі завдання швидші в процесорі, а інші завдання швидше обчислюються в GPU. Процесор спрацьовує в здійсненні складних маніпуляцій з невеликим набором даних, GPU - у виконанні простих маніпуляцій з великим набором даних.

GPU - це процесор спеціального призначення, розроблений таким чином, що одна інструкція працює над великим блоком даних (SIMD / Single Instruction Multiple Data), всі вони застосовують одну операцію. Робота в блоках даних, безумовно, більш ефективна, ніж робота з однією коміркою одночасно, тому що дешифрування інструкцій значно зменшує накладні витрати, однак робота у великих блоках означає, що є більше паралельних робочих одиниць, тому вона використовує набагато більше транзисторів реалізувати єдину інструкцію GPU (спричиняючи обмеження фізичного розміру, використовуючи більше енергії та виробляючи більше тепла).

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

Причина, по якій ми все ще використовуємо процесор, полягає не в тому, що x86 є королем архітектури процесора, а Windows написано для x86, а причиною, по якій ми все ще використовуємо процесор, є те, що тип завдань, які ОС повинна виконувати, тобто прийняття рішень, працює більш ефективно на архітектурі процесора. В ОС потрібно переглянути 100 типів різних типів даних і приймати різні рішення, які залежать один від одного; така робота не легко паралелізується, принаймні, не в архітектурі SIMD.

Надалі ми побачимо конвергенцію між CPU та GPU архітектурою, оскільки процесор набуває можливості працювати над блоками даних, наприклад, SSE. Крім того, оскільки технологія виготовлення вдосконалюється, а чіпів стає менше, GPU може дозволити собі реалізувати більш складні інструкції.


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

2
+1 - це найкраща відповідь. І ця, і прийнята відповідь правильні, але ця пояснює це набагато чіткіше.

Я здивований, що ніхто в цій темі не згадав про накладні витрати на передачу даних в GPU - обмежена пропускна здатність по шинах PCI-Express робить деякі паралельні операції на GPU набагато повільніше, ніж вони виконувались на процесорі. Можна побачити один простий випадок, коли зміна розміру FFT суттєво змінилась у продуктивності GPU та CPU через накладні витрати на передачу даних, налаштування контексту та результати читання: stackoverflow.com/a/8687732/303612 Менші операції можна виконувати в кеш-пам'яті на процесорах, а пропускна здатність пам'яті значно перевершує сучасну архітектуру PCI-E
д-р Ендрю Бернет-Томпсон,

1
@ Dr.AndrewBurnett-Thompson: це тому, що це питання не має значення. В даний час GPU вважається допоміжним процесором, тому переміщення даних з / в GPU є необхідним і дорогим. Якщо ми ставимося до GPU як до одиниці обробки першого класу, немає необхідності в маршальованих даних між основною пам'яттю і пам'яттю GPU.
Лежати Райан

1
Не оптимістично, це не нульова пропускна здатність накладних витрат. Якщо процесор з архітектурою графічного процесора керує всім шоу, нічого не потрібно переміщувати, пам'ять GPU - це основна пам'ять. Немає накладних передач, про які слід говорити, в першу чергу, оскільки немає передач. Це, до речі, не гіпотетично, APU-версії AMD використовують HSA (гетерогенну архітектуру системи) з об'єднаною основною пам'яттю, яка дозволяє копіювати між нульовим процесором і GPU.
Лежати Райан

75

Не вистачає графічних процесорів:

  1. Віртуальна пам'ять (!!!)
  2. Засоби адресації інших пристроїв, крім пам’яті (наприклад, клавіатури, принтери, вторинне сховище тощо)
  3. Переривання

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

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

EDIT : Зауважте, що ця відповідь була написана в 2011 році. Технологія GPU - це область, яка постійно змінюється. Все може бути дуже різним, залежно від того, коли ви це читаєте: P

* Деякі графічні процесори не є повільними при арифметиці з подвійною точністю, наприклад, лінії Quidro або Tesla NVidia (покоління Fermi або новіші) або лінія FirePro AMD (покоління GCN або новіші). Але таких немає в машинах більшості споживачів.


@Cicada: Чи є у вас посилання на це? У будь-якому випадку, навіть якщо це правда, навіть останні апаратні засоби не будуть працювати в цьому випадку добре. (наприклад, не було б занадто великої переваги в перф у порівнянні з процесором - і недолік енергоспоживання)
Billy ONeal

3
Так, пристрої Fermi, як ви вже говорили (з CUDA 4.0 та sm_20), підтримують непрямі стрибки (а отже, віртуальні методи C ++, успадкування тощо).
Злий салат

544 GigaFLOPS від 300-річного GPU на 2 роки повільно?
Бен Войгт

2
@Ben: Таку ефективність ви отримуєте лише у паралельних даних. Загальні послідовні операції - це зовсім інша кульова гра. (Це лише з усіма 1600 ядрами цього чіпа, які працюють паралельно, і знову і знову виконуються однакові інструкції ... і навіть це теоретично, а не фактично)
Біллі ONeal,

@Billy: Але це повільність для певного класу алгоритмів, а не повільність для арифметики подвійної точності (на що ви заявили). (І процесори зазвичай не досягають базової пропускної здатності)
Ben Voigt,

37

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

Що б ви хотіли мати свого колеги-розробника, одного супершвидкого хлопця або 100 швидких клонів, які насправді не такі швидкі, але всі повинні виконувати ті самі дії одночасно?

Для деяких дій клони досить хороші, наприклад, підмітати підлогу - кожен може змітати частину.

Для деяких дій клони смердять, наприклад, пишуть тижневий звіт - всі клони, крім одного сидіти в режимі очікування, тоді як один клон пише звіт (інакше ви отримуєте 100 примірників того самого звіту).


4
Чи можу я навіть мати ... обох?
Кевін Панько

22
@Kevin: Так, але вам знадобиться комп'ютер і з процесором, і з GPU! Якби тільки таке було!
Йоахім Зауер

3
Чудова аналогія. Згадаю це.
Майо,

23

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

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

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

Незначна бічна примітка, однак, якби можна було зняти процесор і мати лише графічний процесор, чи не вважаєте ви, що ми перейменовували його? :)


Я думаю, що більшість сучасних процесорів розроблені для того, щоб робити 2, 4 або 8 речей одночасно.
danielcg

@ danielcg25: І більшість сучасних графічних процесорів розроблені для того, щоб робити 256, 512, 1024 речі одночасно (GTX 680 має 1536 ядер CUDA). Кожне окреме ядро ​​процесора концептуально є окремою сутністю, але це не стосується GPU.
Phoshi

@ danielcg25: Я знаю, але коментар із принциповим (хоч і навмисним) нерозумінням відповіді може бути шкідливим, якби хтось читав її, не знаючи вже теми. "Бути дупою" в цьому сенсі не дуже цінується в SE, оскільки це знижує співвідношення сигнал: шум.
Фоші

Я просто надавав деяку інформацію. Більшість комп’ютерів сьогодні насправді здатні обробляти 2-8 речей відразу. Деякі процесори можуть зробити навіть більше, ніж це. Він все ще не наближається до графічних процесорів, які роблять 100 штук одночасно.
danielcg

@ danielcg25: Хоча це питання про інший вид. Кожне ядро ​​процесора ефективно відокремлене, працює з власними фрагментами даних та власними процесами. Кожне ядро ​​процесора виконує різні, окремі завдання один для одного, і вони не масштабуються лінійно вгору - осьоядер не вдвічі корисніший, ніж чотирьохядерний не вдвічі корисніший, ніж двоядерний. Ядра GPU, з іншого боку, виконують одне і те ж завдання в різних фрагментах даних і виконують масштаб лінійно. Очевидно, що багатоядерні процесори існують, але це не одне і те ж .
Фоши

14

Ви справді запитуєте, чому ми не використовуємо подібні GPU архітектури в процесорі?

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

Ми фактично використовуємо різні (більш GPU-ish) архітектури процесора. Наприклад, процесори Niagara досить багатозадачні. SPARC T3 запустить 512 одночасних потоків.


Чому потік?
jkj

3
Я здогадуюсь останнього рядка, оскільки він просто хибний. Насправді я можу думати лише про одну основну ОС, що працює лише на x86; і навіть той був перенесений на альфа-та ARM-процесори, просто не комерційно пропонований на даний момент.
Хав'єр

Гаразд. Видалено останній розділ, на який було моє уявлення про підтримку основної операційної системи, що гальмує зміни до нових архітектур. Може не бути в межах відповіді.
jkj

11

Я, можливо, тут жахливо помиляюся, і говорю з цього питання мало, або взагалі немає, але ось що:

  • Я вважаю, що у всіх блоків виконання графічних процесорів ("ядерних") обмежений адресний простір порівняно з процесором.

  • Блоки виконання GPU не можуть ефективно боротися з розгалуженням.

  • Блоки виконання графічного процесора не підтримують апаратні переривання так само, як це робить процесори.

Я завжди думав, як повинні бути призначені виконавчі блоки GPU - це щось на зразок PlayStation 3 "SPE", їм хочуть надати блок даних, виконати ряд послідовних операцій на ньому, а потім виплюнути ще один блок дані, промити, повторити. Вони не мають стільки адресної пам'яті, як основна "CPE", але ідея полягає в тому, щоб присвятити кожну "SPE" конкретній послідовної задачі. Вихід одного блоку може подавати вхід іншого блоку.

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

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

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


Хороший момент щодо оптимізації галузевого прогнозування - я б ніколи цього не вважав, але ви праві.
Джиммі Брек-Маккі

6

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

Існував дуже старий аргумент щодо того, чи краще мати багато німих ядер чи невелику групу дуже розумних ядер. Це легко повертається до 80-х.

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

Німе ядро ​​набагато менше, і тому до однієї мікросхеми може бути додано більше, але вони не здатні зробити стільки одночасних обчислень. Існує прекрасний баланс між багатьма німими ядрами та кількома розумними ядрами.

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

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

Сучасні мікропроцесори - Напрямок 90 хвилин

http://www.lighterra.com/papers/modernmicroprocessors/


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

1
Я вирішив це для вас і додав також посилання.
bwDraco

5

Я хотів би розширити один синтаксичний момент: Терміни CPU та GPU - це функціональні назви, а не архітектурні назви.

Якби комп'ютер використовував графічний процесор як основний процесор, він би став "центральним процесорним блоком" (CPU) незалежно від архітектури та дизайну.


4

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

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

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


1
Я думаю, що трубопровід накладних витрат - це основна деталь, відсутня відповідь вищого рангу.
Стів

2

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


Так, один крок вперед, два кроки назад.
Рандольф Річардсон

2

З простої причини: більшість програм не є багатопотоковими / векторизованими.

Графічні картки значною мірою покладаються на багатопотокові нитки, принаймні в концепції.

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

Однак з AMD fusion він змінить те, як нам потрібно буде використовувати потужність обробки: або векторизовану, або швидку для одного потоку.


2

Причина, по якій ми все ще використовуємо процесори, полягає в тому, що і CPU, і GPU мають свої унікальні переваги. Дивіться наступний мій документ, прийнятий в ACM Computing Surveys 2015, в якому дається переконливе та всебічне обговорення про відхід від "дебатів CPU проти GPU" до "спільних обчислень CPU-GPU".

Опитування методів гетерогенних обчислень CPU-GPU


1

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


1

gpus - хороші процесори потоку. ви можете мислити обробку потоків як множення послідовного масиву чисел послідовно. CPU також має можливості обробки потокових потоків (це називається розширення SIMD), але ви не можете реалізувати всю логіку програмування як обробку потоків, і компілятори мають можливість створити btyecode, який означає використання інструкцій simd, коли це можливо.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.