Fall 2013        EE 7700: Program Optimization Using Polyhedral Model
Mondays 5:00pm-7:50pm in 3142 Patrick Taylor
Professor: J. (Ram) Ramanujam

Last updated:

Course Information:

 Instructor: J. (Ram) Ramanujam, 2162 Louisiana Digital Media Center (LDMC), or 3111-B Patrick Taylor, 578-8979 (jxr at ece.lsu.edu)
 Time, Place: Mondays 5:00pm-7:50pm in room 3142 Patrick Talyor
 Office Hours: To Be Announced
 Text: None; Papers and class notes
 Prerequisites:   Graduate standing
 Goals: To familiarize the student with techniques used in polyhedral model-based
optimizing compilers for a variety of architectures: CPUs, accelerators, etc.

Catalog Data:

7700 Program Optimization Using Polyhedral Models (3)  Prerequisites: Graduate standing.
Polyhedral models, dependence analysis, schedules code generation, CPUs, accelerators: GPUs, FPGAs, etc.


The course deals with the study of polyhedral compiler optimizations aimed at improving performance of science and engineering applications on CPUs, accelerators (GPUs, FPGAs) and heterogeneous systems consisting of CPUs and accelerators. Basic ideas of high-performance and parallel computing will be covered first. We will then discuss polyhedral models (part 2), polyhedral compiler optimization strategies, application performance optimization and the use of compiler tools such as PLUTO for automatic code generation for a variety of target machines. Program transformations that enhance data locality and optimize memory usage will get a lot of coverage. In addition, compilation starting from high-level specifications or for domain-specific languages will be discussed. The course will involve significant implementation projects.

Course Outline:

  1. Introduction:
    • Architectures:
      • Multicore architectures
      • Acclerators (GPU, FPGA, ...)
    • Issues in performance and energy
    • Memory hierarchy: caches
    • Explicitly managed memories
    • Programming models:
      • Multi-threaded SIMT
      • Short-vector SIMD
      • Higher-level models
  2. Polyhedral Model of Compilation (most significant coverage in the course):
    • Data dependences (overview)
    • Transformations (overview)
    • Transformations as schedules
    • Code generation
    • Locality and parallelism optimizations
    • Tiling in polyhedral models
    • Parametric tiling
    • Pluto compiler for multicores
    • Discussion: Pluto, Loopo, PolyOpt, POCC
    • SIMDization (Vectorization): polyhedral
    • Compiler-driven tuning
  3. Polyhedral Optimizations for GPUs:
    • Performance characterization
    • Optimizing memory accesses
    • Multi-level parallelism exploitation
    • Tiling strategies for GPUs
    • Compiler-driven tuning
    • Optimization strategies for GPUs in
      • R-Stream
      • Par4All
      • PPCG
      • PGI Accelerator
      • CAPS HMPP
  4. Polyhedral Optimizations for FPGAs:
    • Performance characterization
    • Optimizing memory accesses
    • Multi-level parallelism exploitation
    • Tiling strategies
    • Compiler-driven tuning
  5. Polyhedral Optimizations for heterogeneous CPU-Accelerator systems:
    • Performance characterization
    • Application case studies
    • Examples of application optimization

Tentative Grading : TWO tests (17.5% each), a final (30%), term-paper, projects and class presentation (35%).
Note: Will finalize by last day to add