AbstractUnderstanding on-node application power and performance characteristics is critical to the push toward exascale computing. In this paper, we present an analysis of factors that impact both performance and energy usage of OpenMP applications. Using hardware performance counters in the Intel Sandybridge X86-64 architecture, we measure energy usage and power draw for a variety of OpenMP programs: simple micro-benchmarks, a task parallel benchmark suite, and a hydrodynamics miniapp of a few thousand lines. The evaluation reveals substantial variations in energy usage depending on the algorithm, the compiler, the optimization level, the number of threads, and even the temperature of the chip. Variations of 20% were common and in the extreme were over 2X. In most cases, performance increases and energy usage decreases as more threads are used. However, for programs with sub-linear speedup, minimal energy usage often occurs at a lower thread count than peak performance. Our findings informed the design and implementation of an adaptive run time system that automatically throttles concurrency using data measured on-line from hardware performance counters. Without source code changes or user intervention, the thread scheduler accurately decides when energy can be conserved by limiting the number of active threads. For the target programs, dynamic runtime throttling consistently reduces power and overall energy usage by up to 3%. The trade-off between performance and energy usage has been a constraint for several generations of commodity microprocessors. Decreasing voltage and clock frequency is one common mechanism to reduce power that can result in substantial energy savings for some applications (see Section V). Increasing frequency, e.g., using Intel's Turbo Boost or AMD's TurboCore, can save energy by completing the problem faster (but typically drawing higher power). Intel's Sandybridge chip provides multiple hardware techniques to control frequency and hardware performance counters to dynamically monitor the chip's energy usage. With these tools the runtime system can actively participate in the energy/performance trade-off. By limiting the number of active threads, the runtime can reduce the instantaneous power demand, but the effect on overall energy usage depends on how overall execution time is changed by running on fewer hardware threads. When shared hardware resources (last-level cache, memory or network bandwidth) are oversubscribed, reducing the number of threads will not significantly affect total execution time. In this case fewer active threads can result in energy savings. However, if there
For instance, Porterfield et al in REF conserve energy consumption by using an adaptive runtime system to automatically throttle the number of concurrently used threads based on power and energy consumption gathered by using the RAPL interface.
Power Measurement and Concurrency Throttling for Energy Reduction in OpenMP Programs
2013 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum
2013 IEEE International Symposium on Parallel & Distributed Processing, Workshops and Phd Forum
Computer Science