EE 599 - Program Optimization & Parallelization

Preliminary ABET-style Syllabus

CATALOG DATA:

EE 599 - Advanced Program Optimization & Parallelization: 3 Credits

How to make programs execute more efficiently on modern computer hardware ranging from simple microcontrollers to supercomputers. Language constructs and compiler optimization; performance-critical architectural and hardware implementation features; use of published information to drive creation of more efficient code; identification of performance problems; identification and use of parallelism.

Grading will be based on two in-class exams and speedups obtained using specific techniques to improve a small set of benchmark programs.

TEXTBOOK:

None required - Course notes

COORDINATOR:

Dr. Henry G. Dietz, Professor

GOALS:

The goal of this course is to enable students to improve the efficiency of their programs by fostering a deep understanding of how program constructs interact with specific architectural and hardware implementation structures. This same understanding also can be applied to optimize an architecture and its implementation for a specific program.

PREREQUISITE:

Undergraduate standing, EE380, fluency in C or Fortran

TOPICS:

  1. The evolution of complex architectures and compilers
  2. Programming for performance
  3. Performance-critical architectural and implementation features
  4. Case studies
  5. Identifying performance problems
  6. Parallelism
  7. Graduate project presentations and discussions

OUTCOMES:

Upon completion of this course the students should demonstrate the ability to:

  1. Use programming language constructs, libraries, and compiler switches to make the compiler generate more efficient code
  2. Understand the performance-critical architectural and hardware implementation features of state-of-the-art computer systems
  3. Use concepts from vendor-supplied "optimization" guides, algorithm collections, and other literature to synthesize more efficient code
  4. Use hardware/software performance tools and program instrumentation to identify performance problems in high-level language programs
  5. Identify potential parallelism in a high-level program and package that parallelism to achieve good speedup on a particular computing system

COMPUTER USAGE:

Students will perform open-ended experiments improving the performance of programs that initially have specific performance problems.

DESIGN CONTENT:

Students will modify programs written in C to take advantage of the concepts presented in class, thereby achieving speedup for these programs.

CLASS SCHEDULE:

Lecture 3 hours per week.

PROFESSIONAL CONTRIBUTION:

Engineering Science: 1 Credit (33%)

Engineering Design: 2 Credits (67%)

RELATION OF COURSE TO PROGRAM OBJECTIVES:

These course outcomes fulfill the following program objectives:

PREPARED BY: Henry G. Dietz DATE: January 14, 2003


Advanced Program Optimization & Parallelization.