EE 699 - Advanced Program Optimization & Parallelization

Preliminary ABET-style Syllabus

CATALOG DATA:

EE 699 - 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.

The course will be heavily project oriented. Each student will be expected to take a non-trivial application program (assigned, or of their selection with approval of the instructor) and speed it up using some of the techniques learned. At the end of the course, each student will be required to write a brief paper, and give a short (~10 minute) presentation to the class, summarizing how they optimized their application. Grading will be based on two in-class exams, the methods used and speedup obtained, and their presentation.

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:

Graduate 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 a significant program (typically one containing more than 1000 source lines). Each student will work on a different program; programs can be assigned to students or, with instructor approval, a student may suggest a program that is particularly relevant to their work outside of this class. The student must identify problems, improve the performance, document what was done in a short written report, and present their work to the class.

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.