CS670 Fall 2001: Architectures of Advanced Systems

High Performance Embedded Systems-on-a-Chip

Instructor: Sanjay Rajopadhye (email: svr@cs.colostate.edu)

Class meets: Tu-Th 16:30 - 17:45, USC 310B (601 S Howes St)


This class (co-listed as ECE670) could also have been listed as an advanced topics class in programming languages (CS653) or in parallel computing (CS675). It will cover the foundations of high performance parallel embedded systems. Being a CS-ECE cross-listed course, I hope that we can synergistically build on the the strengths and backgrounds of all students. Although CS670 is a variable credit course, this one is for 4hrs (you may register for less but you will have to do the same work :-)

We will essentially study the development of the polyhedral model; for reasoning about massively parallel computations. This course will involve a fair bit of theory: linear and integer programming, discrete optimization, some notions of semantics and functional languages. It will also involve some pragmatic machine-oriented work (FPGA's, VLSI circuits, etc.) The prerequisites are essentially advanced graduate standing and mathematical maturity: you don't have to know all the math beforehand, but you should not be afraid to pick it up if needed. Please come and see me if you have questions.

Keywords: systems-on-a-chip, loop parallelization, polyhedral model, silicon compilation, systolic arrays, FPGAs, power/energy optimization, cyclic scheduling, functional/equational programming, data-parallel languages, iteration space tiling, data partitioning.

Grading: Your final grade will largely be based on a research report that you will write (intermediate steps towards this final report will also be considered in determining the grade). You may also be required to do a small independent study on a specific topic (common to all students), namely "iteration space tiling", which will require reading and reviewing some of the key early papers on this topic. Other forms of assessments (mid-terms, assignments, etc.) are also possible, but will not count that heavily.

Textbook and References

  There is no required text.  We will work off current papers in the literature.  The following reference texts would be useful:

Course Outline and (tentative) Schedule

The lectures will proceed in "concentric circles", starting with a short and superficial overview of the whole semester, followed by a more detailed view of some of the same concepts, and finally, in-depth study of some specific techniques, eg. scheduling, tiling, I/O, etc. As the course proceeds, this page will evolve to contain copies of the lecture transparencies, exercises (and possibly solutions), instructions, etc.

Research project/report

Since this an advanced course, a large part of your grade is based on the work you do for a research project and the report you turn in. Essentially, you may think of this as a paper that you submit to a conference. What will be evaluated is your work/research, but the specific object evaluated is the report that you write (supplemented if necessary, by discussions, demonstrations in class and with me). It is therefore very important that you master the art of technical writing. The usinversity has resources available explicitly for this, and you are more than welcome to use them.

There is considerable freedom in choosing your specific project. Here are a few suggestions.

Final Report Format

The final report should be written using standard word-processing software LaTeX (preferred) or MS word like a regular research paper (about a dozen pages), and contain the following standard sections:

Intermediate Reports

Three intermediate reports are intended to help you build your way towards the final report. For your final report you will directly use the first two (Intro and Related Work). But remember, the related work evolves: as you work, you will encounter new papers/literature on the topic, some new directions will force you to look elsewhere, etc. Rule of thumb: if your final Related Work section is identical to the report you submitted, then the project was probably too predictable. The plan of Action and the Status Report will help you do the actual work, but parts can be incorporated into the final report and also help you develop its outline.