CS560 Project Schedule

The project counts for 35% of your grade (and there is no final exam). It is therefore a critical part of the course. Except in rare cases (and prior permission from the instructor), the projects will involve the study and acceleration of either a complete application and/or a complete algorithmic kernel. The target platform that you choose may either be an FPGA based coprocessor or an IBM Cell based Playstation 3. You will parallelize the application using the tools and methods from the polyhderal model that we will study in the class.

In order to ensure the smooth progression of the project over the whole semester, it will involve a number of concrete Project Check-Points (and denoted PCPx) in the Class Schedule. The tasks consist of the following syteps (iof your project is for an algorithmic kernel there are a few modifications as noted below).

  1. Identifying the application.
  2. Obtaining the source code (hopefully open source).
  3. Installing and compiling it on the target platform that you will work with (or the front-end host of the platform).
  4. Performance profiling of the application to identify the computationally intensive kernel(s) of the program.
  5. Rewriting the kernel(s) as isolated function calls from the main body of the code (in some cases this may already have been done for you).
  6. Writing equational programs in Alpha/Alphabets that embody the funtionality of the kernels.
  7. Generating code from these equations, replacing the isolated functions (of step 5) with this code, and ensuring functional correctness of the entire application.
  8. Analyzing, parallelizing and transforming the Alpha/Alphabets programs to expose the desired parallelism.
  9. Generating code/VHDL from the parallelized and/or transformed Alpha/Alphabets program.
  10. Replacing the functions of step 5 with this code (possibly with some additional "glue code" to interface with the main application), ensuring that functional correctness is maintained.
  11. Performance measurement, analysis and tuning, and iterating steps 8-10.
  12. Poster presentation.
  13. Final report.
In the case of an application kernel project, you will have to write our own code, and so PCP2-PCP5 will be fused, although you will have to report your status consistent with each PCP.

Note that Steps 8-11 may have to be iterated a number of times. This constitutes the most significant part of the project.

Steps 1-7 are to be completed by Spring Break (deadline March 25) and most of the remainder of the term will involve repeatedly doing steps 8-11.

In the final week of the class, you will do step 12, and in the Exams week you will do step 13.