系统软件与软件安全

这门课程主要学习先进的编译分析与优化技术,以此来提高软件在现代多核系统上的性能。 

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:

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.


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:


Granularity of parallelism; Loop parallelization; Loop strip-mining and selection; recognition of reductions and private variables; Pipelining; loop distribution and fusion. 

References:


Specialization of compiler optimizations for different types of computations; effective coordination of compiler optimizations. 

References


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         

中国科学技术大学网络信息中心制作维护