Skip to main content
Department of Information Technology
Uppsala Architecture Research Team

Fix the code. Don´t tweak the hardware: A new compiler approach to Voltage-Frequency scaling

Traditional compiler approaches to optimize power efficiency aim to adjust voltage and frequency at runtime to match the code characteristics to the hardware (e.g., running memory-bound phases at a lower frequency). However, such approaches are constrained by three factors: (i) voltage-frequency transitions are too slow to be applied at instruction granularity, (ii) larger code regions are seldom unequivocally memory- or compute-bound, and, (iii) the available voltage scaling range for future technologies is rapidly shrinking. These factors necessitate new approaches to address power-efficiency at the code-generation level. We propose one such approach to automatically generate power-efficient code using a decoupled access/execute (DAE) model.

In DAE a program is split into tasks, where each task consists of two sufficiently coarse-grained phases to enable effective Dynamic Voltage Frequency Scaling (DVFS): (i) the access-phase for data prefetch (heavily memory-bound), and (ii) the execute-phase that performs the actual computation (heavily compute-bound). We provide a compiler methodology to automatically generate the access-phases for a task-based programming system. Our approach is capable of handling both affine (through a polyhedral analysis) and non-affine codes (through optimized task skeletons). Our evaluation shows that the automatically generated versions improve EDP by 25% on average compared to a coupled execution, without any performance degradation, and surpasses the EDP savings of the corresponding hand-crafted tasks by 5%.

LibQ_Time.png
Execution time of Original (CAE) vs. Manual DAE vs. Auto DAE: automatically generated access regions (blue) prefetch more data, without hurting performance.

LibQ_Energy.png
Energy conspumtion of Original (CAE) vs. Manual DAE vs. Auto DAE: automatically generated access regions (blue) prefetch more data at a lower frequency and execute for less time at a higher frequency.

Best Presentation award to Alexandra Jimborean at CGO 2014 for "Fix the Code. Don't tweak the hardware: A new compiler approach to Voltage-Frequency scaling"

Updated  2016-04-08 17:26:48 by Alexandra Jimborean.