Course Description

This course will introduce the aspect of embedded compiler techniques in ILP code optimizations, DSP Compilers, multi-core compilers for low power, and embedded and heterogeneous dual-core optimizations. This course will include software projects and use of embedded tools. This course is considered an advanced course after basic compiler course and before the advanced compiler course. This can also be considered as the 1st course of compiler course in the graduate school. Following the experiences from last year, we will also include special topic presentations from registered students.

The main topics include

1. Data dependence analysis.
2. Loop parallelization theories.
3. Data flow analysis equations (Aho’s book Chapter 8-10).
4. Pointer and Structure analysis
5. Parallel Languages and Parallel Programming Environments.
6. ILP compilers
7. DSP compilers
8. Superscalar and VLIW Compilations for modern single processor architectures.
9. DSP library and DSP compilation issues.
10. Compilers and OS for energy reductions.
11. Compilers for low-power.
12. Compilers for embedded systems.
13. Toolkits for DSP processors.
14. Compilers for embedded multi-core systems.
15. OpenCL Compilers for HSA.
16. OpenVX Compiler Designs.

Languages and Software used

C, C++, Fortran 77, Fortran 90, PAC DSP Tools, LLVM, and GCC compilers.

Text Books

Lecture Notes by the instructor.

Reference Book

1. "Compilers, Principles, Techniques, and Tools", A. Aho, Monica Lam, R. Sethi, J. Ullman, Addison-Wesley, Second Edition, 2007.
2. "Optimizing Compilers for Modern Architectures", Randy Allen Ken Kennedy, Morgan Kaufmann, Academic Press 2002
3. “Embedded Computing: A VLIW Approach to Architecture, Compilers, and Tools”, Chapter 7-8, J. Fisher, P. Faraboschi, C. Young, Morgan Kaufmann, 2005 (Elesvier).
4. Encyclopedia of Parallel Computing,David Padua(Editor)

Week-by-Week Schedule

1. Overviews for course materials/dependence
2. Dependences of programs/loop transformations
3. More loop transformations and diophantine equations/(assignment # 1).
4. Parallel Programming Principles: SPMD & Amdahl’s Law
5. Parallel Programming Principles: Memory locality, Blas1, Blas2, Blas3
6. Data flow equation (Part 1): reducible graphs and flow equations
7. Data flow equation (Part 2): Loops, and various variations.
8. Data flow equation (Part 3): Pointers and general frameworks (assignment # 2).
9. ILP compilers.
10. VLIW compilations.
11. DSP compilers (I).
12. DSP compilers (II).
13. DSP compilers (III).
14. Compilers for low-power.
15. OpenCL Compilers (I) // Final Project
16. OpenCL Compilers (II)

Tool

1. diophantine

Grading

Grading 1. Projects 40% (Totally three projects)
2. Final-exam 40%
3. Special topic presentations 20%