系统软件与软件安全
这门课程主要学习先进的编译分析与优化技术,以此来提高软件在现代多核系统上的性能。
This course covers advanced compiler analysis and optimization techniques to improve the efficiency of programs on modern shared-memory multicore platforms. These optimizations are applied at the program source level (e.g., to C++/C code directly) to higher-level language constructs, e.g., loops, arrays, and synchronization mechanisms. We will study program analysis techniques to detect opportunities of advanced optimizations and how to coordinate the relevant optimizations to support high performance computing in scientific domains.
topics:
Lecture 1: (July 7th) (循环的依赖关系与优化) Introduction to loop dependence and Optimizations.
Optimizing for multi-core architectures; categorization of compiler optimizations; types of dependences; testing for dependence; dependence-based analysis and optimization.
Reference: Chapter 2-3. Optimizing Compilers for Modern Architectures: A Dependence-based Approach, Ken Kennedy and Randy Allen, Morgan-Kauffman Publishers Inc.
Lecture 2: (July 8th) (循环与数组的内存性能) The Memory Performance of Loops And Arrays.
Optimizing and tuning scientific codes; Categorization of reordering optimizations; modeling of cache efficiency; Loop Interchange, blocking, unroll&jam, unrolling, array copying, and scalar replacement.
Reference:
Chapter 8-9. Optimizing Compilers for Modern Architectures: A Dependence-based Approach, Ken Kennedy and Randy Allen, Morgan-Kauffman Publishers Inc.
Lecture 3: (July 9th) (在不同的层次寻找并行) Exploring Parallelism at Different Levels.
Granularity of parallelism; Loop parallelization; Loop strip-mining and selection; recognition of reductions and private variables; Pipelining; loop distribution and fusion.
References:
Chapter 5-6. Optimizing Compilers for Modern Architectures: A Dependence-based Approach, Ken Kennedy and Randy Allen, Morgan-Kauffman Publishers Inc.
Lecture 4: (July 10th) (并行编程的模式) Parallel Programming Patterns
Specialization of compiler optimizations for different types of computations; effective coordination of compiler optimizations.
References
Lecture 5: (July 11th) (新的优化创作以及性能调优) Programmable Optimization And Empirical Tuning
How to develop your own compiler optimizations using POET, a scripting program transformation language developed to support programmable control of compiler optimizations and their empirical tuning.
References:
Exercises
地址:安徽省合肥市蜀山区黄山路443号 电话:0551-63603804 Email:yuzhang@ustc.edu.cn
中国科学技术大学网络信息中心制作维护