Program Generation and Optimization (CS 650)

 Announcments  Lectures  Programs  Course Resources   Assignments and Solutions  Grading Policy
Course Description
This course introduces the student to the foundations and state-of-the-art techniques in high performance software development for numeric libraries and other important kernels. Topics include: 1) fundamental tools in algorithm theory, 2) optimizing compilers, 3) effective utilization of the memory hierarchy and other architectural features, 4) how to use special instruction sets, and 5) an introduction to the concepts of self-adaptable software and program generators.
Course Objectives
  1. To be able to optimize code for memory hierarchy, SSE, multicore, Cell, and GPU.
  2. To be able to implement fast algorithms for various signal transforms.
  3. To utilize techniques to automatically implement, optimize, and adapt programs to a variety of computing platforms.
  4. To perform code transformations and optimizations.
  5. To develop a domain specific language.
Advanced graduate CS and ECE students (Course counts as an advanced CS elective)
CS 550 (Programming Languages) and CS 540 (High Performance Computing.
Jeremy Johnson
Office: University Crossings 100C
e-mail: jjohnson AT cs DOT drexel DOT edu
office hours: TR 11-12 and online T 7-8, additional hours by appointment.
Meeting Time
Wed. 6-9:00 in Korman 116 and online. The online and in class versions of the course will be identical (in class lectures will be recorded and posted on webct and use of online discussions will be required by everyone).
Course Discussion Groups
BbVista will be used for class discussion and announcements - check regularly

Please use this list for questions and discussions related to the course. If you know the answer to someone's question, please feel free to jump in, as long as well it is not an answer to a homework problem. I will moderate the list so that frivolous mail and spam is not forwarded.


  1. Week 1: Overview of SPIRAL and fast signal transforms
  2. Week 2: Code Optimization
  3. Week 3: Optimizing Compilers
  4. Week 4: SPL
  5. Week 5: Sigma-SPL
  6. Week 6: Tagged-SPL (Vectorization)
  7. Week 7: Tagged-SPL (SMP)
  8. Week 8: Tagged-SPL (Streaming Computation)
  9. Week 9: Automatic Library Generation
  10. Week 10: Operator Language - Beyond transforms


  1. Class readings and participation (50%)
  2. Programming Assignments (50%)


Reference Books
  1. John R. Levine, Tony Mason, Doug Brown, Lex & Yacc, 2nd/updated edition (October 1992), O'Reilly & Associates. An online copy of this book is available through Drexel's library (safari).
  2. list reference books here.
Web Pages
  1. SPIRAL.
  2. FFTW.


This list is tentative and may be modified at the instructor's discretion.
  1. Lecture 1: Overview of SPIRAL and Fast Transforms
  2. Lecture 2: Tensor (Kronecker) Product
  3. Lecture 3: Implementation and Optimization of the FFT
  4. Lecture 4: FFT Codelet Generator
  5. Lecture 5: FFT Algorithms
  6. Lecture 6: Formal Loop Merging for Signal Transforms
  7. Lecture 7: Vectorization and Parallelization of SPL
  8. Lecture 8: Library Generation

Programs and Worksheets



Created: 12/18/09 by jjohnson AT cs DOT drexel DOT edu