Wiadomości
Wiadomości
CUDA została przeszczepiona i gra GPU oparta na risc-v?
2022-03-17 459

RISC-V jest jednym z najgorętszych tematów w informatyce, ponieważ ta architektura zestawu instrukcji (ISA) pozwala na szerokie dostosowywanie i jest łatwa do zrozumienia, a ponadto zapewnia korzyści wynikające z otwartego oprogramowania i braku licencji. Istnieje nawet projekt mający na celu zaprojektowanie procesora graficznego ogólnego przeznaczenia opartego na RISC-V ISA, a teraz jesteśmy świadkami przeniesienia biblioteki oprogramowania CUDA firmy Nvidia na platformę Vortex RISC-V GPGPU.


CUDA (Computing Unified Device Architecture) firmy Nvidia reprezentuje unikalną platformę obliczeniową i interfejs programowania aplikacji (API), który działa na linii kart graficznych Nvidii. Gdy aplikacja jest napisana z obsługą CUDA, gdy tylko system wykryje procesor graficzny oparty na CUDA, następuje znaczne przyspieszenie kodu przez GPU.


Dzisiaj badacze zbadali sposób umożliwienia obsługi zestawu narzędzi programowych CUDA w projekcie RISC-V GPGPU o nazwie Vortex. Vortex RISC-V GPGPU został zaprojektowany w celu zapewnienia ogólnosystemowego procesora graficznego RISC-V opartego na RV32IMF ISA. Oznacza to, że 32-bitowe rdzenie można skalować od 1-rdzeniowego do 32-rdzeniowego układu GPU. Obsługuje API graficzne OpenCL 1.2, a dziś obsługuje także niektóre operacje CUDA.


Naukowcy wyjaśniają: „...W tym projekcie proponujemy i budujemy potok obsługi kompleksowej migracji CUDA: potok akceptuje kod źródłowy CUDA jako dane wejściowe i wykonuje go na rozszerzonej architekturze GPU RISC-V. Nasz potok potok składa się z kilku kroków: przetłumaczenia kodu źródłowego CUDA na NVVM IR, przekonwertowania NVVM IR na SPIR-V IR, przesłania SPIR-V IR do POCL, aby uzyskać plik binarny RISC-V i na koniec wykonanie na rozszerzonej architekturze pliku binarnego RISC-V GPU. "



Proces jest wizualizowany na powyższym obrazku, pokazującym wszystkie kroki, aby zadziałał. Mówiąc prościej, kod źródłowy CUDA jest reprezentowany w formacie reprezentacji pośredniej (IR) zwanym NVVM IR, opartym na open source LLVM IR. Został on później przekonwertowany na standardową przenośną reprezentację pośrednią (SPIR-V) IR, który następnie został przekazany do przenośnej implementacji standardu OpenCL o otwartym kodzie źródłowym, zwanej POCL. Ponieważ Vortex obsługuje OpenCL, zapewnia obsługiwany kod i może go wykonać bez problemów.


Aby uzyskać więcej informacji na temat tego złożonego procesu, kliknij poniżej i przeczytaj oryginalny artykuł. Co ważne, musisz podziękować tym badaczom za ich wysiłki, aby CUDA działała na procesorach GPGPU RISC-V. Chociaż na razie jest to tylko mały krok, może to być początek ery, w której RISC-V będzie używany do przyspieszania aplikacji obliczeniowych, podobnie jak dzisiejsza oferta procesorów graficznych Nvidii.


Lektura rozszerzona: Czy RISC-V może zmienić procesor graficzny?


Czy RISC-V może obsługiwać transakcje GPU? Jest to praca w toku, którą można osiągnąć poprzez stworzenie wydajnego projektu o małej powierzchni, z możliwością niestandardowego programowania i skalowalności.  
  Każdy, kto studiował architekturę GPU, wie, że jest to konstrukcja SIMD procesora wektorowego. To ultrawydajny procesor równoległy, który był używany do wszystkiego, od uruchamiania symulacji i świetnych gier po uczenie robotów, jak uzyskać sztuczną inteligencję i pomaganie inteligentnym ludziom w manipulowaniu giełdą. Sprawdza nawet moją gramatykę, kiedy to piszę.  
  Jednak obszar GPU stał się obszarem prywatnym, a jego wewnętrzna praca jest wykonywana przez IP i skuteczny dostawców takich jak AMD, Intel i Nvidia. Co by było, gdyby istniał nowy zestaw instrukcji graficznych zaprojektowanych do grafiki 3D i przetwarzania multimediów? Cóż, może tak być.  
  Nowe instrukcje są budowane w oparciu o podstawowy zestaw instrukcji wektorowych RISC-V. Dodadzą obsługę nowych typów danych specyficznych dla wykresów jako rozszerzeń warstwowych w duchu podstawowego RISC-V ISA. Obsługuje operacje na wektorach, operacjach matematycznych, pikselach i teksturach oraz buforach Z/ramek. Może to być zespolony układ ISA CPU-GPU. Biblioteka - grupa RISC 3D nazywa ją RV64X (rysunek 1), ponieważ instrukcje będą miały długość 64 bitów (32 bity nie wystarczą do obsługi solidnego ISA).  
 

Rysunek 1. Procesor graficzny RV64X zawiera wiele procesorów DSP, a także dedykowane jednostki teksturujące i bloki funkcyjne.
 
  Grupa stwierdziła, że ​​ich motywacją i celem było stworzenie małego, wydajnego projektu z niestandardowymi programowalnościami i rozszerzalnością. Powinien zapewniać tanie posiadanie i rozwój własności intelektualnej, a nie konkurować z produktami komercyjnymi. Można go zaimplementować na układach FPGA i ASIC, jest darmowy i ma otwarte oprogramowanie. Oryginalny projekt jest przeznaczony dla mikrokontrolerów o niskim poborze mocy, które będą kompatybilne z Khronos Vulkan i obsługują inne interfejsy API (OpenGL, DirectX itp.).  
               

Karta graficzna + RISC-V


Docelowy sprzęt będzie wyposażony w jednostkę funkcjonalną GPU i rdzeń RISC-V. Ta kombinacja występuje w postaci procesorów, w których instrukcje 64-bitowe są kodowane jako instrukcje skalarne. Chodzi o to, że kompilator wygeneruje instrukcje SIMD z prefiksowanych kodów skalarnych. Inne funkcje obejmują modyfikowalne problemy, backend SIMD oparty na predykatach; śledzenie oddziałów; dokładne wyjątki; oraz interfejs wektorowy. Projekty będą obejmować 16-bitową wersję stałoprzecinkową i 32-bitową wersję zmiennoprzecinkową. Ten pierwszy nadaje się do implementacji FPGA.  
  Zespół stwierdził: „Nie ma potrzeby używania mechanizmu wywołań RPC/IPC do wysyłania wywołań API 3D do niewykorzystanej przestrzeni pamięci procesora lub nieużywanej przestrzeni pamięci procesora do przestrzeni pamięci procesora graficznego i odwrotnie”  
  Zaletą podejścia „połączonego” procesora-GPU ISA jest to, że w mikrokodzie można używać standardowych potoków graficznych i można obsługiwać niestandardowe moduły cieniujące. Może nawet zawierać rozszerzenia śledzenia promieni.  
  Projekt będzie w formacie Vblock (z procesora graficznego Libre):  
 
  • To trochę jak VLIW (ale nie do końca).
  • Bloki instrukcji są poprzedzone znacznikami rejestrów, które zapewniają dodatkowy kontekst dla instrukcji skalarnych w tym bloku.
  • Podbloki obejmują długość wektora, obrót, nakładanie wektorów/szerokości i przewidywanie.
  • Wszystko to jest dodawane do skalarnych kodów operacji!
  • Nie ma żadnych opkodów wektorowych (ani nie są potrzebne).
  • W kontekście wektorowym wygląda to tak: jeśli skalarny kod operacji wykorzystuje rejestr i rejestr ten jest wymieniony w kontekście wektorowym, wówczas zostanie aktywowany tryb wektorowy.
  • Aktywacja powoduje, że pętla for na poziomie sprzętowym emituje wiele kolejnych operacji skalarnych (zamiast tylko jednej).
  • Implementerzy mogą dowolnie implementować pętle - SIMD, wielowydaniowe, pojedyncze wykonanie; właściwie wszystko.

  Wektor RV32-V obsługuje 8-bitowe, 16-bitowe lub 32-bitowe operacje wektorowe na element od 2 do 4 elementów. Pojawią się także dedykowane instrukcje dotyczące ogólnego potoku renderowania grafiki 3D dla 64-bitowych i 128-bitowych stałych i zmiennoprzecinkowych punktów XYZW. 8-, 16-, 24- i 32-bitowe piksele RGBA; 8-bitowe, 16-bitowe teksele UVW na komponent; oraz ustawienia światła i materiału (Ia, ka, Id, kd, Is, ks itp.).  
  Wektor atrybutów jest reprezentowany jako macierz 4×4. System będzie natywnie obsługiwał macierze 2×2 i 3×3. Obsługa wektorów może być również odpowiednia do symulacji numerycznych z wykorzystaniem 8-bitowych typów danych w postaci liczb całkowitych, powszechnych w aplikacjach AI i uczenia maszynowego.  
  W projekcie można uwzględnić niestandardowe rasteryzatory, takie jak splajny, powierzchnie SubDiv i łaty. Ta metoda umożliwia także włączenie niestandardowych etapów potoku, niestandardowych etapów geometrii/pikseli/bufora ramki, niestandardowych dzielników i niestandardowych operacji tworzenia instancji.  
             

RV64X


Implementacja referencyjna RV64X obejmuje:
 
 
  • Pamięć podręczna instrukcji/danych SRAM (32 kB)

  • Mikrokod SRAM (8 kB)

  • Dwufunkcyjny dekoder instrukcji (okablowany na stałe dla RV32V i X; dekoder instrukcji mikrokodowanych dla niestandardowego ISA)

  • Czterowektorowe ALU (32-bitowe/stałe ALU/zmiennoprzecinkowe)

  • 136-bitowy plik rejestru (1 tys. elementów)

  • specjalna jednostka funkcyjna

  • jednostka tekstury

  • Konfigurowalny lokalny bufor ramki


  RV64X to architektura skalowalna (rysunek 2). Nowością jest metoda fuzji, podobnie jak wykorzystanie konfigurowalnych rejestrów dla niestandardowych typów danych. Zdefiniowany przez użytkownika mikrokod oparty na pamięci SRAM może być używany do implementowania rozszerzeń, takich jak niestandardowe etapy rastrowania, śledzenie promieni, wizja maszynowa i uczenie maszynowe. Pojedynczy projekt można zastosować do samodzielnego mikrokontrolera graficznego lub rozwiązania wielordzeniowego ze skalowalnymi jednostkami cieniującymi.  
 

Rysunek 2. RV64X można skalować od prostej konstrukcji z niższej półki (po lewej) do rozwiązania wielordzeniowego (po prawej).  
  Rozszerzenia graficzne RISC-V dotyczą skalowalności i wielojęzyczności. Umożliwia to przypadki użycia wyższego poziomu, które prowadzą do większej liczby innowacji.  
             

co dalej


Specyfikacja RV64X jest wciąż na wczesnym etapie rozwoju i może ulec zmianom. Tworzy się forum dyskusyjne. Bezpośrednim celem jest zbudowanie przykładowej implementacji przy użyciu symulatora zestawu instrukcji. Spowoduje to otwarcie implementacji Source IP i FPGA niestandardowego adresu IP zaprojektowanego jako projekty open source.





Zastrzeżenie: Ten artykuł pochodzi z „Obserwacji przemysłu półprzewodników”. Ten artykuł przedstawia wyłącznie osobistą opinię autora, a nie opinię Sac Micro i branży, przeznaczony jest wyłącznie do przedruku i udostępniania, wsparcie. Aby chronić prawa własności intelektualnej, proszę wskazać oryginalne źródło i autora w przypadku przedruku. Jeśli doszło do naruszenia, skontaktuj się z nami, aby je usunąć.

whatsapp

Service Hotline

tel: +86 755 83044319

WhatsApp

Whatsapp:+8618073002950