Final Exam - Spring 2012

The final exam will combine parts of Project 1 and Project 2 to focus on optimization issues for image convolution.

This final exam is a 'take home' exam. You are expected to work on it completely by yourself. It is due Thursday May 3rd 2012 at 8:59pm Chicago time, the day before the final exam. By that time you should have set up a web page with your solution, and emailed the location of that web page to Andy. During the scheduled final exam time we will meet in class and you will have 10 minutes to briefly describe your work to the class, very likely by going through your web pages. We won't have time for a question / answer period; this way we can get through everyone within two hours.

The final will focus on using OpenCL to perform convolution on a large image. You should then optimize and document the benefits of various optimizations to the code. Your grade will be based on the number of optimizations that you evaluate and the quality of the web-based documentation for your testing. When reading through your web site someone new to OpenCL should get a better idea where they should focus their energy in optimizing their code.

You will very likely need to run the convolution code multiple times on each pass to document improvements. You should break out the times for setup and data transfer to/from the GPU from the time to do the image convolution itself. You should look at different sized kernels and different sized images (512x512, 1024x1024, 2048x2048). I suggest setting up an automated way to do multiple runs with different parameters or code being run so you can gather data efficiently.

Your job is to show how much of an affect different optimizations have compared to a naive OpenCL version of the algorithm with no optimizations on your card, or multiple cards if you choose.

You can use OpenCV to deal with the image data, or  libraries for tiff, jpeg, etc. You should be able to display the input and output imagery to verify that your algorithm is doing the requested work correctly.

Be sure to detail which GPU(s) you are using.

We went through a video and slides in class from ATI on this topic, and nVidia also has suggestions online for this kind of optimization.

last revision 4/15/12