Nieuws
Nieuws
CUDA is getransplanteerd en op risico-v gebaseerde GPU speelt?
2022-03-17 459

RISC-V is een van de populairste onderwerpen in de computerwereld, omdat deze instructiesetarchitectuur (ISA) uitgebreide aanpassingen mogelijk maakt en gemakkelijk te begrijpen is, naast het hele open source, licentievrije voordeel. Er is zelfs een project om een ​​GPU voor algemeen gebruik te ontwerpen op basis van de RISC-V ISA, en nu zijn we getuige van de portering van Nvidia's CUDA-softwarebibliotheek naar het Vortex RISC-V GPGPU-platform.


Nvidia's CUDA (Computing Unified Device Architecture) vertegenwoordigt een uniek computerplatform en een application programming interface (API) die draait op Nvidia's lijn grafische kaarten. Wanneer een applicatie is geschreven voor CUDA-ondersteuning, krijgt het systeem, zodra het een CUDA-gebaseerde GPU ontdekt, veel GPU-versnelling van de code.


Vandaag hebben onderzoekers een manier onderzocht om CUDA-softwaretoolkit-ondersteuning mogelijk te maken op een RISC-V GPGPU-project genaamd Vortex. De Vortex RISC-V GPGPU is ontworpen om een ​​systeembrede RISC-V GPU te bieden op basis van de RV32IMF ISA. Dit betekent dat 32-bits kernen kunnen worden geschaald van GPU-ontwerpen met 1 kern tot 32 kernen. Het ondersteunt de grafische API OpenCL 1.2 en ondersteunt tegenwoordig ook enkele CUDA-bewerkingen.


De onderzoekers leggen uit: "...In dit project stellen en bouwen we een pijplijn ter ondersteuning van end-to-end CUDA-migratie: de pijplijn accepteert CUDA-broncode als invoer en voert deze uit op de uitgebreide RISC-V GPU-architectuur. pijplijn bestaat uit verschillende stappen: vertaal CUDA-broncode naar NVVM IR, converteer NVVM IR naar SPIR-V IR, stuur SPIR-V IR door naar POCL om RISC-V binair te krijgen, en voer ten slotte uit op uitgebreide RISC-V GPU binaire bestandsarchitectuur. "



Het proces wordt gevisualiseerd in de bovenstaande afbeelding en toont alle stappen om het te laten werken. In eenvoudige bewoordingen wordt de CUDA-broncode weergegeven in een intermediair representatieformaat (IR), genaamd NVVM IR, gebaseerd op de open source LLVM IR. Het werd later omgezet naar Standard Portable Intermediate Representation (SPIR-V) IR, die vervolgens werd doorgestuurd naar een draagbare open-source implementatie van de OpenCL-standaard, genaamd POCL. Omdat Vortex OpenCL ondersteunt, biedt het ondersteunde code en kan deze zonder problemen worden uitgevoerd.


Voor meer details over dit complexe proces kunt u hieronder klikken om het originele artikel te lezen. Belangrijk is dat u deze onderzoekers moet bedanken voor hun inspanningen om CUDA op RISC-V GPGPU's te laten draaien. Hoewel dit voorlopig nog maar een kleine stap is, zou het het begin kunnen zijn van een tijdperk waarin RISC-V wordt gebruikt om computertoepassingen te versnellen, net zoals Nvidia's GPU-assortiment vandaag de dag.


Uitgebreid lezen: kan RISC-V de GPU veranderen?


Kan RISC-V GPU-transacties verwerken? Dit is werk in uitvoering dat kan worden bereikt door een klein ruimte-efficiënt ontwerp te creëren met aangepaste programmeerbaarheid en schaalbaarheid.  
  Iedereen die GPU-architectuur heeft bestudeerd, weet dat dit de SIMD-constructie van een vectorprocessor is. Het is een ultra-efficiënte parallelle processor die voor alles wordt gebruikt, van het uitvoeren van simulaties en geweldige games tot het leren van robots hoe ze AI kunnen krijgen en het helpen van slimme mensen om de aandelenmarkt te manipuleren. Terwijl ik dit schrijf, controleert het zelfs mijn grammatica.  
  Maar het GPU-veld is een privéveld geworden, en het interne werk ervan wordt gedaan door de IP en effectief leveranciers van ontwikkelaars zoals AMD, Intel en Nvidia. Wat als er een nieuwe set grafische instructies zou zijn, ontworpen voor 3D-graphics en mediaverwerking? Nou, die zou er kunnen zijn.  
  De nieuwe instructies worden gebouwd op de RISC-V-basisvectorinstructieset. Ze zullen ondersteuning toevoegen voor nieuwe grafiekspecifieke gegevenstypen als gelaagde uitbreidingen in de geest van de kern RISC-V ISA. Ondersteunt vector-, eerdere wiskunde-, pixel- en textuur- en Z/Frame-bufferbewerkingen. Het zou een gefuseerde CPU-GPU ISA kunnen zijn. De bibliotheek - RISC 3D-groep noemt het RV64X (Figuur 1) omdat de instructies 64 bits lang zullen zijn (32 bits zullen niet genoeg zijn om een ​​robuuste ISA te ondersteunen).  
 

Afbeelding 1. De RV64X grafische processor bevat meerdere DSP's naast speciale textuureenheden en functieblokken.
 
  De groep verklaarde dat hun motivatie en doel was om een ​​klein, efficiënt ontwerp te creëren met aangepaste programmeerbaarheid en uitbreidbaarheid. Het moet tegen lage kosten IE-eigendom en -ontwikkeling mogelijk maken, en niet concurreren met commerciële producten. Het kan worden geïmplementeerd op FPGA- en ASIC-doelen en is gratis en open source. Het oorspronkelijke ontwerp is gericht op microcontrollers met een laag vermogen die compatibel zijn met Khronos Vulkan en andere API's ondersteunen (OpenGL, DirectX, enz.).  
               

GPU + RISC-V


De doelhardware zal een functionele GPU-eenheid en een RISC-V-kern hebben. Deze combinatie komt in de vorm van processors waarbij 64-bits instructies worden gecodeerd als scalaire instructies. Het punt is dat de compiler SIMD-instructies zal genereren op basis van vooraf ingestelde scalaire opcodes. Andere kenmerken zijn onder meer veranderlijke problemen, een op predikaten gebaseerde SIMD-backend; filiaal volgen; precieze uitzonderingen; en een vectorfrontend. Ontwerpen zullen een 16-bit versie met vast punt en een 32-bit versie met drijvende komma bevatten. De eerste is geschikt voor FPGA-implementatie.  
  Het team zei: "Het is niet nodig om het RPC/IPC-aanroepmechanisme te gebruiken om 3D API-aanroepen naar ongebruikte CPU-geheugenruimte of ongebruikte CPU-geheugenruimte naar GPU-geheugenruimte te sturen en vice versa."  
  Het voordeel van de "gefuseerde" CPU-GPU ISA-benadering is dat standaard grafische pijplijnen in microcode kunnen worden gebruikt en dat aangepaste shaders kunnen worden ondersteund. Kan zelfs ray tracing-extensies bevatten.  
  Het ontwerp zal in Vblock-formaat zijn (van een Libre GPU-inspanning):  
 
  • Het lijkt een beetje op VLIW (maar niet echt).
  • Instructieblokken worden voorafgegaan door registermarkeringen die extra context bieden voor scalaire instructies binnen dat blok.
  • Subblokken omvatten vectorlengte, rotatie, vector/breedte-overlay en voorspelling.
  • Dit alles wordt toegevoegd aan scalaire opcodes!
  • Er zijn geen vectoropcodes (en die zijn ook niet nodig).
  • In een vectorcontext gaat het als volgt: als een scalaire opcode een register gebruikt, en dat register wordt vermeld in de vectorcontext, dan wordt de vectormodus geactiveerd.
  • Activering zorgt ervoor dat de for-lus op hardwareniveau meerdere opeenvolgende scalaire bewerkingen uitzendt (in plaats van slechts één).
  • Implementeerders zijn vrij om lussen op elke gewenste manier te implementeren: SIMD, multi-issue, single-execute; vrijwel alles.

  RV32-V vector verwerkt 8-bit, 16-bit of 32-bit/element vectorbewerkingen van 2 tot 4 elementen. Er zullen ook speciale instructies zijn voor de algemene pijplijn voor het renderen van 3D-graphics voor 64-bit en 128-bit XYZW-punten met vaste en drijvende komma. 8-, 16-, 24- en 32-bit RGBA-pixels; 8-bit, 16-bit UVW-texels per component; en licht- en materiaalinstellingen (Ia, ka, Id, kd, Is, ks, enz.).  
  De attribuutvector wordt weergegeven als een 4×4-matrix. Het systeem ondersteunt standaard 2×2- en 3×3-matrices. Vectorondersteuning kan ook geschikt zijn voor numerieke simulaties met behulp van 8-bits integer-gegevenstypen die gebruikelijk zijn in AI- en machine learning-toepassingen.  
  Aangepaste rasters zoals splines, SubDiv-oppervlakken en patches kunnen in het ontwerp worden opgenomen. Met deze methode kunnen ook aangepaste pijplijnfasen, aangepaste geometrie-/pixel-/framebufferfasen, aangepaste onderverdelingen en aangepaste instancing-bewerkingen worden opgenomen.  
             

RV64X


RV64X-referentie-implementatie omvat:
 
 
  • Instructie/Data SRAM-cache (32 kB)

  • Microcode SRAM (8 kB)

  • Instructiedecoder met dubbele functie (bedraad voor RV32V en X; microgecodeerde instructiedecoder voor aangepaste ISA)

  • Quad-vector ALU (32-bit/ALU-vast/float)

  • 136-bits registerbestand (1k-elementen)

  • speciale functie-eenheid

  • textuur eenheid

  • Configureerbare lokale framebuffer


  RV64X is een schaalbare architectuur (Figuur 2). De fusiemethode is nieuw, evenals het gebruik van configureerbare registers voor aangepaste gegevenstypen. Door de gebruiker gedefinieerde, op SRAM gebaseerde microcode kan worden gebruikt om uitbreidingen te implementeren, zoals aangepaste rasterfasen, ray tracing, machine vision en machine learning. Eén enkel ontwerp kan worden toegepast op een stand-alone grafische microcontroller of een multi-core oplossing met schaalbare shader units.  
 

Afbeelding 2. De RV64X kan worden geschaald van een eenvoudig low-end ontwerp (links) naar een multi-core oplossing (rechts).  
  Grafische uitbreidingen van RISC-V richten zich op schaalbaarheid en meertaligheid. Dit maakt gebruiksscenario's op een hoger niveau mogelijk die tot meer innovatie leiden.  
             

wat is het volgende


De RV64X-specificatie bevindt zich nog in de beginfase van de ontwikkeling en is aan verandering onderhevig. Er wordt een discussieforum opgericht. Het directe doel is om een ​​voorbeeldimplementatie te bouwen met behulp van de instructiesetsimulator. Dit opent met behulp van Source IP- en FPGA-implementaties van aangepaste IP die zijn ontworpen als open source-projecten.





Disclaimer: dit artikel is overgenomen uit "Semiconductor Industry Observation". Dit artikel vertegenwoordigt alleen de persoonlijke mening van de auteur, niet de mening van Sac Micro en de industrie, alleen voor herdrukken en delen, ondersteuning. Om intellectuele eigendomsrechten te beschermen, verzoeken wij u de oorspronkelijke bron en auteur aan te geven voor herdruk. Als er sprake is van inbreuk, neem dan contact met ons op om deze te verwijderen.

whatsapp

Service Hotline

tel: +86 755 83044319

WhatsApp

Whatsapp:+8618073002950