Giter Club home page Giter Club logo

hardware-effects-gpu's Introduction

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

hardware-effects-gpu's People

Contributors

kobzol avatar aalanwyr avatar s4oul avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.