Den nya versionen av Vortex-projektet har publicerats, vilket utvecklar en öppen GPGPU baserad pÄ RISC-V arkitekturens kommandoset, vilket Àr avsett för att utföra parallella berÀkningar med hjÀlp av API:et OpenCL och SIMT-modellen (Single Instruction, Multiple Threads). Projektet kan ocksÄ anvÀndas för forskning inom 3D-grafik och för utveckling av nya GPU-arkitekturer. Scheman, beskrivningar av hÄrdvarublock pÄ Verilog-sprÄket, simulatorer, drivrutiner och relaterad projektdokumentation distribueras under Apache 2.0-licensen.
Grunden för GPGPU utgörs av den typiska ISA RISC-V, vilken har utökats med vissa ytterligare instruktioner som Ă€r nödvĂ€ndiga för att stödja GPU-funktioner och strömhantering. Ăndringar i RISC-V-instruktionsuppsĂ€ttningen har minimerats och fasta vektorinstruktionerna har utnyttjats i största möjliga mĂ„n. En liknande strategi anvĂ€nds i RV64X-projektet, som ocksĂ„ utvecklar en öppen GPU baserad pĂ„ RISC-V-teknologier.

Vortexs huvudfunktioner:
- Stöd för 32- och 64-bitars RISC-V RV32IMF och RV64IMAFD instruktionuppsÀttningar.
- Konfigurerbart antal kÀrnor, arbetsblock (warps) och trÄdar.
- Konfigurerbart antal ALU, FPU, LSU och SFU för varje kÀrna.
- Konfigurerbar bredd för pipelineutmatning.
- Valfri delad minne och cache-minne pÄ nivÄerna L1, L2 och L3.
- Stöd för OpenCL 1.2-specifikationen.
- Möjlighet till implementering pÄ FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 och Xilinx Versal VCK5000.
- Utökade instruktioner: 'tex' för att pÄskynda bearbetning av texturer, vx_rast för att styra rasterisering, vx_rop för bearbetning av fragment, djup och transparens, vx_imadd för att utföra operationen 'multiplicera och addera', vx_wspawn, vx_tmc och vx_bar för att aktivera instruktionernas och strömmarnas framkant (wavefront, trÄdsamling, parallellt utförda SIMD-motorer), vx_split och vx_join.
- Stöd för mellanliggande representationer av shaders SPIR-V möjliggörs genom översÀttning till OpenCL.
- För utveckling av applikationer erbjuds en verktygslÄda som inkluderar anpassade alternativ för PoCL (kompilator och OpenCL-runtime) för Vortex, LLVM/Clang, GCC och Binutils.
- Simulering av chipets funktionalitet stöds med hjÀlp av Verilator (Verilog-simulator), RTLSIM (RTL-simulering) och SimX (programvarusimulering).
För grafik inom Vortex-teknologier utvecklas den öppna GPU Skybox, som stöder Vulkan grafik-API. Prototypen Skybox, skapad pÄ FPGA Altera Stratix 10 och som inkluderar 32 kÀrnor (512 trÄdar), nÄdde en fyllnadsprestanda pÄ 3.7 gigapixlar per sekund (29.4 gigatransaktioner per sekund) vid en klockfrekvens av 230 MHz. Det noteras att detta Àr den första öppna GPU:n med bÄde programvaru- och hÄrdvaruimplementering som stöder Vulkan.
Bland förÀndringarna i Vortex 2.1:
- API:et spawn_taskgroups har lagts till för att starta kÀrnor som anvÀnder lokal minne och stödjer minnesbarriÀrer.
- Ett nytt tillÀgg för skapande av flyttbara (relocatable) binÀrkÀrnor har föreslagits.
- Funktioner vx_mem_reserve, vx_mem_access och vx_mem_address har lagts till i minneshanterings-API:et.
- Ett nytt runtime-API vx_check_occupancy har lagts till.
- I GPU-drivrutinen har en option lagts till för att kontrollera OpenCL-tester pÄ lokal GPU.
- OpenCL-tester har lagts till som anvÀnder lokal minne (psum, sgemm2, sgemm3).
- Speciellt anpassade versioner av biblioteken libc och librt för Vortex har lagts till.
- Stöd för sammanslagning av nÀrliggande lediga minnesblock (memory coalescing) har lagts till.
- Optimisering av mikroarkitekturen har genomförts.
- Ett nytt byggskript har lagts till som separerar kÀllfiler frÄn byggkatalogen.
KĂ€lla: opennet.ru
