Публикувана нова редакция на проекта Vortex, развивающи открит GPGPU на базата на архитектурата на командния набор RISC-V, предназначен за изпълнение на паралелни изчисления с помощта на OpenCL API и модела за изпълнение SIMT (Едно инструкция, множество нишки). Проектът може също да бъде използван за изследвания в областта на 3D графиката и за разработване на нови GPU архитектури. Схеми, описания на хардуерните блокове на Verilog, симулатор, драйвери и свързана проектна документация се разпространяват под лицензия Apache 2.0.
Основата на GPGPU е типовата ISA RISC-V, разширена с някои допълнителни инструкции, необходими за поддръжка на функции на GPU и управление на потоците. Промените в архитектурата на командния набор RISC-V са сведени до минимум и, когато е възможно, се използват вече съществуващите векторни инструкции. Подобен подход се прилага в проекта RV64X, който също развива отворен GPU на базата на технологии RISC-V.

Основни характеристики на Vortex:
- Поддръжка на 32- и 64-битови архитектури на командния набор RISC-V RV32IMF и RV64IMAFD.
- Настраиваем брой ядра, блокове задачи (warps) и потоци.
- Настраиваем брой ALU, FPU, LSU и SFU за всяко ядро.
- Настрачваема ширина на издаване на конвейера (pipeline issue width).
- Опционална споделена памет и кешове на нива L1, L2 и L3.
- Поддръжка на спецификация OpenCL 1.2.
- Възможност за реализация на база FPGA Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 и Xilinx Versal VCK5000.
- Разширени инструкции: 'tex' за ускорение на обработката на текстури, vx_rast за управление на растеризацията, vx_rop за обработка на фрагменти, дълбочини и прозрачност, vx_imadd за извършване на операция 'умножение и събиране', vx_wspawn, vx_tmc и vx_bar за активиране на фронтовете на инструкциите и потоките в тях (wavefront, набор от нишки, изпълнявани паралелно от SIMD Engine), vx_split и vx_join.
- Поддръжката на междинно представяне на шейдери SPIR-V е реализирана чрез транслация в OpenCL.
- За разработка на приложения се предлага инструментариум, включващ адаптирани за работа с Vortex варианти PoCL (компилатор и runtime OpenCL), LLVM/Clang, GCC и Binutils.
- Поддържа се симулиране на работата на чипа с използване на Verilator (симулатор на Verilog), RTLSIM (симулация на RTL) и SimX (програмна симулация).
За графични технологии Vortex се развива отворен GPU Skybox, който поддържа графичния API Vulkan. Прототипът Skybox, създаден на базата на FPGA Altera Stratix 10 и включващ 32 ядра (512 потока), е постигнал производителност при честота 230 MHz от 3.7 гигапиксела в секунда (29.4 гигатранзакции в секунда). Забелязва се, че това е първият отворен GPU с софтуерна и хардуерна реализация, който поддържа Vulkan.
Сред промените в версия Vortex 2.1:
- Добавен е API spawn_taskgroups за стартиране на ядра, използващи локална памет и поддържащи поставянето на бариери в паметта.
- Предложено е ново разширение за създаване на преносими (relocatable) бинарни ядра.
- В API за управление на паметта са добавени извиквания vx_mem_reserve, vx_mem_access и vx_mem_address.
- Добавен е нов runtime API vx_check_occupancy.
- В драйвера за GPU е добавена опция за проверка на OpenCL тестовете на локалния GPU.
- Добавени са OpenCL тестове, използващи локална памет (psum, sgemm2, sgemm3).
- Добавени са специално адаптирани за Vortex редакции на библиотеките libc и librt.
- Добавена е поддръжка за сливане на съседни свободни блокове памет (memory coalescing).
- Извършена е оптимизация на микроархитектурата.
- Добавен е нов скрипт за изграждане, който отделя изходните файлове от каталога за изграждане.
Източник: opennet.ru
