Публикувана версия на проекта Vortex 2.2, който развива отворен GPGPU на базата на архитектура с набор от команди RISC-V, проектиран за изпълнение на паралелни изчисления с помощта на API OpenCL и модела на изпълнение SIMT (Single Instruction, Multiple Threads). Проектът може също така да се използва за изследвания в областта на 3D графиката и при разработването на нови архитектури на GPU. Схеми, описания на хардуерни блокове на Verilog, симулатор, драйвери и свързана проектна документация се разпространяват под лицензия Apache 2.0.
Основата на GPGPU е типичен ISA RISC-V, разширен с някои допълнителни инструкции, необходими за поддържане на функции на GPU и управление на потоковете. В същото време промените в архитектурата на набора от команди RISC-V са сведени до минимум и по възможност се използват вече наличните векторни инструкции. Сред допълнителните инструкции може да се отбележи: «tex» за ускорение на обработката на текстури, vx_rast за управление на растеризацията, vx_rop за обработка на фрагменти, дълбочина и прозрачност, vx_imadd за изпълнение на операцията «умножаване и събиране», vx_wspawn, vx_tmc и vx_bar за активиране на фронтовете на инструкциите и потоковете в тях (wavefront, набор от нишки, изпълнявани паралелно от SIMD Engine), vx_split и vx_join.

Развиваният GPGPU поддържа 32- и 64-битови архитектури на набора от команди RISC-V RV32IMF и RV64IMAFD и може да включва опционална споделена памет, кешове на нива L1, L2 и L3, както и настраиваемо число ядра, блокове задачи (warps) и потоци. За всяко ядро е предвидена възможност за включване на настраиваемо число ALU, FPU, LSU и SFU. За създаване на прототипи могат да се използват FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 и Xilinx Versal VCK5000. За симулация на работата на чипа могат да се използват Verilator (симулатор на Verilog), RTLSIM (симулация на RTL) и SimX (програмна симулация).
За разработка на приложения се предлага инструментарий, включващ адаптирани за работа с Vortex варианти PoCL (компилатор и runtime OpenCL), LLVM/Clang, GCC и Binutils. Проектът поддържа спецификация OpenCL 1.2 и чрез трансляция в OpenCL реализира подкрепа на междинно представяне на шейдера SPIR-V. За графика в технологиите Vortex се развива отворен GPU Skybox, който поддържа графичния API Vulkan. Прототипът Skybox, създаден на база FPGA Altera Stratix 10 и включващ 32 ядра (512 потока), позволява при честота 230 MHz да се постигне производителност на запълване от 3.7 гигапиксела в секунда (29.4 гига-транзакции в секунда).
Сред промените в версия Vortex 2.2:
- Добавен е API vx_spawn_taskgroups за стартиране на ядра, поддържащи сегментирано изпълнение на 3D задачи.
- Добавена е поддръжка на ZICOND, разширение на архитектурата на командния набор RISC-V, осигуряващо условно изпълнение на операции без разклоняване.
- Компилаторът OpenCL е преместен към планиране на изпълнението на ниво отделни потоци (thread-level, всеки поток изпълнява своя задача независимо от другите потоци), а не на групи задачи (warp-level), както беше преди.
- В OpenCL е добавена поддръжка на JIT компилация и 64-битови ядра.
- Реализирана е поддръжка на динамично зареждане на Vortex runtime.
- Предложена е нова документация за настройка на FPGA Xilinx.
- Включено е тестване на синтеза на логика с използване на инструментария Yosys.
- В хиарархичните операции flush и в режим write-back е осигурена поддръжка на кеша.
- Извършена е оптимизация на скоростта на scoreboard верификацията и работата с операндите на ниво регистрови предавания (RTL, Register Transfer Level).
- Добавена е поддръжка на симулатора на DRAM памет Ramulator 2.0.
- Осуществен е преход към използване на нови версии Verilator 5.0 (симулатор SystemVerilog) и LLVM 18.0, както и обновен инструментарий на база CentOS 7.9.
- Вместо системата за непрекъсната интеграция Travis CI е задействан сервис GitHub CI.
Източник: opennet.ru
