/vortex

Primary LanguageVerilogApache License 2.0Apache-2.0

Vortex GPGPU

Vortex is a full-stack open-source RISC-V GPGPU.

Specifications

  • Support RISC-V RV32IMAF and RV64IMAFD
  • Microarchitecture:
    • configurable number of cores, warps, and threads.
    • configurable number of ALU, FPU, LSU, and SFU units per core.
    • configurable pipeline issue width.
    • optional local memory, L1, L2, and L3 caches.
  • Software:
    • OpenCL 1.2 Support.
  • Supported FPGAs:
    • Altera Arria 10
    • Altera Stratix 10
    • Xilinx Alveo U50, U250, U280
    • Xilinx Versal VCK5000

Directory structure

  • doc: Documentation.
  • hw: Hardware sources.
  • driver: Host drivers repository.
  • runtime: Kernel Runtime software.
  • sim: Simulators repository.
  • tests: Tests repository.
  • ci: Continuous integration scripts.
  • miscs: Miscellaneous resources.

Build Instructions

More detailed build instructions can be found here.

Supported OS Platforms

  • Ubuntu 18.04, 20.04
  • Centos 7

Toolchain Dependencies

Install development tools

sudo apt-get install build-essential
sudo apt-get install binutils
sudo apt-get install python
sudo apt-get install uuid-dev
sudo apt-get install git

Install Vortex codebase

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

Configure your build folder

mkdir build
cd build
../configure --xlen=32 --tooldir=$HOME/tools

Install prebuilt toolchain

./ci/toolchain_install.sh --all

Set environment variables

# should always run before using the toolchain!
source ./ci/toolchain_env.sh

Building Vortex

make -s

Quick demo running vecadd OpenCL kernel on 2 cores

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

Common Developer Tips

  • Installing Vortex kernel and runtime libraries to use with external tools requires passing --prefix= to the configure script.
../configure --xlen=32 --tooldir=$HOME/tools --prefix=<install-path>
make -s
make install
  • Building Vortex 64-bit simply requires using --xlen=64 configure option.
../configure --xlen=32 --tooldir=$HOME/tools
  • Sourcing "./ci/toolchain_env.sh" is required everytime you start a new terminal. we recommend adding "source /ci/toolchain_env.sh" to your ~/.bashrc file to automate the process at login.
echo "source <build-path>/ci/toolchain_env.sh" >> ~/.bashrc
  • Making changes to Makefiles in your source tree or adding new folders will require executing the "configure" script again to get it propagated into your build folder.
../configure
  • To debug the GPU, you can generate a "run.log" trace. see /docs/debugging.md for more information.
./ci/blackbox.sh --app=demo --debug=3
  • For additional information, check out the /docs.