This course attacks the complexity of programming/designing fine-grained parallel architectures such as FPGAs and GPUs through the power of the polyhedral model. We use the a mathematical formalism called the polyhedral model to represent loop and/or equational computations, and to express transformations such as schedules and storage mappings in order to derive/generate sequential or parallel codes.
The Spring 2013 edition of this class will focus on GPUs (Graphics Processing Units) as our target architecture. We will use the "fruit machines" in the HPC Lab (CS 325) and write as well as systematically derive programs in CUDA. However, no prior CUDA/GPU experience is necessary, all that is neded will be covered in the class.
The polyhedral model is now used for automatic parallelization in a number production compilers such as gcc, IBM's XL series, and Reservoir Lab's R-Stream. There are active research groups on the polyhedral model at MIT (Amarasinghe), Illinois (Padua), Utah (Hall), Ohio State (Sayappan), Louisisana State (Ramanujam), IBM Research (Renganarayana, O'Keefe, etc.), Leiden (Kienhuis, Deprettere), Indian Institute of Science, Bangalore (Bondhugula) and many groups in France: IRISA, Rennes (Derrien, Quinton), ENS Lyon (Feautrier, Darte, Alias), Bordeaux (Barthou), INRIA (Cohen, Bastoul, Clauss, etc.)
Sanjay Rajopadhye is one of the inventors of the polyhedral model, and has been active in the field since his Ph.D. dissertation (Utah, 1986). At CSU, we take a unique view of the polyhedral model that combines the analytic quantitative power of the model with the expressivity and clean semantics of declarative, functional programming in the form of equational programming.
The Course Logo is from Wikimedia Commons and is an out of copyright picture by Neville W. Cayley (1887-1950).