  With the advent of the Exascale capability allowing supercomputers to perform
at least $10^{18}$ IEEE 754 Double Precision (64 bits) operations per second,
many concerns have been raised regarding the energy consumption of
high-performance computing code. Recently, Frontier operated by the Oak Ridge
National Laboratory, has become the first supercomputer to break the exascale
barrier. In total, contains 9,408 CPUs, 37,632 GPUs, and 8,730,112 cores. This
world-leading supercomputer consumes about 21 megawatts which is truly
remarkable as was also ranked first on the Green500 list before being recently
replaced. The previous top Green500 machine, MN-3 in Japan, provided 39.38
gigaflops per watt, while the delivered 62.68 gigaflops per watt. All these
infrastructure and hardware improvements are just the tip of the Iceberg.
Energy-aware code is now required to minimize the energy consumption of
distributed and/or multi-threaded software. For example, the data movement
bottleneck is responsible for $35-60\%$ of a system's energy consumption during
intra-node communication. In an HPC environment, additional energy is consumed
through inter-node communication. This position paper aims to introduce future
research directions to enter now in the age of energy-aware software. The paper
is organized as follows. First, we introduce related works regarding
measurement and energy optimization. Then we propose to focus on the two
different levels of granularity in energy optimization.
