This course aims to study the execution of applications on computing architectures from the points of view of functionality, performance and energy efficiency. In this context, parallel hardware architectures (multi-core processors, SIMD machines and GPUs), hardware communications resources (bus and network) as well as the efficient deployment of applications on these hardware resources will be discussed: task placement, hardware / software partitioning and matching algorithm requirements to architecture resources. Techniques for estimating energy consumption will be presented and will make it possible to estimate the cost of memory access, calculations and communications.
Principles of hardware/software partitioning and processor sizing Multi-core architectures and programming Strategies for deploying tasks and reducing consumption Energy cost of inter-core communication or distributed computing Multi-level abstraction energy estimation of software execution
Personal work and study class: analysis of energy-efficient supercomputers (green500.org) Practical work (2 4-hour sessions): programming an image filter on an embedded GPU, optimization of performance/energy consumption