Доступний випуск проекту Vortex 3.0, який розвиває відкритий 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_split, vx_join, vx_tmc і vx_bar для активації груп потоків (wavefront), паралельно виконуваних SIMD Engine.

GPGPU, що розвивається, підтримує 32- і 64-розрядні архітектури набору команд RISC-V RV32IMF і RV64IMAFD, і може включати опціональну роздільну пам'ять, кеші рівнів L1, L2 і L3, а також кількість ядер, блоків завдань (warps) і потоків, що налаштовується. У свою чергу для кожного ядра передбачена можливість включення ALU, FPU, LSU і SFU, що настроюється. Для створення прототипів можуть використовуватися FPGA Xilinx та Altera, а для симуляції роботи чіпа застосовуватися Verilator (Verilog-симулятор), RTLSIM (симуляція RTL) та SimX (програмна симуляція).
Для розробки додатків пропонується інструментарій, що включає адаптовані для роботи з Vortex варіанти PoCL (компілятор та runtime OpenCL), LLVM/Clang, GCC та Binutils. Проектом підтримується специфікація OpenCL 1.2 і через трансляцію OpenCL реалізована підтримка проміжного подання шейдерів SPIR-V.
Серед змін у Vortex 3.0:
- Додано апаратний графічний стек, що включає блоки для растеризації, накладання текстур та злиття виводу (OM - Output Merger). Для Mesa на базі реалізованого графічного стека та програмного розтеризатора lavapipe підготовлений Vulkan-драйвер vortexpipe.
- Розширено можливості тензорного ядра, призначеного для прискорення виконання моделей машинного навчання, в якому реалізовано підтримку структурної розрідженості (structured sparsity) для стиснення вагових матриць.
- Реалізовано операцію WGMMA (warpgroup-level matrix multiplication) для множення матриць в асинхронному режимі.
- Доданий двигун DXA (Data Transfer Acceleration) для прискорення передачі з глобальної в локальну пам'ять.
- Реалізовано нову архітектуру на базі процесора команд (CP, Command Processor) та апаратного планувальника обчислювальних ядер (KMU - Kernel Management Unit), що дозволяє винести на бік чіпа операції диспетчеризації обчислювальних потоків.
- Запропоновано нову runtime-бібліотеку, що працює в неблокувальному режимі і надає абстракції, що транслюються в апаратні команди, що асинхронно виконуються. Підтримуються черги, події, модулі та синхронізація на базі асинхронних бар'єрів із семантикою arrive/wait/event.
- Додано підтримку укорочених інструкцій RISC-V (RVC).
- Реалізовано апаратну підтримку атомарних операцій (Hardware Atomics).
- Повністю перероблено FPU та запропоновано нові блоки помножувачів (Wallace-tree, Folded-radix) та суматорів (Kogge-Stone).
- Додано стек віртуальної пам'яті на базі блоку управління пам'яттю (MMU) за допомогою 32-бітної архітектури віртуальної адресації SV32.
- Підтримка RISC-V розширення Zicond з реалізацією умовних операцій.
- Інтегровано керування тактовою частотою (clock gating).
- Реалізована підтримка мови HIP (Heterogeneous Interface for Portability) через фреймворк chipStar, що транслює HIP в SPIR-V.
- Забезпечено повноцінну інтеграцію з симулятором GEM5 та додано підтримку симулятора SimX на архітектурі TLM (Transaction-Level Modeling).
- Додана підтримка інструментаріїв Synopsys та Yosys для синтезу логіки для виробництва чіпів, а також підтримка використання бібліотек стандартних елементів ASAP7 (7nm), SAED14 (14nm) та NanGate (15nm).
- Еталонний інструментарій оновлено до LLVM 20 та POCL 7.0.
Джерело: opennet.ru
