CS61C Fall 2013 Project 5: Image Processing and Optimization Extra Credit

CS 61C Fall 2013 Project 5: Image Processing and Optimization Extra Credit

TA: Sung Roa Yoon, Ajay Tripathi

Updates

Getting Started

For this project, you will be required to work in groups of at most two. You are not allowed to show your code to other students. You are to write and debug your own code. Looking at solutions from previous semesters is also strictly prohibited.

To begin, git pull from the directory ~cs61c/proj/05 to a suitable location in your home directory. The following files are provided:

You can compile the sample code by running make in the project directory.

Please post all questions about this assignment to Piazza, or ask about them during office hours.

To obtain the proj5 files, pull from the git repo at ~cs61c/proj/05. For example:

$  mkdir ~/proj5 
$  cd ~/proj5
$  git init
$  git pull ~cs61c/proj/05 master

You will only be submitting extra.c for this project!

Functionalities of the benchmark

The functionality of the benchmark is the same as before! You can input an image, input dimensions of image you want to test, or go inside the benchmark to modify the kernel and the default test range. You should definitely be going into benchmark and modifying those fields for this extra credit.

Due Sunday, December 1st, 2013 at 11:59PM (Up to 2% of Total Grade)

This is the extra credit project you have been waiting for! Feel free to go all out and do whatever you want to do to optimize the program! It's a bit tougher than before, as we have variable kernel sizes (still odd dimensions only), anywhere from 3 to 19, now, but we will place no restriction on you except that you must not copy any online or other student code!

With great effort comes great reward! For this extra credit project, the credit will be purely relative performance based. The highest performing team will get bonus of 2% extra credit on their final grade, and the rest of the teams will get extra credit according to their proportional performance compared to the highest performing team! So for example, if the fastest team gets 100 Gflops/s, then the extra credit will be a linear scale from 35 to 100, with 35 getting 0% and 100 getting all 2%. Don't try to game the system as TAs will also have the right to join... We will be running heavy amount of cheating detection for this as well, so DO NOT share your code under any circumstances! In fact, cheating here will result in you receiving a zero for your project 3 as well!

Don't count on too much TA help for this though, as it is truly left to your creativity and nothing else!

In terms of grading, any kind of segmentation fault or incorrect computation will result in automatic disqualification. We will be extremely strict about this, and the grading will not be 4-part grading as before, so make sure your code works! Remember in real life, releasing broken code can result in billions of dollars of damage!

Good luck, and have fun!

References

  1. Chellappa, S., Franchetti, F., and Püschel, M. 2008.How To Write Fast Numerical Code: A Small Introduction,Lecture Notes in Computer Science 5235, 196–259.
  2. Lam, M. S., Rothberg, E. E, and Wolf, M. E. 1991.The Cache Performance and Optimization of Blocked Algorithms,ASPLOS'91, 63–74.
  3. Intel Instrinsics Guide (see Lab 8)
  4. Intel® 64 and IA-32 Architectures Optimization Reference Manual
  5. OpenMP reference sheet
  6. OpenMP Reference Page from LLNL