-ascending from class A to C. Additionally, depending on some speed up
-points for each class we run the classes A, B and C on 4, 8 or 9 and 16 nodes
-respectively. Depending on EQ~(\ref{eq:energy}), we measure the energy
-consumption for all the NAS MPI programs while assuming that the dynamic power with
-the highest frequency is equal to \np[W]{20} and the power static is equal to
-\np[W]{4} for all experiments. These power values were also used by Rauber and
-Rünger in~\cite{3}. The results showed that the algorithm selected different
-scaling factors for each program depending on the communication features of the
-program as in the plots~(\ref{fig:nas}). These plots illustrate that there are
-different distances between the normalized energy and the normalized inverted
-performance curves, because there are different communication features for each
-benchmark. When there are little or no communications, the inverted
-performance curve is very close to the energy curve. Then the distance between
-the two curves is very small. This leads to small energy savings. The opposite
-happens when there are a lot of communication, the distance between the two
-curves is big. This leads to more energy savings (e.g. CG and FT), see
-Table~(\ref{table:compareC}). All discovered frequency scaling factors
-optimize both the energy and the performance simultaneously for all NAS
-benchmarks. In Table~(\ref{table:compareC}), we record all optimal
-scaling factors results for each benchmark running class C. These scaling
-factors give the maximum energy saving percentage and the minimum performance
-degradation percentage at the same time from all available scaling factors.
+ascending from class A to C. Additionally, depending on some speed up points
+for each class we run the classes A, B and C on 4, 8 or 9 and 16 nodes
+respectively. Depending on EQ~\eqref{eq:energy}, we measure the energy
+consumption for all the NAS MPI programs while assuming that the dynamic power
+with the highest frequency is equal to \np[W]{20} and the power static is equal
+to \np[W]{4} for all experiments. These power values were also used by Rauber
+and Rünger in~\cite{3}. The results showed that the algorithm selected
+different scaling factors for each program depending on the communication
+features of the program as in the plots from Figure~\ref{fig:nas}. These plots
+illustrate that there are different distances between the normalized energy and
+the normalized inverted execution time curves, because there are different
+communication features for each benchmark. When there are little or no
+communications, the inverted execution time curve is very close to the energy
+curve. Then the distance between the two curves is very small. This leads to
+small energy savings. The opposite happens when there are a lot of
+communication, the distance between the two curves is big. This leads to more
+energy savings (e.g. CG and FT), see Table~\ref{table:compareC}. All discovered
+frequency scaling factors optimize both the energy and the execution time
+simultaneously for all NAS benchmarks. In Table~\ref{table:compareC}, we record
+all optimal scaling factors results for each benchmark running class C. These
+scaling factors give the maximum energy saving percentage and the minimum
+performance degradation percentage at the same time from all available scaling
+factors.