Energy-Efficiency Evaluation of OpenMP Loop Transformations and Runtime Constructs

09/09/2022
by   Henrik Valter, et al.
0

OpenMP is the de facto API for parallel programming in HPC applications. These programs are often computed in data centers, where energy consumption is a major issue. Whereas previous work has focused almost entirely on performance, we here analyse aspects of OpenMP from an energy consumption perspective. This analysis is accomplished by executing novel microbenchmarks and common benchmark suites on data center nodes and measuring the energy consumption. Three main aspects are analysed: directive-generated loop tiling and unrolling, parallel for loops and explicit tasking, and the policy of handling blocked threads. For loop tiling and unrolling, we find that tiling can yield significant energy savings for some, mostly unoptimised programs, while directive-generated unrolling provides very minor improvement in the best case and degenerates performance majorly in the worst case. For the second aspect, we find that parallel for loops yield better results than explicit tasking loops in cases where both can be used. This becomes more prominent with more fine-grained workloads. For the third, we find that significant energy savings can be made by not descheduling waiting threads, but instead having them spin, at the cost of a higher power consumption. We also analyse how the choice of compiler affects the above questions by compiling programs with each of ICC, Clang and GCC, and find that while neither is strictly better than the others, they can produce very different results for the same compiled programs. As a final step, we combine the findings of all results and suggest novel compiler directives as well as general recommendations on how to reduce energy consumption in OpenMP programs.

READ FULL TEXT

page 28

page 31

research
11/17/2021

An energy-efficient scheduling algorithm for shared facility supercomputer centers

The evolution of high-performance computing is associated with the growt...
research
07/02/2018

Compiler Phase Ordering as an Orthogonal Approach for Reducing Energy Consumption

Compiler writers typically focus primarily on the performance of the gen...
research
05/02/2017

How does Docker affect energy consumption? Evaluating workloads in and out of Docker containers

Context: Virtual machines provide isolation of services at the cost of h...
research
11/22/2018

A solution to the problem of parallel programming

The problem of parallel programming is the most important open problem o...
research
10/25/2022

Report on the energy consumption of the IOTA 2.0 prototype network (GoShimmer 0.8.3) under different testing scenarios

The high energy consumption of proof of work-based distributed ledgers h...
research
11/22/2018

Building the Case for Temperature Awareness in Energy Consumption Models: an Application of the Energy-Frequency Convexity Rule

Optimizing computing and communication systems that host energy-critical...
research
08/03/2013

An Improving Method for Loop Unrolling

In this paper we review main ideas mentioned in several other papers whi...

Please sign up or login with your details

Forgot password? Click here to reset