-
Educational: Main purpose of BGPU is to get a better understanding of GPGPU architectures, their design decisions and tradeoffs.
-
Highly Configurable: For design-space-exploration purposes most things should be parameterizable. Sample configurations / optimal rations of different parameters should be explored and documented.
-
Open-Source: BGPU should run with open-source tools (simulator, assembler/compiler, synthesis/implementation).
-
FPGA Implementation: BGPU should be able to run on reasonably sized FPGAs with acceptable performance.
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
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_socTo see what is executed have a look at:
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:
- GPGPU-Sim Wiki: http://gpgpu-sim.org/manual/index.php
Introduction to GPU Roofline Performance Model
- "Basic facts about GPUs": https://damek.github.io/random/basic-facts-about-gpus/
All code in this repository should have a permissive license. Hardware is licensed under Solderpad Hardware License 0.51 (see LICENSE-SHL)
© Tobias Senti 2025