Default Project Description
CUDA Programming Project
Backpropagation
Max group size: 2
A basic learning technique used to train multi-layer neural networks is backpropagation.
Backpropagation consist of two phases:
1) Forward propagation of input through NN and calculate error of output vs desired value, and
2) backward propagate error and update weights.
More information relating to basic neural network and backpropagation is available at:
https://takinginitiative.wordpress.com/2008/04/03/basic-neural-network-tutorial-theory/
https://en.wikipedia.org/wiki/Backpropagation
Download the starter code.
The starter code is a sequential version of a single iteration of the backpropagation algorithm.
The simple neural network consists of three layers: input, hidden, output.
The input layer size is set as a command-line parameter (see run file).
Your task is to accelerate using GPGPUs. Your goal is to make the GPU kernel execution as fast as you can with the following restriction.
The results must be deterministic and match the result of the sequential code (see out.txt). While some optimizations can trade off accuracy for speed, we're asking you to maintain current semantics exactly.
Your report should detail all optimizations you tried, including those that ultimately were abandonded or worsened performance.
For every optimization tried, and each entry should note:
- Describe the intuition
- What changes you made for the optimization
- any difficulties with completing the optimization correctly (debugging effort, etc.)
- the amount of time spent on it (even if it was abandoned)
Grading
Your submission will be graded on the following parameters.
Demo/knowledge: 25%
- 10% Produces correct result output file for our test inputs.
- 15% Performance compared to our reference solution
Demo/Functionality: 40%
- Major optimizations enabled
- Memory space usage (constant? shared?)
Report: 35%
- Complete and accurate report. We will at least check for discrepancies, optimizations that you did but didn't report, etc.
The project will be graded based on a one-to-one demo to the instructor, as well as the proposal and report. The project will be due Monday, December 5th when the grading interviews will start. If you need to be graded earlier (for example due to travel plans), I can work with your schedule.
Architecture Project
Warp Scheduling
Max group size: 2
The goal of the warp scheduling project is to develop your own warp scheduler. This project uses GPGPU-sim, a cycle-accurate GPGPU simulator (http://gpgpu-sim.org/). A great tutorial is provided by the developers at http://www.gpgpu-sim.org/isca2012-tutorial/GPGPU-Sim-Tutorial-ISCA2012.pdf, including valuable information such as how to configure different GPGPU configurations and how to interpret output results.
VM is available http://ece.ubc.ca/~taylerh/files/gpgpu-sim/gpgpu-sim.vm.tar.gz
Grading
Your submission will be graded on the following parameters.
Demo/knowledge: 30%
- 10% Produces correct result output file for our test inputs.
- 20% Performance of new warp scheduling technique compared to Two-level scheduler
Demo/Functionality: 35%
- Does simulator run benchmarks correctly without errors?
Report: 35%
- Complete and accurate report. Describe your new warp scheduling algorithm and why it performs better than Two-level scheduling.
The project will be graded based on a one-to-one demo to the instructor, as well as the proposal and report. The project will be due Monday, December 5th when the grading interviews will start. If you need to be graded earlier (for example due to travel plans), I can work with your schedule.