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.
Teachers
Person in charge
Josep Llosa Espuny (
)
Others
Josep Ramon Herrero Zaragoza (
)
Marc Gonzàlez Tallada (
)
Weekly hours
Theory
4
Problems
0
Laboratory
0
Guided learning
0
Autonomous learning
5
Competences
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
Generic
CG2 - Capability to lead, plan and supervise multidisciplinary teams.
Transversal Competences
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.
Basic
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.
Objectives
Know the most common machine independent optimizations.
Related competences:
CEE4.2,
Know scheduling techniques and register allocation for exploiting Instruction Level Parallelism
Related competences:
CEE4.2,
Know the most common memory locality optimizations.
Related competences:
CEE4.2,
Learn the concept and compiler techiques for exploiting Data Level Parallelism
Related competences:
CEE4.2,
Compiler techniques and tools for exploiting Thread Level Parallelism
Related competences:
CEE4.2,
Make a technical report on some advanced compiler technique
Related competences:
CB7,
CTR5,
CEE4.2,
Make a presentation so that the other students learn some advanced compiler technique
Related competences:
CB7,
CTR5,
CEE4.2,
CG2,
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.
Evaluation methodology
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.