Een nieuwe editie van het Vortex-project is gepubliceerd, dat een open GPGPU ontwikkelt op basis van de RISC-V instructiesetarchitectuur, ontworpen voor het uitvoeren van parallelle berekeningen met behulp van de OpenCL API en het SIMT (Single Instruction, Multiple Threads) uitvoeringsmodel. Het project kan ook worden gebruikt voor onderzoek op het gebied van 3D-graphics en de ontwikkeling van nieuwe GPU-architecturen. Schema's, beschrijvingen van hardware-onderdelen in Verilog, simulators, stuurprogramma's en bijbehorende projectdocumentatie worden verspreid onder de Apache 2.0-licentie.
De basis van GPGPU is een typische RISC-V ISA, uitgebreid met enkele extra instructies die nodig zijn voor de ondersteuning van GPU-functies en het beheer van threads. Wijzigingen in de architectuur van de RISC-V instructieset zijn tot een minimum beperkt en indien mogelijk worden al bestaande vectorinstructies gebruikt. Een soortgelijke benadering wordt gevolgd in het RV64X-project, dat ook een open GPU ontwikkelt op basis van RISC-V-technologieƫn.

Belangrijkste kenmerken van Vortex:
- Ondersteuning voor 32- en 64-bits RISC-V instructiesetarchitecturen RV32IMF en RV64IMAFD.
- Instelbaar aantal kernen, taakblokken (warps) en threads.
- Instelbaar aantal ALU, FPU, LSU en SFU per kern.
- Instelbare breedte van de pijplijnafgifte (pipeline issue width).
- Optionele gedeelde geheugen en caches op niveaus L1, L2 en L3.
- Ondersteuning voor OpenCL specificatie 1.2.
- Mogelijkheid voor implementatie op basis van Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 en Xilinx Versal VCK5000.
- Uitgebreide instructies: 'tex' voor verbeterde texture-processing, vx_rast voor rasterisatiebeheer, vx_rop voor fragment-, diepte- en transparantieverwerking, vx_imadd voor de operatie 'vermenigvuldigen en optellen', vx_wspawn, vx_tmc en vx_bar voor het activeren van instructie- en threadfronten daarin (wavefront, groep threads die gelijktijdig door SIMD Engine worden uitgevoerd), vx_split en vx_join.
- Ondersteuning voor de tussentijdse representatie van shaders SPIR-V wordt gerealiseerd door vertaling naar OpenCL.
- Voor de ontwikkeling van toepassingen wordt een toolkit aangeboden, die aangepaste versies van PoCL (compiler en runtime OpenCL), LLVM/Clang, GCC en Binutils voor gebruik met Vortex omvat.
- Simulatie van chipwerkzaamheden wordt ondersteund met behulp van Verilator (Verilog-simulator), RTLSIM (RTL-simulatie) en SimX (softwarematige simulatie).
Voor graphics op Vortex-technologieƫn wordt de open GPU Skybox ontwikkeld, die de grafische API Vulkan ondersteunt. De prototype Skybox, gebouwd op de FPGA Altera Stratix 10 en met 32 kernen (512 threads), maakte het mogelijk om bij een frequentie van 230 MHz een vulprestaties van 3,7 gigapixels per seconde (29,4 gigatransacties per seconde) te behalen. Dit is de eerste open GPU met software- en hardware-implementatie die Vulkan ondersteunt.
Onder de wijzigingen in versie Vortex 2.1:
- De API spawn_taskgroups is toegevoegd voor het starten van kernen die lokaal geheugen gebruiken en geheugenbarriĆØres ondersteunen.
- Een nieuwe uitbreiding is voorgesteld voor het maken van verplaatsbare (relocatable) binaire kernen.
- De geheugenbeheers-API heeft de aanroepen vx_mem_reserve, vx_mem_access en vx_mem_address toegevoegd.
- Een nieuwe runtime API vx_check_occupancy is toegevoegd.
- De driver voor de GPU heeft een optie toegevoegd voor het testen van OpenCL-tests op de lokale GPU.
- OpenCL-tests die lokaal geheugen gebruiken (psum, sgemm2, sgemm3) zijn toegevoegd.
- Speciaal aangepaste versies van de bibliotheken libc en librt zijn toegevoegd voor Vortex.
- Ondersteuning voor het samenvoegen van aangrenzende vrije geheugensegmenten (memory coalescing) is toegevoegd.
- De microarchitectuur is geoptimaliseerd.
- Er is een nieuw buildscript toegevoegd dat de bronbestanden van de buildmap scheidt.
Bron: opennet.ru
