El proyecto Vortex 3.0, que desarrolla una GPGPU de código abierto basada en la arquitectura de conjunto de instrucciones RISC-V y diseñada para computación paralela mediante la API OpenCL y el modelo de ejecución SIMT (Single Instruction, Multiple Threads), ya está disponible. El proyecto también puede utilizarse para la investigación en gráficos 3D y el desarrollo de nuevas arquitecturas de GPU. Los esquemas, las descripciones de los bloques de hardware en Verilog, el simulador, los controladores y la documentación de diseño correspondiente se distribuyen bajo la licencia Apache 2.0.
GPGPU se basa en la arquitectura RISC-V estándar, ampliada con instrucciones adicionales para admitir funciones de GPU y gestión de subprocesos. Los cambios en la arquitectura del conjunto de instrucciones RISC-V se reducen al mínimo y se utilizan instrucciones vectoriales existentes siempre que sea posible. Las instrucciones adicionales incluyen: "tex" para acelerar el procesamiento de texturas; vx_rast para el control de rasterización; vx_rop para el procesamiento de fragmentos, profundidad y transparencia; vx_imadd para operaciones de multiplicación y suma; vx_wspawn, vx_split, vx_join, vx_tmc y vx_bar para activar grupos de subprocesos (wavefronts) ejecutados en paralelo por el motor SIMD.

La GPGPU en desarrollo admite arquitecturas de conjuntos de instrucciones RISC-V RV32IMF y RV64IMAFD de 32 y 64 bits, e incluye memoria compartida opcional, cachés L1, L2 y L3, y un número configurable de núcleos, warps e hilos. Cada núcleo también puede incluir un número configurable de ALU, FPU, LSU y SFU. Se pueden usar FPGA de Xilinx y Altera para la creación de prototipos, y Verilator (simulador Verilog), RTLSIM (simulación RTL) y SimX (simulación por software) para la simulación del chip.
Para el desarrollo de aplicaciones, se ofrece un conjunto de herramientas que incluye versiones adaptadas a Vortex de PoCL (compilador y entorno de ejecución de OpenCL), LLVM/Clang, GCC y Binutils. El proyecto es compatible con la especificación OpenCL 1.2 e implementa la compatibilidad con la representación intermedia de sombreadores SPIR-V mediante su traducción a OpenCL.
Los cambios en Vortex 3.0 incluyen:
- Se ha añadido una pila de gráficos por hardware, que incluye bloques para rasterización, mapeo de texturas y fusión de salida (OM). Se ha desarrollado un controlador Vulkan, vortexpipe, para Mesa, basado en la pila de gráficos implementada y el rasterizador de software lavapipe.
- Se han ampliado las capacidades de Tensor Core, diseñado para acelerar la ejecución de modelos de aprendizaje automático, implementando soporte para la escasez estructurada para la compresión de matrices de pesos.
- La operación WGMMA (multiplicación de matrices a nivel de grupo de deformación) se ha implementado para la multiplicación de matrices en modo asíncrono.
- Se ha añadido el motor DXA (Aceleración de Transferencia de Datos) para agilizar la transferencia de datos de la memoria global a la memoria local.
- Se ha implementado una nueva arquitectura basada en un procesador de comandos (CP) y un planificador de hardware de núcleos de computación (KMU - Unidad de Gestión del Núcleo), que permite la distribución de hilos de computación al lado del chip.
- Se propone una nueva biblioteca de tiempo de ejecución que opera en modo no bloqueante y proporciona abstracciones que se traducen en comandos de hardware ejecutados de forma asíncrona. Se admiten colas, eventos, módulos y sincronización basada en barreras asíncronas con semántica de llegada/espera/evento.
- Se ha añadido compatibilidad con las instrucciones abreviadas de RISC-V (RVC).
- Se ha implementado la compatibilidad de hardware para operaciones atómicas (Hardware Atomics).
- La unidad de punto flotante (FPU) ha sido completamente rediseñada y se han introducido nuevos bloques multiplicadores (árbol de Wallace, raíz plegada) y sumadores (Kogge-Stone).
- Se ha añadido una pila de memoria virtual basada en la unidad de gestión de memoria (MMU) con soporte para la arquitectura de direccionamiento virtual SV32 de 32 bits.
- Compatibilidad con la extensión Zicond de RISC-V mediante la implementación de operaciones condicionales.
- Control de reloj integrado.
- Se ha implementado la compatibilidad con el lenguaje HIP (Heterogeneous Interface for Portability) a través del marco de trabajo chipStar, que traduce HIP a SPIR-V.
- Se ha logrado una integración completa con el simulador GEM5 y se ha añadido compatibilidad con el simulador SimX en la arquitectura TLM (Transaction-Level Modeling).
- Se ha añadido compatibilidad con los kits de herramientas de Synopsys y Yosys para la síntesis lógica en la fabricación de chips, así como compatibilidad con el uso de las bibliotecas de elementos estándar ASAP7 (7 nm), SAED14 (14 nm) y NanGate (15 nm).
- La cadena de herramientas de referencia se ha actualizado a LLVM 20 y POCL 7.0.
Fuente: opennet.ru
