]> AND Private Git Repository - ThesisAhmed.git/blob - CHAPITRE_02.tex
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
adding the ch3
[ThesisAhmed.git] / CHAPITRE_02.tex
1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 %%                          %%
3 %%       CHAPTER 04        %%
4 %%                          %%
5 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6
7 \newcommand{\AG}[2][inline]{%
8   \todo[color=green!50,#1]{\sffamily\textbf{AG:} #2}\xspace}
9 \newcommand{\JC}[2][inline]{%
10   \todo[color=red!10,#1]{\sffamily\textbf{JC:} #2}\xspace}
11
12 \newcommand{\Xsub}[2]{{\ensuremath{#1_\mathit{#2}}}}
13
14 %% used to put some subscripts lower, and make them more legible
15 \newcommand{\fxheight}[1]{\ifx#1\relax\relax\else\rule{0pt}{1.52ex}#1\fi}
16
17 \newcommand{\Tcomp}[1][]{\Xsub{T}{comp}_{#1}}
18 \renewcommand*\npunitcommand[1]{\text{#1}}
19
20
21 \chapter{Energy optimization of homogeneous platform}
22 \label{ch2}
23
24 \section{Introduction}
25 \label{ch2:1}
26
27 Dynamic Voltage and Frequency Scaling (DVFS) can be applied to modern CPUs. This technique is 
28 usually used to reduce the energy consumed by a CPU while computing. Indeed,
29 power consumption by a processor  is exponentially related to its frequency. 
30 Thus, decreasing the frequency reduces the power consumed by the CPU. However, it can also 
31 significantly affect the performance of the executed program if it is compute bound. The performance degradation ratio can even be higher 
32 than the saved energy ratio. Therefore, the chosen frequency scaling factor must give the best possible
33 trade-off between energy reduction and performance. This chapter presents an algorithm 
34 that predicts the energy consumed with each frequency gear and selects the one that gives 
35 the best ratio between energy consumption reduction and performance. Furthermore, the main
36 objective of HPC systems is to execute as fast as possible the application. Therefore, our 
37 algorithm selects the scaling factor online with a very small overhead.  The proposed algorithm 
38 takes into account both the computation and communication times of the Message Passing 
39 Interface  (MPI) programs to choose the frequency scaling factor. 
40 This algorithm has the ability to predict both energy consumption and execution time over 
41 all available scaling factors.  The prediction achieved depends on some computing time information,
42 gathered at the beginning of the runtime.  We have applied this algorithm to the NAS parallel 
43 benchmarks (NPB v3.3) developed by the  NASA~\cite{ref65}.  Our experiments are executed using the simulator
44 SimGrid/SMPI v3.10~\cite{ref66} over an homogeneous
45 distributed memory architecture. 
46
47 This chapter is composed of two parts. The first part, the proposed frequency scaling selection algorithm  uses the energy model of the Rauber and Rünger \cite{ref47} and  is compared to Rauber and Rünger's method.  The comparison results show that our algorithm gives better energy-time trade-off. In the second part,  a new energy model  that takes into account both the communication and computation times of the MPI programs running over a homogeneous cluster is developed.
48 It  also shows the new results obtained using the new energy model. The results are compared to the  ones given by Rauber and Rünger's energy model.  
49
50
51 This chapter is organized as follows:  Section~\ref{ch2:2} explains the execution
52 of parallel tasks and the sources of slack times.  It also presents an energy
53 model for homogeneous platforms from other researchers.  Section~\ref{ch2:3} describes how the
54 performance of MPI programs can be predicted.  Section~\ref{ch2:4} presents
55 the energy-performance objective function that maximizes the reduction of energy
56 consumption while minimizing the degradation of the program's performance.
57 Section~\ref{ch2:5} details the algorithm that returns the scaling factor that gives the best energy-performance
58 trade-off for a parallel iterative application.
59 Section~\ref{ch2:6} verifies the accuracy of the performance prediction model
60 and presents the results of the proposed algorithm.  It also shows the
61 comparison results between our method and other existing methods.  
62 Section~\ref{ch2:7} describes the new proposed energy consumption model for 
63 homogeneous platforms. Section~\ref{ch2:8} presents the experimental results 
64 of using the new energy model. Finally,  section~\ref{ch2:9} summarizes this chapter.
65
66
67 \section{Related works}
68 \label{sec.relwork}
69
70
71 In this section, some heuristics to compute the scaling factor are presented and
72 classified into two categories: offline and online methods.
73
74 \subsection{Offline scaling factor selection methods}
75
76 The offline scaling factor selection methods are executed before the runtime of
77 the program.  They return static scaling factor values to the processors
78 participating in the execution of the parallel program.  On the one hand, the
79 scaling factor values could be computed based on information retrieved by
80 analyzing the code of the program and the computing system that will execute it.
81 In~\cite{ref56}, Azevedo et al. detect during compilation the dependency points
82 between tasks in a multi-task program.  This information is then used to lower
83 the frequency of some processors in order to eliminate slack times.  A slack
84 time is the period of time during which a processor that has already finished
85 its computation, has to wait for a set of processors to finish their
86 computations and send their results to the waiting processor in order to
87 continue its task that is dependent on the results of computations being
88 executed on other processors.  Freeh et al. showed in~\cite{ref53} that the
89 communication times of MPI programs do not change when the frequency is scaled
90 down.  On the other hand, some offline scaling factor selection methods use the
91 information gathered from previous full or partial executions of the program. 
92 The whole program or a part of it  is usually executed over all the available frequency
93 gears and the execution time and the energy consumed with each frequency
94 gear are measured.  Then a heuristic or an exact method uses the retrieved
95 information to compute the values of the scaling factor for the processors.
96 In~\cite{ref57}, Xie et al. use an exact exponential breadth-first search algorithm
97 to compute the scaling factor values that give the optimal energy reduction
98 while respecting a deadline for a sequential program.  They also present a
99 linear heuristic that approximates the optimal solution.  In~\cite{ref58}, Rountree
100 et al. use a linear programming algorithm, while in~\cite{ref59,ref60}, Cochran et
101 al. use a multi-logistic regression algorithm for the same goal.  The main
102 drawback of these methods is that they all require executing the
103 whole program or, a part of it, on all frequency gears for each new instance of 
104 the same program.
105
106 \subsection{Online scaling factor selection methods}
107
108 The online scaling factor selection methods are executed during the runtime of
109 the program.  They are usually integrated into iterative programs where the same
110 block of instructions is executed many times.  During the first few iterations,
111 a lot of information are measured such as the execution time, the energy consumed
112 using a multimeter, the slack times, \dots{} Then a method will exploit these
113 measurements to compute the scaling factor values for each processor.  This
114 operation, measurements and computing new scaling factors, can be repeated as
115 much as needed if the iterations are not regular.  Kimura, Peraza, Yu-Liang et
116 al.~\cite{ref61,ref55,ref62} used many heuristics to select the appropriate scaling
117 factor values to eliminate the slack times during runtime.  However, as seen
118 in~\cite{ref63,ref64}, machine learning methods can take a lot of time to converge
119 when the number of available gears is big.  To reduce the impact of slack times,
120 in~\cite{ref54}, Lim et al. developed an algorithm that detects the communication
121 sections and changes the frequency during these sections only.  This approach
122 might change the frequency of each processor many times per iteration if an
123 iteration contains more than one communication section.  In~\cite{ref53}, Rauber and
124 Rünger used an analytical model that can predict the consumed energy and the
125 execution time for every frequency gear after measuring the consumed energy and
126 the execution time with the highest frequency gear.  These predictions may be
127 used to choose the optimal gear for each processor executing the parallel
128 program to reduce energy consumption.  To maintain the performance of the
129 parallel program , they set the processor with the biggest load to the highest
130 gear and then compute the scaling factor values for the rest of the processors.
131 Although this model was built for parallel architectures, it can be adapted to
132 distributed architectures by taking into account the communication times.  The
133 primary contribution of this chapter is to present a new online scaling factor
134 selection method which has the following characteristics:
135 \begin{enumerate}
136 \item It is based on both  Rauber and Rünger and the new  energy model to predict the energy consumption of the application with different frequency gears. 
137 \item It selects the frequency scaling factor for simultaneously optimizing
138   energy reduction and maintaining performance.
139 \item It is well adapted to distributed architectures because it takes into
140   account the communication time.
141 \item It is well adapted to distributed applications with imbalanced tasks.
142 \item It has a very small footprint when compared to other methods
143   (e.g.,~\cite{ref64}) and does not require profiling or training as
144   in~\cite{ref59,ref60}.
145 \end{enumerate}
146
147
148 \section{Execution time and energy consumption of parallel tasks running on a homogeneous platform}
149 \label{ch2:2}
150
151 \subsection{Parallel tasks execution on a homogeneous platform}
152 \label{ch2:2:1}
153 A homogeneous cluster consists in identical nodes in terms of hardware and
154 software.  Each node has its own memory and at least one processor which can be
155 a multi-core.  The nodes are connected via a high bandwidth network.  Tasks
156 executed on this model can be either synchronous or asynchronous.  In this chapter
157 we consider the execution of  synchronous tasks on distributed homogeneous
158 platform.  These tasks can synchronously exchange  data via message passing.
159
160
161
162 \begin{figure}[h!]
163 \centering
164 \centering
165 \includegraphics[scale=0.73]{fig/ch2/commtasks} 
166 \includegraphics[scale=0.73]{fig/ch2/compt}\\ ~ ~ ~ ~ ~  ~(a) ~ ~  ~ ~ ~  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~(b)
167 \caption{Parallel tasks execution on a homogeneous platform (a) imbalanced communications and (b) imbalanced  
168 computations}
169 \label{fig:homo}
170 \end{figure}
171
172 The execution time of a task consists in the computation time and the
173 communication time.  Moreover, the synchronous communications between tasks can
174 lead to slack times while tasks wait at a synchronization barrier for other
175 tasks to finish their tasks (see figure~\ref{fig:homo}(a)).  The imbalanced
176 communications happen when nodes have to send/receive different amounts of data
177 or they communicate with different numbers of nodes.  Other sources of slack
178 times are imbalanced computations.  This happens when processing different
179 amounts of data on each processor (see figure~\ref{fig:homo}(b)).  In this case the
180 fastest tasks have to wait at the synchronization barrier for the slowest ones
181 to continue their computations.  In both cases the overall execution time of the program
182 is the execution time of the slowest task as in EQ~(\ref{eq:T1}).
183 \begin{equation}
184   \label{eq:T1}
185   \textit{Program Time} = \max_{i=1,2,\dots,N} T_i
186 \end{equation}
187 where $T_i$ is the execution time of task $i$ and all the tasks are executed
188 concurrently on different processors.
189
190 \subsection{Energy consumption model for a homogeneous platform}
191 \label{ch2:2:2}
192
193 The total energy  for a parallel homogeneous
194 platform, as presented by Rauber and Rünger~\cite{ref47}, can be written as a
195 function of the scaling factor $S$, as in EQ~\ref{eq:energy}.
196 Moreover, the scaling factor $S_1$ is the scaling factor which should be the
197 highest because they are proportional to the time values $T_i$.  Therefore, the scaling
198 factors of the others tasks $S_i$ are computed as in EQ~\ref{eq:si}.
199
200 \begin{equation}
201   \label{eq:si}
202   S_i = S \cdot \frac{T_1}{T_i}
203       = \frac{F_{max}}{F_{new}} \cdot \frac{T_1}{T_i},~{i=1,2,\dots,N}
204 \end{equation}
205
206 Rauber and Rünger's scaling factor selection
207 method  uses the same energy model.  In their method, the optimal scaling factor is
208 computed by minimizing the derivation of EQ~(\ref{eq:energy}) which produces
209 EQ~(\ref{eq:sopt}).
210
211 \begin{equation}
212   \label{eq:sopt}
213   S_\textit{opt} = \sqrt[3]{\frac{2}{N} \cdot \frac{P_\textit{dyn}}{P_\textit{static}} \cdot
214     \left( 1 + \sum_{i=2}^{N} \frac{T_i^3}{T_1^3} \right) }
215 \end{equation}
216
217 This model  computes the frequency scaling factor which minimizes the energy consumption of the parallel program.
218
219 \section{Performance evaluation of MPI programs}
220 \label{ch2:3}
221
222 The execution time of a parallel synchronous iterative application is equal
223 to the execution time of its slowest task as in figure~(\ref{fig:homo}).  
224 If there is no communication in the application and it is not data bounded, the execution time of this 
225 parallel application is linearly proportional to the operational frequency. Any 
226 DVFS operation for energy reduction increases the execution time of the parallel
227 program.  Therefore, the scaling factor $S$ is linearly proportional to the
228 execution time of the application.  However, in most MPI applications the processes exchange
229 data.  During these communications the processors involved remain idle during a synchronous communication.  For that reason, any change in the frequency has no
230 impact on the time of communication~\cite{ref53}.  The communication time for a
231 task is the summation of periods of time that begin with an MPI call for sending
232 or receiving a message until the message is synchronously sent or received.  To
233 be able to predict the execution time of MPI program, the communication time and
234 the computation time for the slowest task must be measured before scaling.  These
235 times are used to predict the execution time for any MPI program as a function
236 of the new scaling factor as in EQ~(\ref{eq:tnew}).
237 \begin{equation}
238   \label{eq:tnew}
239  \textit  T_\textit{new} = T_\textit{Max Comp Old} \cdot S + T_{\textit{Min Comm Old}}
240 \end{equation}
241 In this chapter, this prediction method is used to select the best scaling factor
242 for each processor as presented in the next section.
243
244
245
246 \section{Performance and energy reduction trade-off}
247 \label{ch2:4}
248 This section presents our method for choosing the  scaling factor that
249 gives the best tradeoff between energy reduction and performance. This method
250 takes into account the execution times for both computation and communication to
251 compute the scaling factor.  Since the energy consumption and the performance
252 are not measured using the same metric, a normalized value of both measurements
253 can be used to compare them.  The normalized energy is the ratio between the
254 consumed energy with scaled frequency and the consumed energy without scaled
255 frequency:
256
257 \begin{equation}
258   \label{eq:enorm}
259   E_\textit{Norm} = \frac{ E_\textit{Reduced}}{E_\textit{Original}} 
260          = \frac{P_\textit{dyn} \cdot S_1^{-2} \cdot
261                \left( T_1 + \sum_{i=2}^{N}\frac{T_i^3}{T_1^2}\right) +
262                P_\textit{static} \cdot T_1 \cdot S_1 \cdot N  }{
263               P_\textit{dyn} \cdot \left(T_1+\sum_{i=2}^{N}\frac{T_i^3}{T_1^2}\right) +
264               P_\textit{static} \cdot T_1 \cdot N }
265 \end{equation}
266 In the same way we can normalize the performance as follows:
267 \begin{equation}
268   \label{eq:pnorm}
269   T_\textit{Norm} = \frac{T_\textit{New}}{T_\textit{Old}}
270           = \frac{T_\textit{Max Comp Old} \cdot S +
271            T_\textit{Min Comm Old}}{T_\textit{Max Comp Old} +
272            T_\textit{Min Comm Old}}
273 \end{equation}
274
275 The relation between the execution time and the consumed energy of a program is nonlinear and complex. In consequences,  the relation between the consumed energy and the scaling factor is also nonlinear, for more details refer to~\cite{ref53}. The resulting normalized energy consumption curve and execution time curve, for different scaling factors, do not have the same direction see Figure~\ref{fig:rel}(b).  To tackle this problem and optimize both terms,  we inverse the equation of the normalized execution time which gives the normalized performance and is computed as follows:
276
277 \begin{equation}
278   \label{eq:pnorm_en}
279    P_\textit{Norm} = \frac{ T_\textit{old}}{ T_\textit{new}}
280                = \frac{T_\textit{max Comp Old} +
281                  T_\textit{min Comm Old}}{T_\textit{max Comp Old} \cdot S +
282                  T_\textit{min Comm Old}}
283 \end{equation}
284
285 \begin{figure}[h!]
286 \centering
287 \centering
288 \includegraphics[scale=1]{fig/ch2/file}\\~ ~ ~ ~ ~(a) \\
289 \includegraphics[scale=1]{fig/ch2/file3}\\~ ~ ~ ~ ~(b)
290 \caption{The energy and performance relation (a) Converted relation and (b) Real relation}
291 \label{fig:rel}
292 \end{figure}
293
294 Then, we can model our objective function as finding the maximum distance
295 between the energy curve EQ~\ref{eq:enorm} and the performance
296 curve EQ~\ref{eq:pnorm_en} over all available scaling factors.  This
297 represents the minimum energy consumption with minimum execution time (better
298 performance) at the same time, see Figure~\ref{fig:rel}(a).  Then
299 our objective function has the following form:
300
301 \begin{equation}
302   \label{eq:max1}
303    MaxDist = \max_{j=1,2,\dots,F}
304       (\overbrace{P_\textit{norm}(S_j)}^{\text{Maximize}} -
305        \overbrace{E_\textit{norm}(S_j)}^{\text{Minimize}} )
306 \end{equation}
307 where $F$ is the number of available frequencies. Then we can select the optimal
308 scaling factor that satisfies EQ~\ref{eq:max1}.  Our objective function can
309 work with any energy model or static power values stored in a data file.
310 Moreover, this function works in optimal way when the energy curve has a convex
311 form over the available frequency scaling factors as shown in~\cite{ref48,ref47,ref64}.
312
313 \section{Optimal scaling factor for performance and energy}
314 \label{ch2:5}
315
316
317 \begin{algorithm}[!t]
318   \caption{Scaling factor selection algorithm for a homogeneous cluster}
319   \label{EPSA}
320   \begin{algorithmic}[1]
321     \State  Initialize the variable $Dist=0$
322     \State Set dynamic and static power values.
323     \State Set $P_{states}$ to the number of available frequencies.
324     \State Set the variable $F_{new}$ to max. frequency,  $F_{new} = F_{max} $
325     \State Set the variable $F_{diff}$ to the difference between two successive
326            frequencies.
327     \For {$j:=1$   to   $P_{states} $}
328       \State $F_{new}=F_{new} - F_{diff} $
329       \State $S = \frac{F_\textit{max}}{F_\textit{new}}$
330       \State $S_i = S \cdot \frac{T_1}{T_i}
331                   = \frac{F_\textit{max}}{F_\textit{new}} \cdot \frac{T_1}{T_i}$
332              for $i=1,\dots,N$
333       \State $E_\textit{Norm} =
334           \frac{P_\textit{dyn} \cdot S_1^{-2} \cdot
335                   \left( T_1 + \sum_{i=2}^{N}\frac{T_i^3}{T_1^2}\right) +
336                   P_\textit{static} \cdot T_1 \cdot S_1 \cdot N }{
337                 P_\textit{dyn} \cdot
338                   \left(T_1+\sum_{i=2}^{N}\frac{T_i^3}{T_1^2}\right) +
339                   P_\textit{static} \cdot T_1 \cdot N }$
340       \State $P_{Norm}= \frac{T_{old}}{T_{new}}$
341       \If{$(P_{Norm}-E_{Norm} > Dist)$}
342         \State $S_{opt} = S$
343         \State $Dist = P_{Norm} - E_{Norm}$
344       \EndIf
345     \EndFor
346     \State  Return $S_{opt}$
347   \end{algorithmic}
348 \end{algorithm}
349
350
351 Algorithm~\ref{EPSA} computes the optimal scaling factor according to the
352 objective function described above.
353 The proposed algorithm works online during the execution time of the MPI
354 program.  It selects the optimal scaling factor after gathering the computation
355 and communication times from the program after one iteration.  Then the program
356 changes the new frequencies of the CPUs according to the computed scaling
357 factors. The  experiments conducted over a homogeneous cluster and described in
358 Section~\ref{ch2:6}, showed that this algorithm has a small execution time. It takes on average \np[$\mu$s]{1.52}  for 4 nodes and \np[$\mu$s]{6.65} for 32
359 nodes.  The algorithm complexity is $O(F\cdot N)$, where $F$ is the number of
360 available frequencies and $N$ is the number of computing nodes.  The algorithm
361 is called just once during the execution of the program.  The DVFS algorithm
362 ~\ref{dvfs} shows where and when the algorithm \ref{EPSA} is called in the MPI
363 program.
364
365
366
367 \begin{algorithm}[!t]
368   \caption{DVFS algorithm of homogeneous cluster}
369   \label{dvfs}
370   \begin{algorithmic}[1]
371     \For {$k:=1$ to \textit{some iterations}}
372       \State Computations section.
373       \State Communications section.
374       \If {$(k=1)$}
375         \State Gather all times of computation and  communication from each node.
376         \State Call algorithm~\ref{EPSA} with these times.
377         \State Compute the new frequency from the returned optimal scaling factor.
378         \State Set the new frequency to the CPU.
379       \EndIf
380     \EndFor
381   \end{algorithmic}
382 \end{algorithm}
383
384
385 After obtaining the optimal scaling factor, the program calculates the new
386 frequency $F_i$ for each task proportionally to its execution time, $T_i$.  By
387 substitution of EQ~(\ref{eq:s}) in EQ~(\ref{eq:si}), we can calculate the new
388 frequency $F_i$ as follows:
389 \begin{equation}
390   \label{eq:fi}
391   F_i = \frac{F_\textit{max} \cdot T_i}{S_\textit{opt} \cdot T_\textit{max}}
392 \end{equation}
393 According to this equation all the nodes may have the same frequency value if
394 they have balanced workloads, otherwise, they take different frequencies when
395 having imbalanced workloads.  Thus, EQ~(\ref{eq:fi}) adapts the frequency of the
396 CPU to the nodes' workloads to maintain the performance of the program.
397
398 \section{Experimental results}
399 \label{ch2:6}
400 Our experiments are executed on the simulator SimGrid/SMPI v3.10.  We configure
401 the simulator to use a homogeneous cluster with one core per node.  The detailed
402 characteristics of our platform file are shown in
403 table~(\ref{table:platform-homo}).  Each node in the cluster has 18 frequency values
404 from  2.5 GHz to 800 MHz with 100 MHz  difference between each
405 two successive frequencies.  The simulated network link is 1 GB Ethernet
406 (TCP/IP).  The backbone of the cluster simulates a high performance switch.
407
408 \begin{table}[!t]
409   \caption{Platform file parameters}
410   % title of Table
411   \centering
412   \begin{tabular}{|*{7}{l|}}
413     \hline
414     Max      & Min      & Backbone        & Backbone         & Link         & Link            & Sharing \\
415     Freq.    & Freq.    & Bandwidth       & Latency          & Bandwidth    & Latency         & Policy  \\
416     \hline
417     2.5      & 800       & 2.25  GBps     & 0.5  $\mu$s      & 1 GBps       &  50 $\mu$s      & Full    \\
418     GHz      & MHz      &                 &                  &              &                 & Duplex  \\
419     \hline
420   \end{tabular}
421   \label{table:platform-homo}
422 \end{table}
423 \subsection{Performance prediction verification}
424 \label{ch2:6:1}
425 In this section, the precision of the proposed performance prediction method 
426 based on EQ~(\ref{eq:tnew}) is evaluated by applying it to the NAS benchmarks.  
427 The NAS programs are executed with the class B option to compare the real execution 
428 time with the predicted execution time.  Each program runs offline with all available
429 scaling factors on 8 or 9 nodes (depending on the benchmark) to produce real
430 execution time values.  These scaling factors are computed by dividing the
431 maximum frequency by the new one see EQ~(\ref{eq:s}).
432 \begin{figure*}[h!]
433   \centering 
434   \centering 
435   \centering
436   \includegraphics[width=.49\textwidth]{fig/ch2/cg_per}
437   \includegraphics[width=.49\textwidth]{fig/ch2/mg_pre}
438   \includegraphics[width=.49\textwidth]{fig/ch2/bt_pre}
439   \includegraphics[width=.49\textwidth]{fig/ch2/lu_pre}
440   \caption{Comparing predicted to real execution time}
441   \label{fig:pred}
442 \end{figure*}
443 %see Figure~\ref{fig:pred}
444 In our cluster there are 18 available frequency states for each processor.  This
445 leads to 18 run states for each program.  Seven MPI programs of the NAS
446 parallel benchmarks were used: CG, MG, EP, FT, BT, LU and SP. Table \ref{table:NAS-dec} shows 
447 the description of these seven benchmarks. 
448 Figure~(\ref{fig:pred}) presents plots of the real execution times compared to the simulated ones.  The maximum
449 normalized error between these two execution times varies between 0.0073 to
450 0.031 depending on the executed benchmark.  The smallest prediction error
451 was for CG and the worst one was for LU.
452
453 \begin{table}[!t]
454 \centering
455 \caption{NAS Benchmarks description}
456 \label{table:NAS-dec}
457 \begin{tabular}{|l|l|l|}
458 \hline
459 Benchmark & Full Name                                                                     & Description                                                                                                                                                                                                                                                                     \\ \hline
460 CG        & Conjugate Gradiant                                                            & \begin{tabular}[c]{@{}l@{}}Estimate the smallest eigenvalue of a large \\ sparse  symmetric positive-definite matrix \\ using the  inverse iteration with the conjugate \\ gradient method as a subroutine for solving \\ systems of linear equations\end{tabular}              \\ \hline
461 MG        & MultiGrid                                                                     & \begin{tabular}[c]{@{}l@{}}Approximate the solution to a three-dimensional \\ discrete Poisson equation using the V-cycle \\ multigrid method\end{tabular}                                                                                                                      \\ \hline
462 EP        & Embarrassingly Parallel                                                       & \begin{tabular}[c]{@{}l@{}}Generate independent Gaussian random \\ variates using the Marsaglia polar method\end{tabular}                                                                                                                                                       \\ \hline
463 FT        & Fast Fourier Transform                                                        & \begin{tabular}[c]{@{}l@{}}Solve a three-dimensional partial differential\\ equation (PDE) using the fast Fourier transform \\ (FFT)\end{tabular}                                                                                                                               \\ \hline
464 BT        & Block Tridiagonal                                                             & \multirow{3}{*}{\begin{tabular}[c]{@{}l@{}}Solve a synthetic system of nonlinear PDEs \\ using three different algorithms involving \\ block tridiagonal, scalar pentadiagonal and \\ symmetric successive over-relaxation \\ (SSOR) solver kernels, respectively\end{tabular}} \\ \cline{1-2}
465 LU        & \begin{tabular}[c]{@{}l@{}}Lower-Upper symmetric \\ Gauss-Seidel\end{tabular} &                                                                                                                                                                                                                                                                                 \\ \cline{1-2}
466 SP        & \begin{tabular}[c]{@{}l@{}}Scalar \\ Pentadiagonal\end{tabular}               &                                                                                                                                                                                                                                                                                 \\ \hline
467 \end{tabular}
468 \end{table}
469
470 \subsection{The experimental results for the scaling algorithm }
471 \label{ch2:6:2}
472 The proposed algorithm was applied to seven MPI programs of the NAS benchmarks
473 (EP, CG, MG, FT, BT, LU and SP) which were run with three classes (A, B and C).
474 For each instance, the benchmarks were executed on a number of processors
475 proportional to the size of the class.  Each class represents the problem size in 
476 ascending order from  class A to C.  The classes A, B and C were executed on 4, 8 or 9 and 16 nodes respectively.  The energy consumption for all the NAS MPI programs was measured while assuming that the dynamic power with
477 the highest frequency is equal to 20 W and the static power  is equal to
478 4 W for all the experiments.  These power values were also used by Rauber and
479 Rünger in~\cite{ref47}.  The results showed that the algorithm selected different
480 scaling factors for each program depending on the communication features of the
481 program as in the plots~(\ref{fig:nas}).  These plots illustrate that there are
482 different distances between the normalized energy and the normalized 
483 performance curves, because there are different communication features for each
484 benchmark.  When there are little or no communications, the 
485 performance curve is very close to the energy curve.  Then the distance between
486 the two curves is very small.  This leads to small energy savings.  The opposite
487 happens when there are a lot of communication, the distance between the two
488 curves is big.  This leads to more energy savings (e.g. CG and FT), see
489 table~(\ref{table:factors results}).  All the discovered frequency scaling factors
490 optimize both the energy and the performance simultaneously for all the NAS
491 benchmarks.  In table~(\ref{table:factors results}), the optimal
492 scaling factors results for each benchmark running class C are presented.  These scaling
493 factors give the maximum energy saving percentage and the minimum performance
494 degradation percentage at the same time from all available scaling factors.
495 \begin{figure*}[h!]
496   \centering
497   \includegraphics[width=.49\textwidth]{fig/ch2/ep}
498   \includegraphics[width=.49\textwidth]{fig/ch2/cg}
499   \includegraphics[width=.49\textwidth]{fig/ch2/sp}
500   \includegraphics[width=.49\textwidth]{fig/ch2/lu}
501   \includegraphics[width=.49\textwidth]{fig/ch2/bt}
502   \includegraphics[width=.49\textwidth]{fig/ch2/ft}
503   \caption{Optimal scaling factors for the predicted energy and performance of NAS benchmarks}
504   \label{fig:nas}
505 \end{figure*}
506 \begin{table}[htb]
507   \caption{The scaling factors results}
508   % title of Table
509   \centering
510   \begin{tabular}{|l|*{4}{r|}}
511     \hline
512     Program & Optimal        & Energy    & Performance    & Energy-Perf. \\
513     Name    & Scaling Factor & Saving \% & Degradation \% & Distance     \\
514     \hline
515     CG      & 1.56           & 39.23     & 14.88          & 24.35 \\
516     \hline
517     MG      & 1.47           & 34.97     & 21.70          & 13.27 \\
518     \hline
519     EP      & 1.04           & 22.14     & 20.73          &  1.41 \\
520     \hline
521     LU      & 1.38           & 35.83     & 22.49          & 13.34 \\
522     \hline
523     BT      & 1.31           & 29.60     & 21.28          &  8.32 \\
524     \hline
525     SP      & 1.38           & 33.48     & 21.36          & 12.12 \\
526     \hline
527     FT      & 1.47           & 34.72     & 19.00          & 15.72 \\
528     \hline
529   \end{tabular}
530   \label{table:factors results}
531   % is used to refer this table in the text
532 \end{table}
533
534 As shown in table~(\ref{table:factors results}), when the optimal scaling
535 factor has a big value we can gain more energy savings  as in CG and
536 FT benchmarks.  The opposite happens when the optimal scaling factor has a  small value as in BT and EP benchmarks.  Our algorithm selects a big scaling factor value when the
537 communication and  other slacks times are big.  In EP there are no communication inside the iterations, which leads our algorithm to select smaller scaling factors (inducing smaller energy savings).
538
539
540 \subsection{Results comparison}
541 \label{ch2:6:3}
542 In this section, we compare our scaling factor selection method with the Rauber and
543 Rünger's method~\cite{ref47}.  They had two scenarios, the first is to reduce energy
544 to the optimal level without considering the performance as in
545 EQ~(\ref{eq:sopt}).  We refer to this scenario as $R_{E}$.  The second scenario
546 is similar to the first except setting the slower task to the maximum frequency
547 (the scale $S=1$) to keep the performance from degradation as mush as
548 possible.  We refer to this scenario as $R_{E-P}$ and to our
549 algorithm as EPSA (Energy to Performance Scaling Algorithm).  The comparison is
550 made in table ~\ref{table:compareC}.  This table shows the results of our method and
551 the Rauber and Rünger's scenarios for all the NAS benchmarks programs for class C.
552
553 \begin{table}[h!]
554   \caption{Comparing results for the NAS class C}
555   % title of Table
556   \centering
557   \begin{tabular}{|l|l|*{4}{r|}}
558     \hline
559     Method    & Program & Factor & Energy    & Performance    & Energy-Perf. \\
560     Name      & Name    & Value  & Saving \% & Degradation \% & Distance     \\
561     \hline
562     % \rowcolor[gray]{0.85}
563     $EPSA$    & CG      & 1.56   & 39.23     & 14.88          &  24.35 \\ \hline
564     $R_{E-P}$ & CG      & 2.15   & 45.36     & 25.89          &  19.47 \\ \hline
565     $R_{E}$   & CG      & 2.15   & 45.36     & 26.70          &  18.66 \\ \hline
566
567     $EPSA$    & MG      & 1.47   & 34.97     & 21.69          &  13.27 \\ \hline
568     $R_{E-P}$ & MG      & 2.15   & 43.65     & 40.45          &   3.20 \\ \hline
569     $R_{E}$   & MG      & 2.15   & 43.64     & 41.38          &   2.26 \\ \hline
570
571     $EPSA$    & EP      & 1.04   & 22.14     & 20.73          &   1.41 \\ \hline
572     $R_{E-P}$ & EP      & 1.92   & 39.40     & 56.33          & -16.93 \\ \hline
573     $R_{E}$   & EP      & 1.92   & 38.10     & 56.35          & -18.25 \\ \hline
574
575     $EPSA$    & LU      & 1.38   & 35.83     & 22.49          &  13.34 \\ \hline
576     $R_{E-P}$ & LU      & 2.15   & 44.97     & 41.00          &   3.97 \\ \hline
577     $R_{E}$   & LU      & 2.15   & 44.97     & 41.80          &   3.17 \\ \hline
578
579     $EPSA$    & BT      & 1.31   & 29.60     & 21.28          &   8.32 \\ \hline
580     $R_{E-P}$ & BT      & 2.13   & 45.60     & 49.84          &  -4.24 \\ \hline
581     $R_{E}$   & BT      & 2.13   & 44.90     & 55.16          & -10.26 \\ \hline
582
583     $EPSA$    & SP      & 1.38   & 33.48     & 21.35          &  12.12 \\ \hline
584     $R_{E-P}$ & SP      & 2.10   & 45.69     & 43.60          &   2.09 \\ \hline
585     $R_{E}$   & SP      & 2.10   & 45.75     & 44.10          &   1.65 \\ \hline
586
587     $EPSA$    & FT      & 1.47   & 34.72     & 19.00          &  15.72 \\ \hline
588     $R_{E-P}$ & FT      & 2.04   & 39.40     & 37.10          &   2.30 \\ \hline
589     $R_{E}$   & FT      & 2.04   & 39.35     & 37.70          &   1.65 \\ \hline
590   \end{tabular}
591   \label{table:compareC}
592   % is used to refer this table in the text
593 \end{table}
594
595
596 \begin{figure*}[h!]
597   \centering
598  % \includegraphics[width=.6\textwidth]{fig/ch2/classA.eps}
599   % \includegraphics[width=.6\textwidth]{fig/ch2/classB.eps}
600   \includegraphics[width=.7\textwidth]{fig/ch2/classC.eps}
601   \caption{Comparing our method to Rauber and Rünger's methods}
602   \label{fig:compare}
603 \end{figure*}
604
605
606
607 As shown in the table~\ref{table:compareC}, the ($R_{E-P}$) method outperforms the ($R_{E}$)
608 method in terms of performance and energy reduction.  The ($R_{E-P}$) method
609 also gives better energy savings than our method.  However, although our scaling
610 factor is not optimal for energy reduction, the results in these tables prove
611 that our algorithm returns the best scaling factor that satisfy our objective
612 method: the largest distance between energy reduction and performance
613 degradation. Figure~\ref{fig:compare}  illustrates even better the distance between the energy reduction and performance degradation. The negative values mean that one of
614 the two objectives (energy or performance) has been degraded more than the 
615 other.  The positive trade-offs with the highest values lead to maximum energy
616 savings while keeping the performance degradation as low as possible.  Our
617 algorithm always gives the highest positive energy to performance trade-offs
618 while the Rauber and Rünger's method, ($R_{E-P}$), gives sometimes negative
619 trade-offs such as for BT and EP.
620
621
622 \section{The new energy model for a homogeneous cluster}
623 \label{ch2:7}
624 As mentioned in chapter \ref{ch1} section \ref{ch1:3}, the power consumed by a processor is divided 
625 into two power metrics: the static and the dynamic power. The  first power metric  is
626 consumed as long as the computing unit is on, while the other one is consumed when the processor is doing the computations. Consequentially, the energy consumed by an individual processor
627 to execute a given program can be computed as follows:
628
629
630 \begin{equation}
631   \label{eq:eind1}
632    E_\textit{ind} =  P_\textit{dyn} \cdot T_{Comp} + P_\textit{static} \cdot T
633 \end{equation}
634
635 where $T$ is the execution time of the program, $T_{Comp}$ is the computation
636 time and $T_{Comp} \leq T$.  $T_{Comp}$ may be equal to $T$ if there is no
637 communication, no slack time and no synchronization.
638
639 Applying a DVFS operation leads to a new frequency state which is represented by the frequency scaling factor $S$, computed as in the equation \ref{eq:s}. According to  Rauber and Rünger's energy model \ref{eq:energy}, the dynamic energy is consumed during the overall program's execution time. This assumption is not precise because the CPU  only consumes the dynamic power during computation time. Moreover, the CPU involved remains idle during the communication times and only consumes the static power, see \cite{ref53}. We have also conducted some experiments over a real homogeneous cluster where some MPI programs of the NAS  benchmarks were executed while varying the CPUs frequencies at each execution. The results prove that  changing the frequency does not effect on the communication times of these programs.  Therefore, the frequency scaling factor $S$ can increase the computation times  proportionally to its value,  and does not  effect the communication times. This assumption consort with the used performance prediction model \ref{eq:tnew}. This model is evaluated and its prediction accuracy is showed in section \ref{ch2:6:1}. Therefore, the new dynamic energy is the dynamic power multiplied by the new time of computation and is given by the following equation:
640
641 \begin{equation}
642   \label{eq:Edyn_new}
643    Ed_{New} = Pd_{Old} \cdot S^{-3} \cdot (T_{comp} \cdot S)= S^{-2} \cdot Pd_{Old} \cdot  T_{comp}
644 \end{equation}
645
646 The static power is related to the power leakage of the CPU and is consumed
647 during computation and even when idle. As in~\cite{ref47,ref46},
648 the static power of a processor is considered as constant during idle and
649 computation periods, and for all its available frequencies.  The static energy
650 is the static power multiplied by the execution time of the program.  According
651 to the execution time model in (\ref{eq:tnew}), the execution time of the
652 program is the sum of the computation and the communication times. The
653 computation time is linearly related to the frequency scaling factor, while this
654 scaling factor does not affect the communication time.  Then, the static energy of a
655 processor after scaling its frequency is computed as follows:
656 \begin{equation}
657   \label{eq:Estatic_new}
658   Es = P_{static} \cdot (T_{comp} \cdot S  + T_{comm})
659 \end{equation}
660
661 In particular, in a homogeneous cluster all the computing nodes have the same specification and thus their CPUs have similar frequencies gears. The execution time of the MPI application is the execution time of the slowest task as shown in section \ref{ch2:2:1}. Therefore, the frequency scaling factor $S$ of the slowest task can be used to modelize the  energy consumption of the parallel application.
662 The dynamic energy consumed by $N$  parallel tasks  is the summation of all the dynamic energies of  all tasks during the computation time $\Tcomp[i]$  of  each task. The static energy of each task is the static power consumed during the execution time of the slower task because all the tasks are synchronised and have the same execution time.
663 Therefore, the energy consumption model of $N$ parallel task executed  synchronously over a homogeneous platforms can be represented as in \ref{eq:e-new}. 
664
665 \begin{equation}
666   \label{eq:e-new}
667  E_{new} = \sum_{i=1}^{N} {(S^{-2} \cdot Pd \cdot  \Tcomp[i])}  + 
668   ( Ps \cdot  ( T_\textit{Max Comp Old} \cdot S + T_{\textit{Min Comm Old}} ) )  \cdot N
669 \end{equation}
670  
671 According to this model, the frequency scaling factor $S$ reduces the energy consumption of the homogeneous architecture by a factor of $S^{-2}$ and increases the execution time by a factor of  $S$.
672 This model can be used to predict the energy consumption of the message passing synchronous iterative applications after gathering the computation and communication times of the first iteration.
673 Furthermore, it can be used to measure the energy consumption of the iterative application by multiplying the energy consumed of all tasks in  one iteration  by the number of the iterations. 
674
675 This model is used by the algorithm \ref{EPSA}  to predict the energy consumption and to select the optimal frequency scaling factor. The new frequency $F_i$ can be computed as in \ref{eq:fi} while using the new selected frequency scaling factor.  
676 In the next section,  algorithm \ref{EPSA} is re-evaluated while using this new energy model and the new results are presented.
677
678 \section{The experimental results using the new energy model}
679 \label{ch2:8}
680
681 This section presents the results of applying the frequency selection algorithm \ref{EPSA} using the new proposed energy model \ref{eq:e-new} to NAS parallel benchmarks.
682 The class C of the benchmarks was executed on a homogeneous architecture composed of 16 nodes and simulated by SimGrid. The same  static and dynamic power values were used as in section \ref{ch2:6:2}. Figure \ref{fig:energy_con} presents the energy consumption of the NAS benchmarks class C using the new energy model and the Rauber and Rünger's model. The energy consumptions of both models are computed using similar parameters:  frequency scaling factors, dynamic and static powers values. As shown in this figure,  the majority  of the benchmarks  consumes less energy using the new model than when using the Rauber and Rünger's model.
683 Two reasons explain these differences in the energy consumptions: the first one is related to the dynamic power consumption, where the new energy model ensures that this power metric is only consumed  during the computation time, while  the other model assumes that the dynamic power is consumed during both computation and communication times and thus increasing the dynamic energy consumption.
684 The second reason is related to the execution time. In the new model only the computation times are increased when the frequency of a processor is scaled down, while
685 Rauber and Rünger's model indicates that both the computation and communication times 
686 are  increased according to the scaling factor and hence more static energy  is consumed.  Therefore, the MPI programs that have big communication times,  have bigger  energy consumption values using  Rauber and Rünger's model  when compared to the new model as for the CG, SP, LU and FT benchmarks. Whereas, if the MPI programs have very small communication times, their computed energy values have very small differences  using both models such as for the MG and BT benchmarks, or they are identical such as for the  EP benchmark where there is no communication and no idle times. 
687
688
689 \begin{figure*}[h!]
690   \centering
691   \includegraphics[width=.7\textwidth]{fig/ch2/energy_con.eps}
692   \caption{Comparing the energy consumptions estimated using Rauber energy  model and our own}
693   \label{fig:energy_con}
694 \end{figure*}
695 \begin{table}[h!]
696 \centering
697 \begin{tabular}{|l|l|l|l|l|l|l|}
698 \hline
699 \multicolumn{1}{|c|}{\multirow{2}{*}{\begin{tabular}[c]{@{}c@{}}Method\\ Name\end{tabular}}} & \multicolumn{3}{c|}{Rauber  Energy Model Results}                                                                                                                                            & \multicolumn{3}{c|}{New Energy Model Results}                                                                                                                                                \\ \cline{2-7} 
700 \multicolumn{1}{|c|}{}                                                                          & \begin{tabular}[c]{@{}l@{}}Scaling\\ Factors\end{tabular} & \begin{tabular}[c]{@{}l@{}}Energy \\ Saving\%\end{tabular} & \begin{tabular}[c]{@{}l@{}}Performance\\ Degradation\%\end{tabular} & \begin{tabular}[c]{@{}l@{}}Scaling\\ Factors\end{tabular} & \begin{tabular}[c]{@{}l@{}}Energy \\ Saving\%\end{tabular} & \begin{tabular}[c]{@{}l@{}}Performance\\ Degradation\%\end{tabular} \\ \hline
701
702 CG      & 1.56      & 39.23       & 14.88       & 1.47       & 30.20       & 13.56     \\ \hline
703 MG      & 1.47      & 34.97       & 21.69       & 1.38       & 30.04       & 16.48      \\ \hline
704 EP      & 1.04      & 22.14       & 20.73       & 1.04       & 22.14       & 20.73       \\ \hline
705 LU      & 1.38      & 35.83       & 22.49       & 1.31       & 29.15       & 18.03       \\ \hline
706 BT      & 1.31      & 29.60       & 21.53       & 1.31       & 28.75       & 21.55        \\ \hline
707 SP      & 1.38      & 33.48       & 21.35       & 1.31       & 28.93       & 14.83        \\ \hline
708 FT      & 1.47      & 34.72       & 19.00       & 1.38       & 29.94       & 17.43        \\ \hline
709 \end{tabular}
710 \caption{The Results of NAS Parallel Benchmarks running on 16 nodes}
711 \label{table:new-res}
712 \end{table}
713
714 Table \ref{table:new-res} shows  the energy saving and performance degradation percentages when applying the frequency selecting algorithm  using the new proposed  energy model. It also presents the new selected frequency scaling factors and compares them to the ones used by the Rauber and Rünger's model. It shows  that the new selected frequency scaling factors are smaller than  those selected using the other model because the predicted energies by the new energy model are smaller.
715 Consequently, less energy savings and performance degradation percentages are produced according to 
716 these smaller frequency scaling factors such as for the  CG, MG, LU, SP and FT benchmarks. While in the BT and EP benchmarks where there are very small or no communication times, similar scaling factors are selected because the predicted energies by the two models are approximately equivalent. 
717
718 Therefore, the new proposed energy model is more accurate than Rauber and Rünger's energy
719 model, because  it takes into consideration both the communication and idle times in addition to
720 the computation times of  message passing programs running over homogeneous clusters. 
721 The scaling factor selection algorithm can work with any energy model and  it selects  the scaling factor values according to the predicted energy values. 
722
723 \section{Conclusion}
724 \label{ch2:9}
725 In this chapter, a new online scaling factor selection method
726 that optimizes simultaneously the energy and performance of a distributed 
727 application running on a homogeneous cluster have been presented .  It uses the computation and
728 communication times measured at the first iteration to predict the energy
729 consumption and the performance of the parallel application at every available
730 frequency.  Then, it selects the scaling factor that gives the best trade-off
731 between energy reduction and performance which is the maximum distance between
732 the energy and the performance curves.  To evaluate this method, we
733 have applied it to the NAS benchmarks and it was compared to the Rauber and Rünger's 
734 method while being executed on the SimGrid simulator.  The results showed that
735 our method, outperforms the Rauber and Rünger's method in terms of energy-performance
736 ratio. Finally, this chapter presents a new energy consumption model for  parallel
737 synchronous iterative methods running on homogeneous clusters. This model takes into consideration 
738 both  the computation and communication times and their relation with the frequency scaling 
739 factor. The results obtained using the new energy model have shown that different frequency scaling factors 
740 were  selected which gave new experimental results that are more accurate and realistic.