The course explores major avenues for extracting parallelism from a sequential program in addition to introducing conventional dependence analyses. The techniques include shape analysis, may-alias analysis, points-to analysis, thread-level speculation, hardware transactional memory, and promising hardware/software hybrid techniques that take help from a managed run-time system to improve parallelism such as software transactional memory, hybrid transactional memory, and hybrid analysis techniques (such as inspector/executor, dynamic parallelization, etc.).
J. L. Hennessy and D. A. Patterson. Computer Architecture: A Quantitative Approach. Morgan-Kaufmann publishers, 4e.
D. E. Culler and J. P. Singh (with A. Gupta). Parallel Computer Architecture: A Hardware/Software Approach. Morgan-Kaufmann publishers.
A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, 2e.
R. Allen and K. Kennedy. Optimizing Compilers for Modern Architectures: A Dependence-based Approach. Morgan-Kaufmann publishers.
J. Larus and R. Rajwar. Transactional Memory. Morgan and Claypool publishers.
S. S. Muchnick. Advanced Compiler Design & Implementation. Morgan-Kaufmann publishers.