No description
  • C++ 36.7%
  • SystemVerilog 19.2%
  • C 15.6%
  • PostScript 13.4%
  • Verilog 5.9%
  • Other 9.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Blaise Tine 48fc0069d2
Some checks failed
CI / plan (push) Has been cancelled
CI / setup (push) Has been cancelled
CI / build (32) (push) Has been cancelled
CI / build (64) (push) Has been cancelled
CI / complete (push) Has been cancelled
RHEL 9 toolchain support (rhel/9 prebuilt bundles)
EL9 hosts were mapped to the centos/7 bundle set, which has no LLVM,
POCL, chipStar, Mesa, Yosys or OpenSTA bundle, and whose GCC 13
riscv-gnu toolchain no longer links the kernel library (its newlib
dropped HAVE_INITFINI_ARRAY). The ubuntu/focal bundles need glibc 2.35 /
GLIBCXX_3.4.30 and do not load on EL9 (glibc 2.34, GCC 11 libstdc++).

- configure: EL9 (rhel/rocky/alma/centos 9) -> OSVERSION=rhel/9;
  EL7/EL8 keep centos/7.
- toolchain_install: rhel/9 part counts; riscv32/64 and sv2v reuse the
  ubuntu/focal bundles (glibc 2.14 only).
- third_party/Makefile: rebuild softfloat when SOFTFLOAT_OPTS changes;
  a pre-THREAD_LOCAL archive otherwise survived and broke the simx link.
- docs: RHEL 9 install section, per-OS bundle provenance and refresh
  rule; sgemm smoke args -n10 -> -n16 (the app requires n % 4 == 0).

Requires the rhel/9 bundles in vortex-toolchain-prebuilt at the
TOOLCHAIN_REV tag (v3.0.1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 12:43:52 -08:00
.github CP regfile Fmax, early-Z fix + default on, asic_gate 4x4 top/gfx, CI shards + ccache (#425) 2026-10-05 22:13:46 -07:00
ci RHEL 9 toolchain support (rhel/9 prebuilt bundles) 2026-11-02 12:43:52 -08:00
docs RHEL 9 toolchain support (rhel/9 prebuilt bundles) 2026-11-02 12:43:52 -08:00
hw RTU performance counters + perf-counter fixes (#435) 2026-10-25 22:48:53 -07:00
miscs Rv64 fixes (#427) 2026-10-13 00:42:09 -07:00
profiles Rv64 fixes (#427) 2026-10-13 00:42:09 -07:00
sim RTU performance counters + perf-counter fixes (#435) 2026-10-25 22:48:53 -07:00
sw RTU performance counters + perf-counter fixes (#435) 2026-10-25 22:48:53 -07:00
tests RTU performance counters + perf-counter fixes (#435) 2026-10-25 22:48:53 -07:00
third_party RHEL 9 toolchain support (rhel/9 prebuilt bundles) 2026-11-02 12:43:52 -08:00
trace TCU with local accumulator 2026-04-06 09:25:36 -07:00
.clang-format adding clang-format file 2024-12-05 15:58:04 -08:00
.gitignore RHEL 9 toolchain support (rhel/9 prebuilt bundles) 2026-11-02 12:43:52 -08:00
.gitmodules gfx migration: full TLM-aligned simx + RTL CSR plumbing for draw3d 2026-05-06 02:20:58 -07:00
AGENTS.md RHEL 9 toolchain support (rhel/9 prebuilt bundles) 2026-11-02 12:43:52 -08:00
CHANGELOG.md RHEL 9 toolchain support (rhel/9 prebuilt bundles) 2026-11-02 12:43:52 -08:00
config.mk.in Rv64 fixes (#427) 2026-10-13 00:42:09 -07:00
configure RHEL 9 toolchain support (rhel/9 prebuilt bundles) 2026-11-02 12:43:52 -08:00
CONTRIBUTING.md docs: add CHANGELOG.md + CONTRIBUTING.md + bug_fixes.md, refactor AGENTS.md, sync doc set to v3.0 2026-05-24 21:49:02 -07:00
LICENSE Vortex 2.0 changes: 2023-10-19 20:51:22 -07:00
Makefile.in graphics: SW stack refactor + device-launched fragment dispatch (Stage A) 2026-06-30 03:27:43 -07:00
README.md Change Vortex website URL in README 2026-10-15 15:49:47 -04:00
VERSION ci: bump toolchain to v3.0.1 for fresh pocl kernel-lib bitcode 2026-07-30 07:47:12 -07:00
vortex_opae.toml AFU: restore host soft reset so warm device opens start clean 2026-07-22 12:15:48 -07:00
VX_config.toml MUFU + Zfhmin (#432) 2026-10-23 14:17:56 -07:00
VX_types.toml RTU performance counters + perf-counter fixes (#435) 2026-10-25 22:48:53 -07:00

Vortex framework stack

Vortex GPGPU

Vortex is a full-stack open-source RISC-V GPGPU. Vortex supports multiple backend drivers, including our C++ simulator (simx), an RTL simulator, and physical Xilinx and Altera FPGAs-- all controlled by a single driver script. The chosen driver determines the corresponding code invoked to run Vortex. Generally, developers will prototype their intended design in simx, before completing going forward with an RTL implementation. Alternatively, you can get up and running by selecting a driver of your choice and running a demo program.

Website

Vortex news can be found on its website

Citation

@inproceedings{10.1145/3466752.3480128,
	author = {Tine, Blaise and Yalamarthy, Krishna Praveen and Elsabbagh, Fares and Hyesoon, Kim},
	title = {Vortex: Extending the RISC-V ISA for GPGPU and 3D-Graphics},
	year = {2021},
	isbn = {9781450385572},
	publisher = {Association for Computing Machinery},
	address = {New York, NY, USA},
	url = {https://doi.org/10.1145/3466752.3480128},
	doi = {10.1145/3466752.3480128},
	abstract = {The importance of open-source hardware and software has been increasing. However, despite GPUs being one of the more popular accelerators across various applications, there is very little open-source GPU infrastructure in the public domain. We argue that one of the reasons for the lack of open-source infrastructure for GPUs is rooted in the complexity of their ISA and software stacks. In this work, we first propose an ISA extension to RISC-V that supports GPGPUs and graphics. The main goal of the ISA extension proposal is to minimize the ISA changes so that the corresponding changes to the open-source ecosystem are also minimal, which makes for a sustainable development ecosystem. To demonstrate the feasibility of the minimally extended RISC-V ISA, we implemented the complete software and hardware stacks of Vortex on FPGA. Vortex is a PCIe-based soft GPU that supports OpenCL and OpenGL. Vortex can be used in a variety of applications, including machine learning, graph analytics, and graphics rendering. Vortex can scale up to 32 cores on an Altera Stratix 10 FPGA, delivering a peak performance of 25.6 GFlops at 200 Mhz.},
	booktitle = {MICRO-54: 54th Annual IEEE/ACM International Symposium on Microarchitecture},
	pages = {754–766},
	numpages = {13},
	keywords = {reconfigurable computing, memory systems., computer graphics},
	location = {Virtual Event, Greece},
	series = {MICRO '21}
}

Specifications

  • Support RISC-V RV32IMAFC and RV64IMAFDC

  • Microarchitecture:

    • configurable number of cores, warps, and threads.
    • configurable number of ALU, FPU, LSU, and SFU units per core.
    • graphics fixed-function pipeline (rasterizer, texture units, output mergers).
    • hardware ray-tracing unit (BVH traversal, ray-box and ray-triangle intersection).
    • tensor cores with WGMMA and 2:4 structured sparsity support.
    • hardware-accelerated command processor and kernel management unit.
    • configurable pipeline issue width.
    • optional local memory, L1, L2, and L3 caches.
  • Software:

    • OpenCL 1.2
    • Vulkan
    • HIP
  • Supported FPGAs:

    • Altera Arria 10
    • Altera Stratix 10
    • Xilinx Alveo U50, U55C, U250, U280
    • Xilinx Alveo V80 (Versal, via the SLASH platform — see setup guide)
    • Xilinx Versal VCK5000

Directory structure

  • doc: Documentation.
  • hw: Hardware sources.
  • sw: Software sources (kernel, runtime, and drivers).
  • sim: Simulators repository.
  • tests: Tests repository.
  • ci: Continuous integration scripts.
  • miscs: Miscellaneous resources.
  • VX_config.toml / VX_types.toml: Hardware configuration system.

Quick Start

If you are interested in a stable release of Vortex, you can download the latest release here. Otherwise, you can pull the most recent, but (potentially) unstable version as shown below. The following steps demonstrate how to build and run Vortex with the default driver: SimX. If you are interested in a different backend, look here.

Supported OS Platforms

  • Ubuntu 22.04
  • Centos 7

Toolchain Dependencies

The following dependencies will be fetched prebuilt by toolchain_install.sh.

Install Vortex codebase

	git clone --depth=1 --recursive https://github.com/vortexgpgpu/vortex.git
	cd vortex

Install system dependencies

# ensure dependent libraries are present
sudo ./ci/install_dependencies.sh

Configure your build folder

    mkdir build
    cd build
    # for 32bit
    ../configure --xlen=32 --tooldir=$HOME/tools
    # for 64bit
    ../configure --xlen=64 --tooldir=$HOME/tools

Install prebuilt toolchain

   ./ci/toolchain_install.sh

Building and installing Vortex

make -s
make install
export VORTEX_PATH=$(pwd)/install
export PKG_CONFIG_PATH=$VORTEX_PATH/lib/pkgconfig:$PKG_CONFIG_PATH

make install lays out a sysroot under $VORTEX_PATH containing the public headers, libraries, and vortex-runtime.pc / vortex-kernel.pc pkg-config files. Downstream tools (mesa-vortex, pocl-vortex, chipstar) integrate with Vortex exclusively through $VORTEX_PATH and pkg-config — the same shape as the CUDA, ROCm and oneAPI SDKs. The source tree ($VORTEX_HOME) and build tree ($VORTEX_BUILD_DIR) are internal to Vortex and not exposed to consumers. Override the install root with ../configure --prefix=<path> or --installdir=<path> (default <build>/install).

Quick demo running vecadd OpenCL kernel on 2 cores

./ci/blackbox.sh --cores=2 --app=vecadd

Compiler Toolchain (VOLT)

Vortex's compiler toolchain is VOLT (Vortex-Optimized Lightweight Toolchain), an LLVM-based SIMT compiler for the Vortex GPU. To build the toolchain locally instead of using the prebuilt one, follow the instructions in the VOLT repo. Its design is described in the VOLT paper (CC '26).

Common Developer Tips

  • Building Vortex 64-bit requires setting --xlen=64 configure option.
../configure --xlen=64 --tooldir=$HOME/tools
  • No shell environment setup is required. ../configure bakes the full toolchain layout (paths, XCONFIGS, every tool binary) into the build dir's config.mk and domain common.mk files. Make recipes invoke tools by absolute path ($(VERILATOR_PATH)/bin/verilator etc.), so multiple Vortex trees on the same machine can coexist without any ~/.bashrc sourcing.
  • Making changes to Makefiles in your source tree, editing VX_config.toml (or any *.toml), or adding new folders will require executing the "configure" script again without any options to get changes propagated to your build folder.
../configure
  • Always make sure your build is up to date before running any test or app: re-run ../configure from your build folder first. configure regenerates <build>/sw/VX_config.h and <build>/hw/*.vh from VX_config.toml (only when the toml is newer). The simulator and RTL #include this generated header, so a stale header makes them compile against old config values and silently diverge from the toml. VX_config.toml is the single source of truth — never paper over a divergence by hardcoding -DVX_CFG_* flags in a Makefile; re-configure instead.
  • To debug the GPU, the simulation can generate a runtime trace for analysis. See /docs/debugging.md for more information.
./ci/blackbox.sh --app=demo --debug=3
  • Running the CI suite locally: the test catalog lives in ci/testcases/ and runs through pytest via the regression.sh wrapper (from your build folder). See docs/continuous_integration.md for details.
./ci/regression.sh --all               # full catalog
./ci/regression.sh --test regression   # one category