Covers the tools and techniques compilers use to optimize code to run on modern
computers with deep memory hierarchies and coarse and fine grained parallelism.
Topics include data dependence, program transformations, instruction scheduling,
optimizations for fine grained parallelism, coarse grained parallelism,
register usage and managing cache.
To be able to use dependency analysis to determine allowable program
transformations and parallelism.
To be able to perform transformations to enhance parallelism.
To be able to perform transformations to better utilize the memory hierarchy.
To be able to schedule instruction to improver performance.
To be able to perform dependency analysis and program transformations
in practice using a suite of compiler tools.
The official prerequisite is CS 525 (Theory of Computation); however,
what is required is familiarity with automata, grammars, scanning, parsing,
and simple code generation at the level of an undergraduate compiler course
or an implementation oriented programming languages course (e.g. CS 360).
Students should also be familiar with the fundamentals of computer
architecture (e.g. CS 281-282) and algorithms and data structures
(e.g. CS 260). An ideal prerequisite would be CS 550 - Programming Languages. Solid programming skills are a must.
Office: 100 University Crossings
phone: (215) 895-2669
e-mail: jjohnson AT cs DOT drexel DOT edu
office hours: R 4-6, M 8-9 (online). Additional hours by appointment.
Course mail list: Use discussion groups in BbVista