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).
- Identifying the application.
- Obtaining the source code (hopefully open source).
- Installing and compiling it on the target platform that you will work
with (or the front-end host of the platform).
- Performance profiling of the application to identify the computationally
intensive kernel(s) of the program.
- 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).
- Writing equational programs in Alpha/Alphabets that embody the
funtionality of the kernels.
- Generating code from these equations, replacing the isolated functions
(of step 5) with this code, and ensuring functional correctness of the entire
application.
- Analyzing, parallelizing and transforming the Alpha/Alphabets programs to
expose the desired parallelism.
- Generating code/VHDL from the parallelized and/or transformed
Alpha/Alphabets program.
- 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.
- Performance measurement, analysis and tuning, and iterating steps 8-10.
- Poster presentation.
- 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.