• Stars
    star
    304
  • Rank 137,274 (Top 3 %)
  • Language
    C++
  • License
    MIT License
  • Created over 5 years ago
  • Updated 12 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Demonstration of various hardware effects on CUDA GPUs.

GPU hardware effects

This repository demonstrates hardware effects that can affect application performance on Nvidia CUDA GPUs. For each effect I try to create a proof of concept program that is as small as possible so that it can be understood easily. My goal is to demonstrate effects that are caused by the underlying hardware architecture design and cannot be explained by looking at the source code alone.

Related repository with CPU hardware effects: https://github.com/kobzol/hardware-effects

The demonstrated effects of course depend heavily on your GPU microarchitecture and model. Right now there the example programs are focused on CUDA GPUs.

Currently the following effects are demonstrated:

  • bank conflicts
  • memory access coalescing
  • shared memory resource limits

Every example directory has a README that explains the individual effects.

Isolating those hardware effects can be very tricky, so it's possible that some of the examples are actually demonstrating something entirely else (or nothing at all :) ). If you have a better explanation of what is happening, please let me know in the issues.

Build

$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make -j

If you want to use the benchmark scripts (written in Python 3), you should also install the Python dependencies:

$ pip install -r requirements.txt

Docker

You will need the Nvidia Docker runtime to use CUDA inside Docker containers:

$ sudo apt-get install nvidia-docker2

Build the image:

$ docker build -t hardware-effects-gpu .

Then run it:

# interactive run
$ docker run --runtime=nvidia --rm -it hardware-effects-gpu

# directly launch a program
$ docker run --runtime=nvidia hardware-effects-gpu build/bank-conflicts/bank-conflicts 1

License

MIT

Resources

More Repositories

1

hardware-effects

Demonstration of various hardware effects.
C++
2,715
star
2

cargo-wizard

Cargo subcommand for configuring Cargo projects for best performance.
Rust
710
star
3

cargo-pgo

Cargo subcommand for optimizing Rust binaries/libraries with PGO and BOLT.
Rust
508
star
4

rust-delegate

Rust method delegation with less boilerplate
Rust
388
star
5

cargo-remark

Cargo subcommand for viewing LLVM optimization remarks.
Rust
162
star
6

davis

Assembly debugger written in Angular 2.
TypeScript
56
star
7

rust-course-fei

Rust course taught at FEI VŠB-TUO.
Rust
13
star
8

sigmod-2018

Code for the SIGMOD 2018 programming contest. Finished at 2nd place.
C++
12
star
9

debug-visualizer

Program memory visualizer for GDB/LLDB (bachelor thesis)
Python
10
star
10

sigmod-2019

Code for the SIGMOD 2019 programming contest. Finished at 2nd place.
C++
8
star
11

llvm-instrument

LLVM instrumentation
C++
6
star
12

rustlang.cz

Web that gathers information about the Rust community in the Czech Republic.
HTML
6
star
13

advent-of-code

Advent of code solutions
Python
4
star
14

cuda-profile

Instrumentation based profiler for CUDA (master thesis)
C++
3
star
15

sigmod-2016

Code for the SIGMOD 2016 programming contest. Finished at 14th place.
C++
3
star
16

talks

Source code and slides for my public talks.
Python
3
star
17

cfggen

Python configuration generator
Python
3
star
18

llvm-se

Static analysis using symbolic execution on top of LLVM IR
C++
2
star
19

handmade-quake

Quake recreated by following the tutorial from Philip Buuck (https://www.youtube.com/channel/UCXgjH2-Mrb3-h1_iWurz7dQ).
C
2
star
20

kobzol

2
star
21

async-iterator-examples

Examples of Rust async iterators
Rust
2
star
22

kobzol.github.io

Blog about programming stuff.
HTML
2
star
23

rust-web-app-demo

Demo of a small newsletter web app in Rust.
Rust
2
star
24

Spaceships

Android (Java) 2D game project made as a school assignment.
Java
1
star
25

Ghrab-Robot

Projekt robotického kroužku Gymnázia Ostrava-Hrabůvka.
C
1
star
26

cuda-graph

BFS implemented in CUDA.
C++
1
star
27

agu

Algorithmisation of Geometrical Problems VSB-TUO course
C++
1
star
28

ZPG-project

Project for ZPG (Principles of Computer Graphics).
C
1
star
29

turret

School project, (somehow modified) clone of Tower defense.
Java
1
star
30

Computer-Graphics-I

Code for subject Computer Graphics I at VSB-TUO.
C++
1
star
31

sigmod-2017

Code for the SIGMOD 2017 programming contest. Finished at 15th place.
C++
1
star
32

valgrind-se

Symbolic execution in Valgrind. Based on https://github.com/spirali/aislinn.
C
1
star
33

elsie-gallery

Python
1
star
34

arduino-tetris

Classic tetris game displayed on 8x8 LED Matrix (MAX72xx) on Arduino
C++
1
star
35

mkdocs-nedoc-plugin

Mkdocs plugin for the nedoc Python API documentation generator.
Python
1
star
36

rust-cmd-spawn-bench

Benchmark for process spawning in Rust, on Linux.
Python
1
star
37

pyladies-extended

Jupyter Notebook
1
star