El Barcelona Supercomputing Center-Centro Nacional de Supercomputación (BSC) ha colaborado con Codeplay Software y SiFive para ofrecer soporte v0.10 en arquitecturas RISC-V en la infraestructura de compilación de código abierto LLVM. Gracias a este soporte, los usuarios de RISC-V podrán aprovechar las capacidades de cálculo vectorial de esta nueva extensión en arquitecturas RISC-V a través de intrínsecos C/C++.
En esta colaboración, sólo los resultados científicos del BSC han sido financiados por el proyecto europeo European Processor Initiative (EPI). El investigador senior del BSC Roger Ferrer Ibáñez afirma que “las arquitecturas de código abierto RISC-V son una buena oportunidad para que Europa vuelva a liderar a nivel tecnológico. Nuestro trabajo para EPI tiene como objetivo ayudar a construir el ecosistema necesario para adoptar las arquitecturas RISC-V de forma generalizada en varios sectores, incluidos aplicaciones de la industria del automóvil, así como de la supercomputación. La nueva extensión de RISC-V desempeña un papel importante que permitirá un mayor uso de estas arquitecturas.”
"RVV ha recibido una gran acogida en el mundo de los aceleradores", añade Andrew Richards, fundador y director ejecutivo de Codeplay. "Ya estamos construyendo un ecosistema basado en SYCL sobre esta arquitectura para proporcionar herramientas a los programadores de inteligencia artificial y supercomputación y conseguir, de esta manera, una integración rápida".
Además de implementar la interfaz de programación de aplicaciones (API) para arquitecturas RISC-V con los intrínsecos para C, el BSC, Codeplay y SiFive han implementado la base de CodeGen para la autovectorización de longitud vectorial específica (VLS) y agnóstica de longitud vectorial (VLA) para RISC- V en LLVM.
Los siguientes recursos están disponibles a través de la plataforma GitHub (sólo en inglés):
- Support for the v0.10 V-extension specification https://github.com/riscv/riscv-v-spec/releases/tag/v0.10
- Support for the RVV C intrinsics: github.com/riscv/rvv-intrinsic-doc/tree/v0.10
- Implementation of the draft vector calling convention: github.com/riscv/riscv-elf-psabi-doc/pull/171
Se puede descargar el código de la extensión para arquitecturas RISC-V aquí (en inglés): github.com/riscv/rvv-intrinsic-doc/blob/master/rvv_saxpy.c
Este resultado complementa otros esfuerzos dentro del proyecto europeo EPI para aprovechar los vectores en bibliotecas ampliamente utilizadas; por ejemplo, el código de soporte de la transformada de Fourier en FFTW3, proporcionado por Atos y SiPearl, que puede encontrarse aquí: https://github.com/rdolbeau/fftw3/tree/riscv-v/simd-support
El proyecto europeo “European Processor Initiative” ha recibido financiación del programa de investigación e innovación Horizonte 2020 de la Unión Europea en virtud del acuerdo de subvención núm. 826647