Vortex, a project that develops a GPGPU based on RISC-V

Vortex, RISC-V based GPGPU

RISC-V is an architecture that has gained a lot of popularity In recent years, this thanks to its open source (ISA) design and this, adding that it has become one of the most important processor architectures due to its flexibility and modularity.

Thanks to that Various projects based on RISC-V have been launched and one of them is Vortex which we are going to talk about today here on the blog.

What is the Vortex project?

V es a project that develops a GPGPU, based on the RISC-V architecture. The project is designed to perform parallel computing using the OpenCL API and the SIMT execution model.

The core of the Vortex GPGPU is a generic RISC-V, on which improvements have been implemented with some additional instructions required to support GPU functionality and thread control. At the same time, changes to the RISC-V instruction set architecture are kept to a minimum and existing vector instructions are used whenever possible. A similar approach is used in the RV64X project, which also develops an open GPU based on RISC-V technologies.

Another feature Vortex is that the GPGPU has advanced instructions, among which are: »tex» to speed up texture processing, «vx_rast» to control rasterization, «vx_rop» to handle fragments, depth and transparency, «vx_imadd» to perform multiplication and addition operations, «vx_wspawn» , "vx_tmc" and "vx_bar" to activate instruction edges and wavefronts (a set of threads executed in parallel by the SIMD engine), "vx_split" and "vx_join".

Of the cVortex main features that stand out the following are found:

  •  Support for 32-bit and 64-bit RISC-V instruction set architectures: RV32IMF and RV64IMAFD.
  • Configurability: Configurable number of cores, task blocks (warps) and threads.
  • Processing unit: Configurable number of ALU, FPU, LSU and SFU per core.
  • Outlet Width: Adjustable pipe outlet width.
  • Memory: Optional shared memory and L1, L2 and L3 caches.
  • OpenCL 1.2 specification support.
  • FPGA-based implementation: Possibility of implementation on Altera Arria 10, Altera Stratix 10, Xilinx Alveo U50, U250, U280 and Xilinx Versal VCK5000 FPGAs.
  • SPIR-V support: Implemented through translation to OpenCL.
    Development Tools: A toolset that includes variants of PoCL (OpenCL compiler and runtime), LLVM/Clang, GCC, and Binutils adapted to work with Vortex.
  • Chip Simulation: Supported using Verilator (Verilog simulator), RTLSIM (RTL simulation), and SimX (software simulation).
    Skybox GPU

Besides that, for graphics based on Vortex technologies, a Skybox GPU is being developed open that supports the Vulkan graphics API. It is mentioned that the Skybox prototype is created on the basis of the Altera Stratix 10 FPGA and including 32 cores (512 threads) at a frequency of 230 MHz. It should be noted that this is the first open GPU with software and hardware implementation compatible with Vulkan

It is worth mentioning that Currently the Vortex project is in its version 2.1, which was recently released and important changes have been implemented such as: memory merging support (which is now supported), CSR instruction processing has been optimized, overloading has been optimized, a new build configuration script, among other things:

  • Kernel API addedpawn_taskgroups to run kernels that use local memory and barriers
  • New runtime extension for relocatable kernel binaries and arguments.
  • New runtime memory API additions: vx_mem_reserve, vx_mem_access, vx_mem_address
  • new runtime API vx_check_occupancy
  • Added GPU driver option to try OpenCL tests on the local GPU (e.g. blackbox.sh –driver=gpu –app=sgemm)
  • Added OpenCL tests that are used with local memory (psum, sgemm2, sgemm3)
  • Added custom vortex libc and librt libraries with control divergence instrumentation.

If you are interested in learning more about it, you should know that the schematics, descriptions of the hardware blocks in Verilog language, the simulator, the drivers and the accompanying design documentation are distributed under the Apache 2.0 license. You can check the details in the following link

Leave a Comment

Your email address will not be published. Required fields are marked with *



  1. Responsible for the data: AB Internet Networks 2008 SL
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.