Obliczenia GPU – co to jest?

Czy ciągle słyszysz o obliczeniach GPU lub akceleracji, ale nie jesteś pewien, co one oznaczają? Oto wszystko, co musisz wiedzieć.

Procesory graficzne lub procesory graficzne są obecne we wszystkich obwodach elektronicznych, które wytwarzają jedną lub drugą formę wyświetlania, zwłaszcza w komputerze.

Wczesne procesory graficzne były stosunkowo proste. Jednak wraz z pojawieniem się gier, animacji 3D i renderowania wideo, które wypchnęły procesory poza ich granice, na ratunek musiały przyjść mocniejsze procesory graficzne.

Z biegiem czasu te nowe karty graficzne zyskiwały na mocy i złożoności, a różne firmy i badacze szukali sposobów wykorzystania ich przewagi w zakresie wykonywania równoległego. W tym poście zobaczysz, jak to wyglądało do tej pory.

Co to jest procesor graficzny?

Procesor graficzny lub jednostka przetwarzania grafiki to wyspecjalizowany obwód przeznaczony do manipulacji danymi w celu pomocy w tworzeniu obrazów do wyświetlenia. Innymi słowy, procesor graficzny to system, który tworzy obrazy widoczne na dowolnej powierzchni wyświetlacza, takiej jak monitor komputera, ekran smartfona, konsola do gier i tak dalej.

Procesory graficzne były początkowo prostymi urządzeniami, które łączyły elementy graficzne w celu stworzenia idealnego wyjścia dla konkretnego urządzenia. Jednak z biegiem czasu i wraz z pojawieniem się gier komputerowych, procesory graficzne zaczęły rosnąć pod względem złożoności i mocy, rodząc nowe GPGPU lub ogólnego przeznaczenia Computing na procesorach graficznych.

Co to jest przetwarzanie GPU?

Obliczenia GPU lub GPGPU to wykorzystanie procesora graficznego do obliczeń wykraczających poza grafikę. Oznacza to wykorzystanie procesorów graficznych wbudowanych w kartę graficzną komputera i pierwotnie przeznaczonych do przetwarzania grafiki komputerowej do obliczania innych typów danych, takich jak symulacje naukowe, kryptowaluta górnictwo, obliczenia algebry, prognozowanie pogody, sieci neuronowe i tak dalej.

Powodem tej ewolucji obliczeń GPU jest imponujący rozwój jednostek przetwarzania grafiki, który wynika z rozproszonej architektury równoległej nowoczesnych systemów GPU.

W miarę jak procesor komputera stawał się coraz mocniejszy i mógł obsługiwać bardziej złożone programy i gry, producenci kart graficznych również starali się nadążać za rozwojem nowoczesnych komputerów i grafiki 3D. Nvidia zaprezentowała GeForce 256 w 1999 roku jako pierwsza na świecie karta graficzna GPU i od tego momentu wszystko ewoluowało.

Główną przewagą kart GPU nad procesorami jest ich architektura przetwarzania równoległego, która umożliwia przetwarzanie dużych zadań związanych z danymi w rozproszony, równoległy sposób, co zapobiega powstawaniu wąskich gardeł i zawieszaniu się procesora.

Jakie są zastosowania obliczeń GPU?

Zastosowań obliczeń na GPU jest wiele. Oto kilka najważniejszych zastosowań:

  1. Uczenie maszynowe i sieci neuronowe
  2. Logika rozmyta
  3. Bioinformatyka
  4. Modelowanie molekularne
  5. Renderowanie wideo
  6. Obliczenia geometryczne
  7. Badania klimatyczne i prognozowanie pogody
  8. Astrofizyka
  9. Kryptografia
  10. Wizja komputerowa
  11. Łamanie hasła
  12. Badania kwantowe

Przetwarzanie GPU kontra procesor

Zarówno procesory graficzne, jak i procesory przetwarzają dane cyfrowe, ale robią to na różne sposoby. Procesor lub jednostka centralna jest przeznaczona do przetwarzania szeregowego przy dużych prędkościach, podczas gdy procesory graficzne są przeznaczone do przetwarzania równoległego przy znacznie niższych prędkościach. Oczywiście procesor może wykorzystywać hiperwątkowość, aby uzyskać 2 wątki na rdzeń lub nawet mieć dziesiątki rdzeni, ale zasadniczo są to procesory szeregowe.

Podczas gdy procesory mogą mieć kilka rdzeni, nowoczesne procesory graficzne są wyposażone w tysiące rdzeni, na przykład Nvidia GeForce RTX 3090 który ma ponad 10 tys. rdzeni. Aby jednak uzyskać przewagę nad procesorami, dane muszą umożliwiać przetwarzanie równoległe, na przykład przetwarzanie strumienia zawierającego tysiące obrazów jednocześnie.

Procesory graficzne kontra układy ASIC

ASIC oznacza układ scalony specyficzny dla aplikacji, co oznacza, że ​​może wykonać tylko jedno zadanie – to znaczy zadanie, do którego wykonania został zaprojektowany. Układ ASIC to wyjątkowa maszyna opracowywana od podstaw, której zbudowanie wymaga specjalistycznej wiedzy na temat sprzętu. Układy ASIC są powszechnie stosowane w wydobywaniu kryptowalut, ponieważ oferują dobre korzyści w zakresie przetwarzania równoległego i lepszą wydajność niż procesory graficzne.

Główna różnica między nimi polega jednak na tym, że procesory graficzne są bardziej wszechstronne. Na przykład możesz łatwo zbudować platformę do wydobywania kryptowalut za pomocą procesorów graficznych. Części są łatwo dostępne, a jeśli skończysz z wydobyciem, zawsze możesz sprzedać kartę GPU graczom lub innym górnikom. Jednakże w przypadku układów ASIC można sprzedać używaną maszynę innym górnikom, ponieważ prawie nie można z nią zrobić nic innego.

Poza wydobywaniem kryptowalut jeszcze trudniej jest zdobyć maszynę ASIC, ponieważ nie jest ona produktem masowym. Kontrastuje to mocno z systemami GPU, które można dostać wszędzie i łatwo skonfigurować.

GPU kontra przetwarzanie klastrowe

Chociaż pojedyncza karta graficzna zawiera tysiące rdzeni, które dodają ogromną moc każdemu komputerowi, do którego ją podłączysz, teoretycznie możesz dodać do płyty głównej komputera tyle kart graficznych, ile jest w stanie obsłużyć, i jeszcze bardziej zwiększyć jej możliwości przetwarzania.

Z drugiej strony klaster komputerów odnosi się do wielu komputerów połączonych w sieć w celu funkcjonowania jako jeden duży komputer – superkomputer. Każdy komputer w sieci nazywany jest węzłem i może mieć na pokładzie wielordzeniowy procesor oraz jedną lub więcej kart graficznych.

Każdy klaster musi mieć węzeł główny, czyli komputer główny odpowiedzialny za zarządzanie węzłami roboczymi i planowanie ich. Będzie także zawierać oprogramowanie, które przydziela dane i programy dla węzłów roboczych w celu obliczania i zwracania wyników.

Przyspieszenie GPU kontra Hyper-threading

Procesor został zaprojektowany do obsługi wielu zadań jednocześnie i dlatego działa z bardzo dużymi prędkościami, planując czas przetwarzania pomiędzy wieloma procesami. Jeśli jednak napotka funkcję wymagającą dużej mocy obliczeniowej, może spędzić trochę czasu w pętli, zanim powróci do innych procesów. Zwykle skutkuje to ogólnym spowolnieniem komputera, a w gorszych przypadkach całkowitym zawieszeniem systemu.

Projektanci komputerów mogą uniknąć tego przerażającego scenariusza, stosując hiperwątkowość lub akcelerację GPU. Hyper-threading pozwala pojedynczemu rdzeniowi procesora działać jako dwa wątki przetwarzające. Zatem gdy jeden wątek zostanie uwięziony w pętli wymagającej dużej mocy obliczeniowej, drugi wątek może nadal utrzymywać system w całości.

Nowoczesne komputery mają teraz wiele rdzeni, od 2 do 4, 8, 16, 32 i tak dalej. Ponadto obsługują technologię Hyper-Threading, więc 2-rdzeniowy procesor oferuje 4 wątki, 4-rdzeniowy oferuje 8 wątków i tak dalej.

Hyper-threading w przypadku wielordzeniowych procesorów rozwiąże większość problemów obliczeniowych, zapobiegnie wąskim gardłom i zapewni najwyższą wydajność w prostych grach, produkcji muzycznej oraz małych projektach graficznych, wideo i uczenia maszynowego. Kiedy jednak potrzebujesz większej mocy, często właściwym rozwiązaniem jest procesor graficzny.

Akceleracja GPU lub sprzętowa to zdolność aplikacji do wykorzystania mocy przetwarzania równoległego procesora graficznego do przetwarzania dużych ilości danych bez obciążania procesora. Prawidłowe działanie wielu profesjonalnych aplikacji zależy od akceleracji GPU. Należą do nich programy do projektowania/renderowania wideo i animacji, kodery, kryptografia, duże sieci neuronowe i tak dalej.

Podstawy programowania GPGPU

Programowanie procesorów graficznych ogólnego przeznaczenia początkowo odbywało się przy użyciu DirectX i OpenGL biblioteki. Zostały one jednak zaprojektowane wyłącznie do tworzenia grafiki, więc aby działały, konieczne było ponowne wykorzystanie danych w modelach graficznych.

Na szczęście na przestrzeni lat nastąpił znaczny postęp w GPGPU, co doprowadziło do powstania bibliotek, języków programowania i frameworków. Najpopularniejszym z tych frameworków jest CUDA firmy Nvidia.

CUDA ułatwia każdemu programiście zanurzenie się w programowaniu procesorów graficznych bez konieczności znajomości szczegółów klasycznego programowania procesorów graficznych. Zapewnia funkcje, które wykraczają poza grafikę, a wiele jednostek ma nawet funkcje specyficzne dla uczenia maszynowego.

Dostępne biblioteki ułatwiają także tworzenie od podstaw nowych programów akcelerowanych przez GPU lub dostosowywanie napisanych wcześniej programów do przetwarzania równoległego. Wybierasz odpowiednią bibliotekę, optymalizujesz kod pod kątem pętli równoległych, rekompilujesz i gotowe.

Rdzenie CUDA kontra procesory strumieniowe

Często spotykasz się z terminami Rdzenie Cuda i procesory strumieniowe. Oba terminy odnoszą się po prostu do rdzenia GPU lub Jednostki arytmetyczne i logiczne procesora graficznego. CUDA Core to zastrzeżona technologia firmy Nvidia, natomiast procesory Stream pochodzą od AMD.

Innym terminem, z którym możesz się spotkać, jest wieloprocesorowy strumień strumieniowy lub SM. To kolejna technologia Nvidii, która pierwotnie grupowała 8 rdzeni CUDA na SM. Wykonuje za jednym razem 32 osnowy, wykorzystując 4 cykle zegara na polecenie. Nowsze konstrukcje mają teraz ponad 100 rdzeni na wieloprocesor do przesyłania strumieniowego.

Najpopularniejsze języki i biblioteki GPU

Istnieje wiele bibliotek i języków, które działają zarówno na platformach Nvidia CUDA, jak i AMD. Oto tylko kilka:

  1. Nvidia cuBLAS – Podstawowe podprogramy algebry liniowej dla CUDA
  2. cuDNN – Biblioteka głębokich sieci neuronowych
  3. OpenCL – Otwarty standard programowania równoległego
  4. Openmp – Dla procesorów graficznych AMD
  5. CZEŚĆ P – Biblioteka C++
  6. Nvidia cuRAND – Losowe generowanie liczb
  7. cuFFT – Dla szybkiej transformaty Fouriera
  8. Nvidia NPP – Przetwarzanie obrazu i sygnału 2D
  9. GPU VSIPL – Przetwarzanie obrazu wektorowego i sygnału
  10. OpenCV – Biblioteka GPU do widzenia komputerowego
  11. OtwórzACC – Język rozwoju równoległego
  12. W PyCU – Python dla platformy CUDA
  13. TensorRT – Głębokie uczenie się dla CUDA
  14. CUDA C++ – Język C++ dla CUDA
  15. CUDA C – Język C dla CUDA
  16. CUDA Fortran – CUDA dla programistów FORTRAN

Najpopularniejsze projekty klastrów GPU

Według stanu na czerwiec 2022 r. 8 z 10 najszybszych superkomputerów na świecie jest akcelerowanych przez procesor graficzny. Wszystkie mają również wspólny system operacyjny Linux i są następujące:

RangaNazwaPetaflopyRdzenie procesoraRdzenie GPUMoc (kW)Rok
1.Granica1,102591,8728,138,24021,1002022
2.POKÓJ151.9075,2641,034,8802,9002022
3.Szczyt148.6202,7522,211,84010,0962018
4.Piła94.64190,0801,382,4007,4382018
5.Perlmuttera64.59N / AN / A2,5892021
6.Selene63.4671,680483,8402,6462020
7.Tianhe-261.445427,0084,554,75218,4822013
8.Do gwiazd46.121,632297,4409212022

Podsumowanie

Docierając do końca tego zanurzenia się w obliczeniach na GPU i wszystkim, co się z tym wiąże, powinieneś już mieć pojęcie o jego mocy i zakresie.

Aby uzyskać więcej informacji, możesz sprawdzić platformę dla programistów Nvidia tutaj lub że z AMD tutaj.

Nnamdi Okeke

Nnamdi Okeke

Nnamdi Okeke jest entuzjastą komputerów i uwielbia czytać różnorodne książki. Preferuje Linuksa zamiast Windowsa/Maca i korzysta z niego
Ubuntu od jego początków. Można go złapać na Twitterze za pośrednictwem bongotrax

Artykuły: 282

Otrzymuj materiały techniczne

Trendy technologiczne, trendy w start-upach, recenzje, dochody online, narzędzia internetowe i marketing raz lub dwa razy w miesiącu