Skip to content

BGPU: A Bad (Educational) GPGPU in SystemVerilog

License

Notifications You must be signed in to change notification settings

TheMightyDuckOfDoom/bgpu

Repository files navigation

BGPU: A Bad GPU

Lint RTL Simulation Gowin Simulation ASIC Synthesis Xilinx Synthesis Gowin Synthesis Gowin Implementation License

Project Goals

  1. Educational: Main purpose of BGPU is to get a better understanding of GPGPU architectures, their design decisions and tradeoffs.

  2. Highly Configurable: For design-space-exploration purposes most things should be parameterizable. Sample configurations / optimal rations of different parameters should be explored and documented.

  3. Open-Source: BGPU should run with open-source tools (simulator, assembler/compiler, synthesis/implementation).

  4. FPGA Implementation: BGPU should be able to run on reasonably sized FPGAs with acceptable performance.

Architecture

The Architecture of BGPU is most similar to NVIDIA GPUs starting from the Fermi-Microarchitecture. We implement a form of Independent-Thread-Scheduling (ITS) similiar to the NVIDIA Volta Architecture.

Please have a look at BGPU Architecture

Quickstart

To run some simple tests on different levels of hierarchy use the following targets:

make tb_compute_unit
make tb_compute_cluster
make tb_bgpu_soc

To see what is executed have a look at:

Helpfull References

Books:

  • "General-Purpose Graphics Processor Architecture" by Tor M. Aamodt, Wilson Wai Lun Fung and Timothy G. Rogers

Articles / Papers:

  • "NVIDIA TESLA: A Unified Graphics and Computing Architecture" by Erik Lindholm, John Nickolls, Stuart Oberman and John Montrym

Websites:

Introduction to GPU Roofline Performance Model

License

All code in this repository should have a permissive license. Hardware is licensed under Solderpad Hardware License 0.51 (see LICENSE-SHL)

Copyright

© Tobias Senti 2025

About

BGPU: A Bad (Educational) GPGPU in SystemVerilog

Topics

Resources

License

Stars

Watchers

Forks