I. Introduction
As high performance computing systems grow in size and complexity, a set of new challenges emerge to keep the same level of productivity as the previous generation of machines. With exascale on the horizon, resilience and energy consumption are two of the major problems that have to be addressed [1], [2]. Resilience will become a fundamental concern due to the extremely large number of components that will form an exascale machine. Such a supercomputer will have millions of processors along with memory modules, routers and disks. With these many pieces, an exascale machine is expected to experience a failure every few minutes [2]. Power management will be the driver in the design of architectures, systems and applications for exascale. In a power-limited environment, it will be crucial to constrain all the layers of the system to meet the power budget. Furthermore, reducing power consumption by one megawatt may save around $lM/year even in a relatively inexpensive energy contract [2].