Обчислення GPU – що це?

Ви постійно чуєте про GPU обчислення чи прискорення, але не впевнені, що вони означають? Ось усе, що вам потрібно знати.

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

Ранні графічні процесори були відносно простими. Але з появою ігор, 3D-анімації та завдань рендерингу відео, які висунули ЦП за межі їхніх можливостей, більш потужні графічні процесори повинні були прийти на допомогу.

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

Що таке GPU?

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

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

Що таке GPU Computing?

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

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

Оскільки центральний процесор комп’ютера ставав потужнішим і міг обробляти складніші програми та ігри, виробники відеокарт також намагалися йти в ногу з розвитком сучасних обчислювальних машин і 3D-графіки. Nvidia представила GeForce 256 у 1999 році як першу в світі відеокарту з графічним процесором, і звідти все розвинулося.

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

Які є додатки для GPU?

Застосування GPU обчислень багато, ось огляд деяких найпопулярніших застосувань:

  1. Машинне навчання та нейронні мережі
  2. Нечітка логіка
  3. Біоінформатика
  4. Молекулярне моделювання
  5. Відеорендеринг
  6. Геометричне обчислення
  7. Дослідження клімату та прогноз погоди
  8. Астрофізика
  9. Криптографія
  10. Комп'ютерний зір
  11. Злом пароля
  12. Квантові дослідження

Обробка GPU проти CPU

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

Хоча процесори можуть мати кілька ядер, сучасні графічні процесори мають тисячі ядер, наприклад, Nvidia GeForce RTX 3090 який має 10K+ ядер. Однак, щоб отримати перевагу над процесорами, дані повинні мати можливість паралельної обробки, наприклад обробки потоку, що містить тисячі зображень одночасно.

Графічні процесори проти ASIC

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

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

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

GPU проти кластерних обчислень

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

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

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

Прискорення GPU проти Hyper-threading

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

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

Сучасні комп’ютери тепер мають кілька ядер від 2 до 4, 8, 16, 32 і так далі. Крім того, вони мають гіперпотоковість, тому 2-ядерний процесор пропонує 4 потоки, 4-ядерний пропонує 8 потоків і так далі.

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

Графічне чи апаратне прискорення — це здатність програмного додатку використовувати потужність паралельної обробки графічного процесора для обробки великої кількості даних, не забиваючи ЦП. Багато професійних додатків залежать від прискорення GPU, щоб добре працювати. До них належать програми для дизайну/рендерінгу відео та анімації, кодери, криптографія, великі нейронні мережі тощо.

Основи програмування GPGPU

Програмування графічних процесорів загального призначення спочатку здійснювалося за допомогою DirectX та OpenGL бібліотеки. Однак вони були розроблені виключно для розробки графіки, тому для роботи вам довелося перепрофілювати дані у графічні моделі.

На щастя, за ці роки GPGPU досяг значного прогресу, що призвело до появи бібліотек, мов програмування та фреймворків. Найпопулярнішим серед цих фреймворків є CUDA від Nvidia.

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

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

Ядра CUDA проти потокових процесорів

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

Інший термін, який ви можете зустріти, це потоковий мультипроцесор або SM. Це ще одна технологія Nvidia, яка спочатку згрупувала 8 ядер CUDA на SM. Він виконує 32-потокові деформації за один раз, використовуючи 4 такти на команду. Новіші конструкції тепер мають понад 100 ядер на потоковий мультипроцесор.

Найкращі мови та бібліотеки GPU

Існує так багато бібліотек і мов, які працюють як на платформах Nvidia CUDA, так і на платформах AMD. Нижче наведено лише деякі з них:

  1. Nvidia cuBLAS – Базові підпрограми лінійної алгебри для CUDA
  2. cuDNN – Бібліотека глибоких нейронних мереж
  3. OpenCL – Відкритий стандарт для паралельного програмування
  4. Openmp – Для графічних процесорів AMD
  5. HIP – бібліотека C++
  6. Nvidia cuRAND – Генерація випадкових чисел
  7. cuFFT – Для швидкого перетворення Фур’є
  8. Nvidia NPP – 2D зображення та обробка сигналу
  9. GPU VSIPL – Обробка векторних зображень і сигналів
  10. OpenCV – Бібліотека GPU для комп’ютерного зору
  11. OpenACC – Мова для паралельного розвитку
  12. У PyCU – Python для платформи CUDA
  13. TensorRT – Глибоке навчання для CUDA
  14. CUDA C++ – Мова C++ для CUDA
  15. CUDA C – Мова C для CUDA
  16. CUDA Fortran – CUDA для розробників FORTRAN

Найкращі проекти кластерів GPU

Станом на червень 2022 року 8 із 10 найшвидших суперкомп’ютерів у світі мають графічний процесор. Усі вони також використовують ОС Linux, а саме:

РангІМ'ЯПетафлопсПроцесорні сердечникиГрафічні процесориПотужність (кВт)рік
1.Кордон1,102591,8728,138,24021,1002022
2.КІМНАТА151.9075,2641,034,8802,9002022
3.Саміт148.6202,7522,211,84010,0962018
4.Гірський ланцюг94.64190,0801,382,4007,4382018
5.Перлмуттер64.59N / AN / A2,5892021
6.Селена63.4671,680483,8402,6462020
7.Тяньхе-261.445427,0084,554,75218,4822013
8.Адастра46.121,632297,4409212022

Висновок

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

Для отримання додаткової інформації ви можете перевірити платформу розробника Nvidia тут або що з AMD тут.

Ннамді Океке

Ннамді Океке

Ннамді Океке — комп’ютерний ентузіаст, який любить читати широкий вибір книг. Він віддає перевагу Linux, а не Windows/Mac, і використовує
Ubuntu з перших днів. Ви можете зловити його в твіттері через бонготракс

Статті: 298

Отримайте технічні речі

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