GPU компютри – какво е това?
Продължавате да чувате за GPU изчисления или ускорение, но не сте сигурни какво означават? Ето всичко, което трябва да знаете.

GPU или графичните процесори присъстват във всички електронни схеми, които произвеждат една или друга форма на дисплей, особено в компютъра.
Ранните графични процесори бяха относително прости. Но с навлизането на задачите за игри, 3D анимация и видео рендиране, които изтласкаха процесорите отвъд техните граници, по-мощните графични процесори трябваше да дойдат на помощ.
Мощността и сложността на тези нови GPU карти нарастваха с течение на времето, като различни компании и изследователи търсеха начини да използват предимството си при паралелно изпълнение. Тази публикация ви показва как върви досега.
Какво е GPU?
GPU или графичен процесор е специализирана схема, предназначена за манипулиране на данни, за да подпомогне създаването на изображения за показване. С други думи, графичният процесор е система, която създава изображенията, които виждате на всяка дисплейна повърхност, като например компютърен монитор, екран на смартфон, игрови конзоли и т.н.
Първоначално графичните процесори бяха прости устройства, които обединяват графични елементи, за да създадат идеален изход за конкретно устройство. С течение на времето обаче и с навлизането на компютърните игри графичните процесори започнаха да нарастват по сложност и мощност, давайки началото на GPGPU или изчисления с общо предназначение на GPU.
Какво е GPU компютинг?
GPU изчисленията или GPGPU са използването на GPU за изчисления извън графиките. Това означава използването на GPU, вградени във видеокартата на компютъра и първоначално предназначени за обработка на компютърна графика за изчисляване на други видове данни, като научни симулации, копаене на криптовалута, алгебрични изчисления, прогнозиране на времето, невронни мрежи и т.н.
Причината за тази еволюция на GPU изчисленията идва от впечатляващото развитие на графичните процесори, което идва от разпределената паралелна архитектура на съвременните GPU системи.
Тъй като процесорът на компютъра стана по-мощен и можеше да се справя с по-сложни програми и игри, производителите на видеокарти също се опитаха да бъдат в крак с развитието на съвременните компютри и 3D графики. Nvidia представи GeForce 256 през 1999 г. като първата в света GPU видео карта и нещата се развиха оттам.
Основното предимство на GPU картите пред CPU е тяхната архитектура за паралелна обработка, която ги прави способни да обработват големи задачи с данни по разпределен, паралелен начин, който предотвратява затруднения и замръзване на процесора.
Какви са приложенията за GPU компютри?
Приложенията на GPU изчисленията са много, ето някои от най-популярните приложения:
- Машинно обучение и невронни мрежи
- Размита логика
- Биоинформатика
- Молекулярно моделиране
- Рендиране на видео
- Геометрични изчисления
- Проучване на климата и прогнозиране на времето
- астрофизика
- Криптографията
- Компютърно зрение
- Разбиване на парола
- Квантово изследване
GPU срещу CPU обработка
Графичните процесори и процесорите обработват цифрови данни, но го правят по различни начини. Централният процесор или централният процесор е предназначен за серийна обработка при високи скорости, докато графичните процесори са проектирани за паралелна обработка при много по-ниски скорости. Разбира се, процесорът може да използва хипер-нишки, за да получи 2 нишки на ядро или дори да има десетки ядра, но те са основно серийни процесори.
Докато процесорите могат да имат няколко ядра, съвременните графични процесори идват с хиляди ядра, например Nvidia GeForceRTX 3090 който разполага с 10K+ ядра. За да получите предимство пред процесорите обаче, данните трябва да могат да се обработват паралелно, като например обработка на поток, съдържащ хиляди изображения в движение.
Графични процесори срещу ASIC
ASIC е съкращение от Application Specific Integrated Circuit и това означава, че може да изпълнява само една задача – тоест задачата, за която е проектирана. ASIC е уникална машина, която е разработена от нулата и изисква експертни хардуерни познания за изграждане. ASIC често се използват в копаенето на криптовалута, тъй като предлагат добри предимства при паралелна обработка и по-добра ефективност от графичните процесори.
Основната разлика между двете обаче е, че графичните процесори са по-гъвкави. Например, можете лесно да изградите платформа за копаене на криптовалута, като използвате графични процесори. Частите са лесно достъпни и ако сте готови с копаене, винаги можете да продадете GPU картата на геймъри или други копачи. С ASIC обаче можете да продадете само употребявана машина на други копачи, защото едва ли можете да правите нещо друго с нея.
Освен копаене на криптовалута, става още по-трудно да се докопате до ASIC машина, защото те не са масови продукти. Това силно контрастира със системите с GPU, които можете да получите навсякъде и лесно да конфигурирате.
GPU срещу клъстерни изчисления
Докато една GPU карта съдържа хиляди ядра, които добавят огромна мощност към всеки компютър, към който я свържете, теоретично можете да добавите толкова GPU карти към дънната платка на компютъра, колкото тя може да обработи, и допълнително да увеличите нейната способност за обработка.
Компютърният клъстер, от друга страна, се отнася до множество компютри, които са свързани в мрежа, за да функционират като един голям компютър - суперкомпютър. Всеки компютър в мрежата се нарича възел и може да има многоядрен процесор, както и една или повече GPU карти на борда.
Всеки клъстер трябва да има главен възел, който е предният компютър, който отговаря за управлението и планирането на своите работни възли. Той също така ще съдържа софтуер, който разпределя данни и програми за своите работни възли за изчисляване и връщане на резултати.
GPU ускорение срещу хипер-нишки
Централният процесор е проектиран да се справя с множество задачи наведнъж и затова работи на много високи скорости, като планира времето за обработка между тези множество процеси. Въпреки това, когато срещне функция с интензивни изчисления, тогава може да прекара известно време в цикъла, преди да се върне към другите процеси. Това обикновено води до общо забавяне на компютъра и в по-лоши случаи до пълно замръзване на системата.
Компютърните дизайнери могат да избегнат този страховит сценарий, като използват хипер-нишки или GPU ускорение. Hyper-threading позволява едно ядро на процесора да функционира като две нишки за обработка. Така че, когато една нишка е хваната в цикъл с интензивни изчисления, другата нишка все още може да държи системата заедно.
Съвременните компютри вече имат няколко ядра от 2 до 4, 8, 16, 32 и т.н. Освен това те разполагат с хипер-нишки, така че 2-ядрен процесор предлага 4 нишки, 4-ядрен предлага 8 нишки и т.н.
Hyper-threading с многоядрени процесори ще реши повечето изчислителни проблеми, ще предотврати затруднения и ще осигури най-добра производителност с прости игри, музикално производство и малки проекти за графики, видео и машинно обучение. Но когато имате нужда от повече мощност от това, графичният процесор често е правилното решение.
Графичното или хардуерното ускорение е способността на софтуерно приложение да използва мощността на паралелна обработка на GPU, за да обработва голям брой данни, без да натоварва процесора. Много професионални приложения зависят от GPU ускорението, за да функционират добре. Те включват програми за проектиране/изобразяване на видео и анимация, енкодери, криптография, големи невронни мрежи и т.н.
Основи на програмирането на GPGPU
Програмирането с общо предназначение на GPU първоначално се извършва с помощта на DirectX намлява OpenGL библиотеки. Те обаче са проектирани строго за разработка на графики, така че трябваше да пренасочите вашите данни в подобни на графики модели, за да работят.
За щастие през годините имаше голям напредък в GPGPU, водещ до библиотеки, езици за програмиране и рамки. Най-популярната от тези рамки е CUDA от Nvidia.
CUDA улеснява всеки разработчик да се потопи в GPU програмирането, без да е необходимо да познава тънкостите на класическото GPU програмиране. Той предоставя функции, които подобряват развитието отвъд графиките, като много единици дори включват функции, специфични за машинно обучение.
Наличните библиотеки също така улесняват създаването на нови GPU-ускорени програми от нулата или адаптирането на предварително написани към паралелна обработка. Избирате правилната библиотека, оптимизирате кода си за паралелни цикли, прекомпилирате и това е всичко.
CUDA ядра срещу поточни процесори
Често ще срещнете термините Cuda ядра намлява поточни процесори. И двата термина просто се отнасят до GPU ядрото или Аритметични логически единици на GPU. CUDA Core е патентована технология от Nvidia, докато Stream процесорите са от AMD.
Друг термин, който може да срещнете, е Streaming Multi-Processor или SM. Това е друга технология на Nvidia, която първоначално групира 8 CUDA ядра на SM. Той изпълнява 32-нишкови деформации наведнъж, като използва 4 тактови цикъла на команда. По-новите дизайни вече разполагат с над 100 ядра на стрийминг мултипроцесор.
Топ езици и библиотеки за GPU
Има толкова много библиотеки и езици, които работят както на Nvidia CUDA, така и на AMD платформи. Следват само няколко:
- Nvidia cuBLAS – Основни подпрограми за линейна алгебра за CUDA
- cuDNN – Библиотека с дълбоки невронни мрежи
- OpenCL – Отворен стандарт за паралелно програмиране
- Openmp – За AMD GPU
- ХИП – C++ библиотека
- Nvidia cuRAND – Генериране на случайни числа
- cuFFT – За бързо преобразуване на Фурие
- Nvidia NPP – 2D обработка на изображения и сигнали
- GPU VSIPL – Векторни изображения и обработка на сигнали
- OpenCV – GPU библиотека за компютърно зрение
- OpenACC – Език за паралелно развитие
- В PyCU – Python за CUDA платформа
- TensorRT – Задълбочено обучение за CUDA
- CUDA C++ – C++ език за CUDA
- CUDA C – C език за CUDA
- CUDA Fortran – CUDA за разработчици на FORTRAN
Топ проекти за клъстери на GPU
Към юни 2022 г. 8 от 10-те най-бързи суперкомпютри в света са GPU-ускорени. Всички те също споделят операционната система Linux и са както следва:
| ранг | Име | петафлопс | CPU ядра | GPU ядра | Мощност (кВт) | година |
| 1. | Граница | 1,102 | 591,872 | 8,138,240 | 21,100 | 2022 |
| 2. | Луми | 151.90 | 75,264 | 1,034,880 | 2,900 | 2022 |
| 3. | Връх | 148.6 | 202,752 | 2,211,840 | 10,096 | 2018 |
| 4. | Sierra | 94.64 | 190,080 | 1,382,400 | 7,438 | 2018 |
| 5. | Пърлмутер | 64.59 | N / A | N / A | 2,589 | 2021 |
| 6. | Selene | 63.46 | 71,680 | 483,840 | 2,646 | 2020 |
| 7. | Tianhe-2 | 61.445 | 427,008 | 4,554,752 | 18,482 | 2013 |
| 8. | Адастра | 46.1 | 21,632 | 297,440 | 921 | 2022 |
Заключение
Стигайки до края на това гмуркане в GPU изчисленията и всичко, което идва с тях, вече трябва да сте добили представа за неговата мощ и обхват.
За допълнителна информация можете да разгледате платформата за разработчици на Nvidia тук или тази на AMD тук.




