Домашня » як » Чому ми все ще використовуємо процесори Замість GPU?

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

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

    Сьогоднішня сесія запитань та відповідей приходить до нас люб'язно від SuperUser - підрозділу Stack Exchange, групування спільноти веб-сайтів з запитань та відповідей.

    Питання

    Читач SuperUser Ell йде в ногу з новинами технологій і цікаво, чому ми не використовуємо більше систем на основі GPU:

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

    Навіщо насправді? Що робить процесор унікальним?

    Відповідь

    Співробітник SuperUser DragonLord пропонує добре підтримуваний огляд відмінностей між графічними процесорами та процесорами:

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

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

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

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

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

    AMD є першопрохідником процесора, який називається Accelerated Processing Unit (APU), який поєднує в собі традиційні процесорні процесори x86 з графічними процесорами. Це може дозволити CPU та GPU компонентам працювати разом і підвищити продуктивність на системах з обмеженим простором для окремих компонентів. Оскільки технологія продовжує розвиватися, ми побачимо все більшу ступінь зближення цих колись окремих частин. Тим не менш, багато завдань, що виконуються операційними системами ПК і додатками, все ще краще підходять для процесорів, і потрібна значна робота для прискорення програми за допомогою GPU. Оскільки стільки існуючого програмного забезпечення використовує архітектуру x86, і оскільки графічні процесори вимагають різних методів програмування і відсутні кілька важливих функцій, необхідних для операційних систем, загальний перехід від процесора до графічного процесора для щоденних обчислень є надзвичайно складним..


    Маєте щось додати до пояснення? Звучить в коментарях. Хочете прочитати більше відповідей від інших технологічних користувачів Stack Exchange? Перегляньте повний потік обговорення тут.