With the emergence of many new computing platforms such as multi-core, GPUs etc. automatic program optimization has taken on a renewed importance. In this course, students will analyze programs and find and leverage opportunities to improve performance, memory footprint, locality etc. The course will cover optimizations such as redundancy elimination, code scheduling, vectorization, data layout and parallelization. A course project using state-of-the-art tools will give students hands-on experience in this area.
Post Condition (on student capability after successfully completing the course):
students will be able to apply program analysis techniques to leverage optimization opportunities