Optimizing compilers play a critical role in modern computer systems ranging from mobile devices to supercomputers. Compilers can optimize for performance, power consumption and/or code size. Practically all computer scientists and engineers may benefit for a deep knowledge of compiler optimizations: programmers and application optimizers write programs that are better optimized by the compiler, computer designers design hardware features that are easy to use by compilers, and finally compiler writers develop new compiler optimizations. This course covers optimizations and aspects of the compiler back-end and middle-end such as: instruction level parallelism, memory hierarchy optimizations, data level parallelism and thread level parallelism.
Person in charge
Josep Llosa Espuny (
Josep Ramon Herrero Zaragoza (
Marc Gonzàlez Tallada (
Technical Competences of each Specialization
High performance computing
CEE4.2 - Capability to analyze, evaluate, design and optimize software considering the architecture and to propose new optimization techniques.
Generic Technical Competences
CG2 - Capability to lead, plan and supervise multidisciplinary teams.
Appropiate attitude towards work
CTR5 - Capability to be motivated by professional achievement and to face new challenges, to have a broad vision of the possibilities of a career in the field of informatics engineering. Capability to be motivated by quality and continuous improvement, and to act strictly on professional development. Capability to adapt to technological or organizational changes. Capacity for working in absence of information and/or with time and/or resources constraints.
CB7 - Ability to integrate knowledges and handle the complexity of making judgments based on information which, being incomplete or limited, includes considerations on social and ethical responsibilities linked to the application of their knowledge and judgments.
Know the most common machine independent optimizations.
Know scheduling techniques and register allocation for exploiting Instruction Level Parallelism
Know the most common memory locality optimizations.
Learn the concept and compiler techiques for exploiting Data Level Parallelism
Compiler techniques and tools for exploiting Thread Level Parallelism
Make a technical report on some advanced compiler technique
Make a presentation so that the other students learn some advanced compiler technique
The classes consist of lectures intermixed with practical exercises and homework. In addition, some advanced topics will be selected by the students on demand. Each student will make a presentation of his selected topic to the rest of the class.
The evaluation of this course will take into account three different items
a. A deliverable of a class assignment will account for 40% of the grade
b. The presentation in class of a related topic will account of 40% the grade
c. Attendance and participation in class will account for 20% of the grade.