CS 680 Program Generation and Optimization

 Announcments  Lectures  Programs  Course Resources  Assignments & Solutions  Grading Policy
Course Description
The fast evolution and increasing complexity of computing platforms pose a major challenge for developers of high performance numeric libraries: it is increasingly difficult to harness the available computing power; conversely, straightforward implementations may loose as much as one or two orders of magnitude in performance. Creating optimal implementations requires the developer to have an understanding of algorithms, capabilities and limitations of compilers, and the target platform's microarchitecture. For these reasons, a recent trend in numerical computing is towards "self-adaptable" software to achieve optimal performance and portability with reduced coding effort. This course introduces the student to the foundations and state-of-the-art techniques in high performance software development for numeric libraries (including linear algebra and signal processing kernels). Topics include: 1) fundamental tools in algorithm theory and analysis; 2) fast signal processing and numerical algorithms; 3) optimzing compilers, what they and can not do and how to write software that overcomes compiler limitations; 4) the role of the memory hierarchy and other microarchitectural features in software development; 5) how to use special instruction sets, such as SSE/MMX on Pentium; 6) an introduction to the concepts of self-adaptable software and program generators.
Course Objective
To develop the skills required to implement high-performance software, including the interaction between algorithms, computer architecture and compilers. To learn techniques for analyzing the performance of programs and their interaction with the underlying hardware. To utlize techniques to automatically implement, optimize, and adapt programs to different platforms.
CS 557 (Data Structures and Algorithms I), CS 560 (Programming Languages), and undergraduate courses in discrete mathematics, linear algebra, and computer architecture.
Jeremy Johnson
Office: 100 University Crossings
phone: (215) 895-2669
e-mail: jjohnson@cs.drexel.edu
office hours: M 4-6:30, T 4-6. Additional hours by appointment.
Course mail list: HPC AT cs dot drexel dot edu
Meeting Time
T 6:00-9:00 in Crossings 153
There is no text. The foundational material will come from standard texts on algorithms (Cormen, Leiserson, and Rivest), computer architecture (e.g. Hennessy and Patterson), and a summary journal paper on compiler optimization. The remainder of the material will come from notes from the instructor and recent journal papers including papers from the recent issue (Feb. 2005) of the Proceedings of the IEEE on "Program Generation, Optimization, and Platform Adaptation"


  1. Assignments 40%
  2. Class Participation(20%)
  3. Final Project and Presentation 40%

Final grades will be determined by your total points weighted according to this distribution. Grades will be curved based on relative student performance. Students who successfully complete all of the homework and do reasonably well on the exam should receive a B. Students with high exam and project scores and who do well on the assignments will receive an A.

All assignments must be completed alone unless otherwise stated. No Late assignments will be accepted without prior approval.


Reference Books
  1. More to be added.
Web Pages
Other Reference

Look Here for Important Announcements

Announcements (Thur. Nov. 30 @ 9:50pm)


This list is tentative and may be modified at the instructor's discretion.
  1. Design and analsis of divide and conquer algorithms
  2. The fast Fourier transform (FFT)
  3. Numeric Recipes vs. FFTW
  4. Overview of computer architecture
  5. Overview of optimizing compilers
  6. Guide to benchmarking
  7. LAPACK and BLAS
  8. Oveview of program generation and optimization
  9. ATLAS/Sparsity
  10. FFTW
  11. SPIRAL



Exam Studyguide


Created: 12/29/03 by jjohnson@cs.drexel.edu