From 97d703d2fc9348e7cce48fab5da451f79ca00747 Mon Sep 17 00:00:00 2001 From: afanfakh Date: Fri, 27 May 2016 10:47:01 +0200 Subject: [PATCH] adding ch4 --- CHAPITRE_03.tex | 602 +++++++------ CHAPITRE_04.tex | 790 +++++++++++++++++- Thesis.tex | 4 +- fig/ch3/eng_con-eps-converted-to.pdf | Bin 8910 -> 8453 bytes fig/ch3/eng_con.eps | 248 ++---- .../eng_con_scenarios-eps-converted-to.pdf | Bin 9314 -> 17143 bytes fig/ch3/eng_con_scenarios.eps | 156 ++-- fig/ch3/time-eps-converted-to.pdf | Bin 8121 -> 7659 bytes fig/ch3/time.eps | 236 ++---- fig/ch3/time_scenarios-eps-converted-to.pdf | Bin 8725 -> 18792 bytes fig/ch3/time_scenarios.eps | 156 ++-- 11 files changed, 1360 insertions(+), 832 deletions(-) diff --git a/CHAPITRE_03.tex b/CHAPITRE_03.tex index 39eb9a8..27d95ec 100644 --- a/CHAPITRE_03.tex +++ b/CHAPITRE_03.tex @@ -51,12 +51,12 @@ Computing platforms are consuming more and more energy due to the increasing - number of nodes composing them. In the heterogeneous computing platform composed - of multiple computing nodes, each node is different in the computing power from - the others. Accordingly, the fast nodes have to waits to the slow ones to finish - their works. The resulting waiting times is called the idle times that are increased + number of nodes composing them. In a heterogeneous computing platform composed + of multiple computing nodes, nodes may differ in the computing power from + each others. Accordingly, the fast nodes have to wait for the slow ones to finish + their works. The resulting waiting times are called idle times which are increased proportionally to the increase in the heterogeneity between the computing nodes. - This leads to a big waste in the computing power and thus the energy consumed by the fast nodes. + This leads to a big waste in the computing power and thus the energy consumed by fast nodes. To minimize the operating costs of these platforms many techniques have been used. Dynamic voltage and frequency scaling (DVFS) is one of them. It reduces the frequency of a CPU to lower its energy consumption. However, lowering the frequency of a CPU may @@ -65,29 +65,29 @@ the performance of an application must be selected. In this chapter, two new online frequency selecting algorithms for heterogeneous local - cluster (heterogeneous CPUs) and grid platform are presented. - They select the frequencies that tray to give the best + clusters (heterogeneous CPUs) and grid platforms are presented. + They select the frequencies that try to give the best trade-off between energy saving and performance degradation, for each node computing the synchronous message passing iterative application. These algorithms have a small overhead and work without training or profiling. They use new energy models for message passing iterative synchronous applications running on both the heterogeneous - local cluster and grid platform. The first proposed algorithm for a heterogeneous local - cluster is evaluated on the SimGrid simulator while running the NAS parallel - benchmarks class C. The experiments conducted over 8 heterogeneous nodes show that it reduces on - average the energy consumption by 29.8\% while limiting the performance degradation by 3.8\%. - The second proposed algorithm for a grid platform is evaluated on the Grid5000 testbed - platform while running the NAS parallel benchmarks class D. - Its experiments on 16 nodes, distributed on three clusters, show that it reduces on average the - energy consumption by 30\% while the performance is on average only degraded + local cluster and the grid platform. The first proposed algorithm for a heterogeneous local + cluster was evaluated on the SimGrid simulator while running the class C of the NAS parallel + benchmarks. The experiments conducted over 8 heterogeneous nodes show that it reduces on + average the energy consumption by 29.8\% while limiting the performance degradation to 3.8\%. + The second proposed algorithm for a grid platform was evaluated on the Grid5000 testbed + platform while running the class D of the NAS parallel benchmarks. + The experiments were run on 16 nodes, distributed on three clusters, and show that it reduces + on average the energy consumption by 30\% while the performance is on average only degraded by 3.2\%. - Finally, both the two algorithms are compared to an existing methods, the comparison - results show that they outperform the latter in term of energy and performance trade-off. + Finally, both algorithms were compared to the EDP method. The comparison + results show that they outperform the latter in the energy reduction and performance trade-off. This chapter is organized as follows: Section~\ref{ch3:relwork} presents some related works from other authors. Section~\ref{ch3:1} presents the performance and energy models of synchronous message passing programs running over a heterogeneous local cluster. -It also describes the proposed frequencies selecting algorithm then the precision of the proposed algorithm is verified. +It also describes the proposed frequency selecting algorithm then the precision of the proposed algorithm is verified. Section~\ref{ch3:2} presents the simulation results of applying the algorithm on the NAS parallel benchmarks class C and executing them on a heterogeneous local cluster. It shows the results of running three different power scenarios and comparing them. Moreover, it also shows the @@ -95,19 +95,15 @@ comparison results between the proposed method and an existing method. Section~\ref{ch3:3} shows the energy and performance models in addition to the frequencies selecting algorithm of synchronous message passing programs running over a grid platform. Section~\ref{ch3:4} presents the results of applying the algorithm on the -NAS parallel benchmarks class D and executing them on the Grid'5000 testbed. -It also evaluates the algorithm over multi-cores per node architectures and over three different power scenarios. Moreover, it shows the comparison results between the proposed method and an existing method. +NAS parallel benchmarks (class D) and executing them on the Grid'5000 testbed. +The algorithm is also evaluated over multi-core architectures and over three different power scenarios. Moreover, section~\ref{ch3:4}, shows the comparison results between the proposed method and the EDP method. Finally, in Section~\ref{ch3:concl} the chapter ends with a summary. \section{Related works} \label{ch3:relwork} -DVFS is a technique used in modern processors to scale down both the voltage and -the frequency of the CPU while computing, in order to reduce the energy -consumption of the processor. DVFS is also allowed in GPUs to achieve the same -goal. Reducing the frequency of a processor lowers its number of FLOPS and may -degrade the performance of the application running on that processor, especially -if it is compute bound. Therefore selecting the appropriate frequency for a +As same as in CPUs, DVFS is also allowed in GPUs to reduce their energy consumption. +The process of selecting the appropriate frequency for a processor to satisfy some objectives, while taking into account all the constraints, is not a trivial operation. Many researchers used different strategies to tackle this problem. Some of them developed online methods that @@ -122,9 +118,9 @@ adapted to the execution's environment and the type of the application such as sequential, parallel or distributed architecture, homogeneous or heterogeneous platform, synchronous or asynchronous application, \dots{} -In this chapter, we are interested in reducing energy for message passing -iterative synchronous applications running over heterogeneous platforms. Some -works have already been done for such platforms and they can be classified into +In this chapter, we are interested in reducing the energy consumption when running a message passing +iterative synchronous applications over a heterogeneous platform. Some +works have already been done for such platforms which can be classified into two types of heterogeneous platforms: \begin{itemize} \item the platform is composed of homogeneous GPUs and homogeneous CPUs. @@ -142,7 +138,7 @@ workloads proportional to the computing power of the nodes which could be a GPU or a CPU. All the tasks must be completed at the same time. In~\cite{ref70}, Rong et al. showed that a heterogeneous (GPUs and CPUs) cluster that enables -DVFS gave better energy and performance efficiency than other clusters only +DVFS operations gave better energy and performance efficiency than other clusters only composed of CPUs. The work presented in this chapter concerns the second type of platform, with @@ -163,37 +159,37 @@ use a gradient method to predict the impact of DVFS operations on performance. In~\cite{ref74} and \cite{ref75}, the best frequencies for a specified heterogeneous cluster are selected offline using -some heuristic. Chen et +on heuristic. Chen et al.~\cite{ref76} used a greedy dynamic programming approach to minimize the power consumption of heterogeneous servers -while respecting given time constraints. This approach had considerable +while respecting the given time constraint. This approach had considerable overhead. In contrast to the above described works, the work of this chapter presents the following contributions: \begin{enumerate} \item two new energy and two performance models for message passing iterative - synchronous applications running over a heterogeneous local cluster and grid platform. - All the models take into account communication and slack times. The models can predict the - required energy and the execution time of the application. + synchronous applications running over a heterogeneous local cluster and a grid platform. + All the models take into account the communications and the slack times. The models can predict the + energy consumption and the execution time of the application. -\item two new online frequencies selecting algorithms for heterogeneous - local cluster and grid platform. The algorithms have a very small overhead and do not need any +\item two new online frequencies selecting algorithms for a heterogeneous + local cluster and a grid platform. The algorithms have a very small overhead and do not need any training or profiling. They use a new optimization function which simultaneously maximizes the performance and minimizes the energy consumption of a message passing iterative synchronous application. \end{enumerate} -\section[The energy optimization of heterogeneous cluster]{The energy optimization of parallel iterative applications running over local heterogeneous -cluster} +\section[The energy optimization of a heterogeneous cluster]{The energy optimization of parallel iterative applications running over local heterogeneous +clusters} \label{ch3:1} \subsection{The execution time of message passing distributed iterative applications on a heterogeneous local cluster} \label{ch3:1:1} In this section, we are interested in reducing the energy consumption of message -passing distributed iterative synchronous applications running over -heterogeneous local cluster. A heterogeneous local cluster is defined as a collection of +passing distributed iterative synchronous applications running over heterogeneous local clusters. +In this work, a heterogeneous local cluster is defined as a collection of heterogeneous computing nodes interconnected via a high speed homogeneous -network. Therefore, each node has different characteristics such as computing +network. Therefore, the nodes may have different characteristics such as computing power (FLOPS), energy consumption, CPU's frequency range, \dots{} but they all have the same network bandwidth and latency. @@ -213,8 +209,8 @@ nodes to finish their computations (see Figure~\ref{fig:task-heter}). Therefore overall execution time of the program is the execution time of the slowest task which has the highest computation time and no slack time. -The frequency reduction process by applying DVFS operation can be expressed by the scaling -factor S which is the ratio between the maximum and the new frequency of a CPU +Reducing the frequency of a processor by applying DVFS operation can be expressed by the scaling +factor S which is the ratio between the maximum frequency and the new frequency of a CPU as in (\ref{eq:s}). The execution time of a compute bound sequential program is linearly proportional to the frequency scaling factor $S$. On the other hand, message @@ -227,7 +223,7 @@ communication time for a task is the summation of periods of time that begin with an MPI call for sending or receiving a message until the message is synchronously sent or received. -Since in a heterogeneous cluster each node has different characteristics, +Since in a heterogeneous cluster the nodes may have different characteristics, especially different frequency gears, when applying DVFS operations on these nodes, they may get different scaling factors represented by a scaling vector: $(S_1, S_2,\dots, S_N)$ where $S_i$ is the scaling factor of processor $i$. To @@ -250,19 +246,18 @@ account. Therefore, the execution time of the iterative application is equal to the execution time of one iteration as in (\ref{eq:perf_heter}) multiplied by the number of iterations of that application. -This prediction model is developed from the model to predict the execution time +This prediction model is improved from the model that predicts the execution time of message passing distributed applications for homogeneous architectures presented in chapter \ref{ch2} section \ref{ch2:3}. The execution time prediction model is -used in the method to optimize both the energy consumption and the performance +used in the method that optimizes both the energy consumption and the performance of iterative methods, which is presented in the following sections. \subsection{Energy model for heterogeneous local cluster} \label{ch3:1:2} -In the chapter \ref{ch2}, the dynamic and the static energy consumption of the individual -processor is computed in \ref{eq:Edyn_new} and \ref{eq:Estatic_new} respectively. Then, -the total energy consumption of the individual processor is the sum of these two metrics. -Therefore, the overall energy consumption for the parallel tasks over parallel cluster -is the summation of the individual energies consumed for all processors. +In chapter \ref{ch2}, the dynamic and the static energy consumption of a +processor is computed according to Equations \ref{eq:Edyn_new} and \ref{eq:Estatic_new} respectively. Then, the total energy consumption of a processor is the sum of these two metrics. +Therefore, the overall energy consumption for the parallel tasks over a parallel cluster +is the summation of the energies consumed by all the processors. In the considered heterogeneous platform, each processor $i$ may have different dynamic and static powers, noted as $\Pd[i]$ and $\Ps[i]$ @@ -270,16 +265,16 @@ respectively. Therefore, even if the distributed message passing iterative application is load balanced, the computation time of each CPU $i$ noted $\Tcp[i]$ may be different and different frequency scaling factors may be computed in order to decrease the overall energy consumption of the application -and reduce slack times. The communication time of a processor $i$ is noted as +and reduce the slack times. The communication time of a processor $i$ is noted as $\Tcm[i]$ and could contain slack times when communicating with slower nodes, -see Figure~\ref{fig:task-heter}. Therefore, all nodes do not have equal +see Figure~\ref{fig:task-heter}. Therefore, all the nodes do not have equal communication times. While the dynamic energy is computed according to the frequency scaling factor and the dynamic power of each node as in (\ref{eq:Edyn_new}), the static energy is computed as the sum of the execution time of one iteration as in \ref{eq:perf_heter} multiplied by the static power of each processor. The overall energy consumption of a message passing distributed application executed over a -heterogeneous cluster during one iteration is the summation of all dynamic and -static energies for each processor. It is computed as follows: +heterogeneous cluster during one iteration is the summation of all the dynamic and +static energies for all the processors. It is computed as follows: \begin{equation} \label{eq:energy-heter} E = \sum_{i=1}^{N} {(S_i^{-2} \cdot \Pd[i] \cdot \Tcp[i])} + @@ -289,9 +284,9 @@ static energies for each processor. It is computed as follows: Reducing the frequencies of the processors according to the vector of scaling factors $(S_1, S_2,\dots, S_N)$ may degrade the performance of the application -and thus, increase the static energy because the execution time is +and thus, increase the consumed static energy because the execution time is increased~\cite{ref78}. The overall energy consumption -for the iterative application can be measured by measuring the energy +for an iterative application can be measured by measuring the energy consumption for one iteration as in (\ref{eq:energy-heter}) multiplied by the number of iterations of that application. @@ -307,19 +302,15 @@ the frequency of all nodes to the minimum and the overall energy consumption of the application might not be the optimal one. It is not trivial to select the appropriate frequency scaling factor for each processor while considering the characteristics of each processor (computation power, range of frequencies, -dynamic and static powers) and the task executed (computation/communication -ratio). The aim being to reduce the overall energy consumption and to avoid -increasing significantly the execution time. In last chapter -~\ref{ch2}, we proposed a method that selects the optimal +dynamic and static powers) and the task it is executing (computation/communication +ratio). In chapter~\ref{ch2}, we proposed a method that selects the optimal frequency scaling factor for a homogeneous cluster executing a message passing iterative synchronous application while giving the best trade-off between the -energy consumption and the performance for such applications. In this section, we -are interested in heterogeneous clusters as described above. Due to the -heterogeneity of the processors, a vector of scaling factors should be selected -and it must give the best trade-off between energy consumption and performance. +energy consumption and the performance for such applications. +In this section, this optimization method is improved while considering a heterogeneous clusters. As described before, the relation between the energy consumption and the execution time for an -application is complex and nonlinear. Thus, to find the trade-off relation between the energy consumption in \ref{eq:energy-heter} and the performance in \ref{eq:perf_heter} of the iterative message passing applications, first we need to normalized both of them as follows: +application is complex and nonlinear. Thus, to find the trade-off relation between the energy consumption computed in Equation \ref{eq:energy-heter} and the performance with Equation \ref{eq:perf_heter} for the iterative message passing applications, first we need to normalize both term as follows: \begin{equation} @@ -339,8 +330,6 @@ application is complex and nonlinear. Thus, to find the trade-off relation betwe { \max_{i=1,2,\dots,N} (\Tcp[i] \cdot S_{i}) + \min_{i=1,2,\dots,N} (\Tcm[i])} \end{equation} -Therefore, the vector of frequency scaling factors $S_1,S_2,\dots,S_N$ of the heterogeneous -cluster reduce both the energy and the execution time simultaneously. \begin{figure}[!t] \centering @@ -351,19 +340,19 @@ cluster reduce both the energy and the execution time simultaneously. Then, the objective function can be modeled in order to find the maximum distance between the energy curve (\ref{eq:enorm-heter}) and the performance curve -(\ref{eq:pnorm-heter}) over all available sets of scaling factors of the heterogeneous -computing cluster. This represents the minimum energy consumption with minimum execution time (maximum +(\ref{eq:pnorm-heter}) over all available sets of scaling factors for the processors of the heterogeneous +cluster. This represents the minimum energy consumption with minimum execution time (maximum performance) at the same time, see Figure~\ref{fig:rel-heter}. Then the objective function has the following form: \begin{equation} \label{eq:max-heter} - \MaxDist = - \mathop{\max_{i=1,\dots F}}_{j=1,\dots,N} + \MaxDist = + \mathop{\max_{i=1,\dots N}}_{j=1,\dots,F_i} (\overbrace{\Pnorm(S_{ij})}^{\text{Maximize}} - \overbrace{\Enorm(S_{ij})}^{\text{Minimize}} ) \end{equation} -where $N$ is the number of nodes and $F$ is the number of available frequencies -for each node. Then, the optimal set of scaling factors that satisfies -(\ref{eq:max-heter}) can be selected. +where $N$ is the number of nodes and $F_i$ is the number of available frequencies +for the node $i$. Then, the set of scaling factors that maximizes the objective function +(\ref{eq:max-heter}) should be selected. \subsection[The scaling algorithm for heterogeneous cluster]{The scaling factors selection algorithm for heterogeneous cluster } \label{ch3:1:4} @@ -460,15 +449,12 @@ scaling algorithm is called in the iterative MPI program. \label{fig:st_freq-cluster} \end{figure} -The nodes in a heterogeneous cluster have different computing powers, thus -while executing message passing iterative synchronous applications, fast nodes -have to wait for the slower ones to finish their computations before being able -to synchronously communicate with them as in Figure~\ref{fig:task-heter}. These -periods are called idle or slack times. The algorithm takes into account this +The nodes in a heterogeneous cluster may have different computing powers. + The algorithm takes into account this problem and tries to reduce these slack times when selecting the frequency scaling factors vector. At first, it selects initial frequency scaling factors that increase the execution times of fast nodes and minimize the differences -between the computation times of fast and slow nodes. The value of the initial +between the computation times of the fast nodes and the slow ones. The value of the initial frequency scaling factor for each node is inversely proportional to its computation time that was gathered from the first iteration. These initial frequency scaling factors are computed as a ratio between the computation time @@ -479,7 +465,7 @@ of the slowest node and the computation time of the node $i$ as follows: \end{equation} Using the initial frequency scaling factors computed in (\ref{eq:Scp}), the algorithm computes the initial frequencies for all nodes as a ratio between the -maximum frequency of node $i$ and the computation scaling factor $\Scp[i]$ as +maximum frequency of node $i$ and the computed scaling factor $\Scp[i]$ as follows: \begin{equation} \label{eq:Fint} @@ -501,13 +487,13 @@ frequencies. The algorithm iterates on all remaining frequencies, from the highe bound until all nodes reach their minimum frequencies, to compute their overall energy consumption and performance, and select the optimal frequency scaling factors vector. At each iteration the algorithm determines the slowest node -according to the equation (\ref{eq:perf_heter}) and keeps its frequency unchanged, +according to Equation (\ref{eq:perf_heter}) and keeps its frequency unchanged, while it lowers the frequency of all other nodes by one gear. The new overall energy consumption and execution time are computed according to the new scaling factors. The optimal set of frequency scaling factors is the set that gives the highest distance according to the objective function (\ref{eq:max-heter}). -Figure~\ref{fig:rel-heter} illustrate the normalized performance and +Figure~\ref{fig:rel-heter} illustrates the normalized performance and consumed energy for an application running on a heterogeneous cluster while increasing the scaling factors. It can be noticed that in a homogeneous cluster, as in the figure \ref{fig:rel} (a), @@ -519,15 +505,12 @@ plot even if the frequencies of the faster nodes decrease until the computing power of scaled down nodes are lower than the slowest node. In other words, until they reach the higher bound. It can also be noticed that the higher the difference between the faster nodes and the slower nodes is, the bigger the -maximum distance between the energy curve and the performance curve is while the -scaling factors are varying which results in bigger energy savings. -Finally, in a homogeneous platform the energy consumption is increased when the scaling factor is very high. -Indeed, the dynamic energy saved by reducing the frequency of the processor is compensated by the significant increase of the execution time and thus the increased of the static energy. On the other hand, in a heterogeneous platform this is not the case. +maximum distance between the energy curve and the performance curve is which results in bigger energy savings. \subsection{The evaluation of the proposed algorithm} \label{ch3:1:5} -The precision of the proposed algorithm mainly depends on the execution time -prediction model defined in (\ref{eq:perf_heter}) and the energy model computed by +The accuracy of the proposed algorithm mainly depends on the execution time +prediction model defined in (\ref{eq:perf_heter}) and the energy model computed by Equation (\ref{eq:energy-heter}). The energy model is also significantly dependent on the execution time model because the static energy is linearly related to the execution time and the dynamic energy is related to the computation time. So, @@ -537,7 +520,7 @@ execution time over SimGrid/SMPI simulator, v3.10~\cite{ref66}, for all the NAS parallel benchmarks NPB v3.3 \cite{ref65}, running class B on 8 or 9 nodes. The comparison showed that the proposed execution time model is -very precise, the maximum normalized difference between the predicted execution +very accurate, the maximum normalized difference between the predicted execution time and the real execution time is equal to 0.03 for all the NAS benchmarks. Since the proposed algorithm is not an exact method, it does not test all the @@ -551,8 +534,8 @@ brute force algorithm. It has a small execution time: for a heterogeneous cluster composed of four different types of nodes having the characteristics presented in Table~\ref{table:platform-cluster}, it takes on average 0.04 \textit{ms} for 4 nodes and 0.15 \textit{ms} on average for 144 nodes to compute the best scaling -factors vector. The algorithm complexity is $O(F\cdot N)$, where $F$ is the -maximum number of available frequencies, and $N$ is the number of computing +factors vector. The algorithm complexity is $O(F_i \cdot N)$, where $F_i$ is the +maximum number of available frequencies in the node $i$, and $N$ is the number of computing nodes. The algorithm needs from 12 to 20 iterations to select the best vector of frequency scaling factors that gives the results of the next sections. @@ -578,7 +561,7 @@ frequency scaling factors that gives the results of the next sections. \label{table:platform-cluster} \end{table} -\section{Experimental results over heterogeneous local cluster} +\section{Experimental results over a heterogeneous local cluster} \label{ch3:2} To evaluate the efficiency and the overall energy consumption reduction of Algorithm~\ref{HSA}, it was applied to the NAS parallel benchmarks NPB v3.3 which @@ -596,12 +579,10 @@ specifications of real Intel processors. The heterogeneous cluster had up to a benchmark was executed on 8 nodes, 2 nodes from each type were used. Since the constructors of CPUs do not specify the dynamic and the static power of their CPUs, for each type of node they were chosen proportionally to its computing -power (FLOPS). In the initial heterogeneous cluster, while computing with -highest frequency, each node consumed an amount of power proportional to its -computing power (which corresponds to 80\% of its dynamic power and the -remaining 20\% to the static power), the same assumption was made in chapter \ref{ch2} and -\cite{ref3}. Finally, These -nodes were connected via an Ethernet network with 1 \textit{Gbit/s} bandwidth. +powers (FLOPS). The dynamic power corresponds to 80\% of the overall power consumption while executing at +the higher frequency and the +remaining 20\% is the static power. The same assumption was made in chapter \ref{ch2} and +\cite{ref3}. Finally, These nodes were connected via an Ethernet network with 1 \textit{Gbit/s} bandwidth. \subsection{The experimental results of the scaling algorithm } @@ -778,7 +759,7 @@ the energy saving and performance degradation percentages were computed for each instance. The results are presented in Tables \ref{table:res_8n}, \ref{table:res_16n}, \ref{table:res_32n}, \ref{table:res_64n} and \ref{table:res_128n}. All these results are the average -values from many experiments for energy savings and performance degradation. +values obtained from many experiments for energy savings and performance degradation. The tables show the experimental results for running the NAS parallel benchmarks on different numbers of nodes. The experiments show that the algorithm significantly reduces the energy consumption (up to 34\%) and tries to @@ -796,10 +777,10 @@ Algorithm~\ref{HSA} is less effective in reducing the overall energy savings. It can also be noticed that for the benchmarks EP and SP that contain little or no communications, the energy savings are not significantly affected by the high number of nodes. No experiments were conducted using bigger classes than D, -because they require a lot of memory (more than 64 \textit{CB}) when being executed +because they require a lot of memory (more than 64 \textit{GB}) when being executed by the simulator on one machine. The maximum distance between the normalized energy curve and the normalized performance for each instance is also shown in -the result tables. It decrease in the same way as the energy saving percentage. +the result tables. It decreases in the same way as the energy saving percentage. The tables also show that the performance degradation percentage is not significantly increased when the number of computing nodes is increased because the computation times are small when compared to the communication times. @@ -823,7 +804,7 @@ has less effect on the performance. The results of the previous section were obtained while using processors that consume during computation an overall power which is 80\% composed of -dynamic power and of 20\% of static power. In this section, these ratios +dynamic power and 20\% of static power. In this section, these ratios are changed and two new power scenarios are considered in order to evaluate how the proposed algorithm adapts itself according to the static and dynamic power values. The two new power scenarios are the following: @@ -848,13 +829,13 @@ higher static power percentage in the first scenario which makes it more relevant in the overall consumed energy. Indeed, the static energy is related to the execution time and if the performance is degraded the amount of consumed static energy directly increases. Therefore, the proposed algorithm does not -really significantly scale down much the frequencies of the nodes in order to +significantly scale down the frequencies of the nodes in order to limit the increase of the execution time and thus limiting the effect of the consumed static energy. Both new power scenarios are compared to the old one in Figure~\ref{fig:powers-heter} (a). It shows the average of the performance degradation, -the energy saving and the distances for all NAS benchmarks of class C running on +the energy saving and the distances for all the NAS benchmarks running class C on 8 or 9 nodes. The comparison shows that the energy saving ratio is proportional to the dynamic power ratio: it is increased when applying the 90\%-10\% scenario because at maximum frequency the dynamic energy @@ -866,10 +847,10 @@ frequency does not return big energy savings. Moreover, the average of the performance degradation is decreased when using a higher ratio for static power (e.g. 70\%-30\% scenario and 80\%-20\% scenario). Since the proposed algorithm optimizes the energy consumption when -using a higher ratio for dynamic power the algorithm selects bigger frequency -scaling factors that result in more energy saving but less performance, for +using a higher ratio for the dynamic power, the algorithm selects bigger frequency +scaling factors that results in more energy saving but degrade the performance, for example see Figure~\ref{fig:powers-heter} (b). The opposite happens when using a -higher ratio for static power, the algorithm proportionally selects smaller +higher ratio for the static power, the algorithm proportionally selects smaller scaling values which result in less energy saving but also less performance degradation. @@ -928,7 +909,7 @@ degradation. \end{table} \begin{table}[!t] - \caption{Comparing the proposed algorithm} + \caption{Comparing the MaxDist algorithm to the EDP method} \centering \begin{tabular}{|*{7}{r|}} \hline @@ -976,52 +957,51 @@ degradation. \end{figure} -\subsection{The comparison of the proposed scaling algorithm } +\subsection{Comparison between the proposed scaling algorithm and the EDP method} \label{ch3:2:3} In this section, the scaling factors selection algorithm, called MaxDist, is -compared to Spiliopoulos et al. algorithm -\cite{ref67}, called EDP. They developed a +compared to \cite{ref67}, EDP method. They developed a green governor that regularly applies an online frequency selecting algorithm to -reduce the energy consumed by a multicore architecture without degrading much +reduce the energy consumed by a multi-core architecture without degrading much its performance. The algorithm selects the frequencies that minimize the energy -and delay products, $\mathit{EDP}=\mathit{energy}\times \mathit{delay}$ using +and delay product, $\mathit{EDP}=\mathit{energy}\times \mathit{delay}$, using the predicted overall energy consumption and execution time delay for each frequency. To fairly compare both algorithms, the same energy and execution -time models, equations (\ref{eq:energy-heter}) and (\ref{eq:perf_heter}), were used for both -algorithms to predict the energy consumption and the execution times. Also +time models, Equations (\ref{eq:energy-heter}) and (\ref{eq:perf_heter}), were used for both +algorithms to predict the energy consumption and the execution times. Spiliopoulos et al. algorithm was adapted to start the search from the initial -frequencies computed using the equation (\ref{eq:Fint}). The resulting algorithm +frequencies computed using Equation (\ref{eq:Fint}). The resulting algorithm is an exhaustive search algorithm that minimizes the EDP and has the initial frequencies values as an upper bound. Both algorithms were applied to the parallel NAS benchmarks to compare their -efficiency. Table~\ref{table:compare_EDP} presents the results of comparing the +efficiency. Table~\ref{table:compare_EDP} presents the execution times and the energy consumption for both versions of the NAS benchmarks while running the class C of each benchmark over 8 or 9 heterogeneous nodes. The results show that our algorithm provides better energy savings than Spiliopoulos et al. algorithm, on average it results in 29.76\% energy -saving while their algorithm returns just 25.75\%. The average of +saving while their algorithm saves just 25.75\%. The average of performance degradation percentage is approximately the same for both algorithms, about 4\%. For all benchmarks, our algorithm outperforms Spiliopoulos et al. algorithm in -terms of energy and performance trade-off, see Figure~\ref{fig:compare_EDP}, +the energy reduction to performance trade-off, see Figure~\ref{fig:compare_EDP}, because it maximizes the distance between the energy saving and the performance degradation values while giving the same weight for both metrics. -\section[The energy optimization of grid]{The energy optimization of parallel iterative applications running over grid} +\section[The energy optimization of grid]{The energy optimization of parallel iterative applications running over grids} \label{ch3:3} \subsection{The energy and performance models of grid platform} \label{ch3:3:1} In this section, we are interested in reducing the energy consumption of message -passing distributed iterative synchronous applications running over +passing iterative synchronous applications running over heterogeneous grid platforms. A heterogeneous grid platform could be defined as a collection of -heterogeneous computing clusters interconnected via a long distance network which has lower bandwidth -and higher latency than the local networks of the clusters. Each computing cluster in the grid is composed of homogeneous nodes that are connected together via a high speed network. Therefore, each cluster has different characteristics such as computing power (FLOPS), energy consumption, CPU's frequency range, network bandwidth and latency. +heterogeneous computing clusters interconnected via a long distance network which has a lower bandwidth +and a higher latency than the local networks of the clusters. Each computing cluster in the grid is composed of homogeneous nodes that are connected together via a high speed network. However, nodes from distinct clusters may have different characteristics such as computing power (FLOPS), energy consumption, CPU's frequency range, network bandwidth and latency. Since in a heterogeneous grid each cluster has different characteristics, -especially different frequency gears, when applying DVFS operations on the nodes + when applying DVFS operations on the nodes of these clusters, they may get different scaling factors represented by a scaling vector: $(S_{11}, S_{12},\dots, S_{NM})$ where $S_{ij}$ is the scaling factor of processor $j$ in cluster $i$ . To be able to predict the execution time of message passing synchronous iterative @@ -1029,23 +1009,23 @@ applications running over a heterogeneous grid, for different vectors of scaling factors, the communication time and the computation time for all the tasks must be measured during the first iteration before applying any DVFS operation. Then the execution time for one iteration of the application with any -vector of scaling factors can be predicted using (\ref{eq:perf-grid}). +vector of scaling factors can be predicted using Equation (\ref{eq:perf-grid}). % \begin{equation} \label{eq:perf-grid} - \Tnew = \mathop{\max_{i=1,\dots N}}_{j=1,\dots,M}({\TcpOld[ij]} \cdot S_{ij}) - +\mathop{\min_{j=1,\dots,M}} (\Tcm[hj]) + \Tnew = \mathop{\max_{i=1,\dots N}}_{j=1,\dots,M_i}({\TcpOld[ij]} \cdot S_{ij}) + +\mathop{\min_{j=1,\dots,M_i}} (\Tcm[hj]) \end{equation} % -where $N$ is the number of clusters in the grid, $M$ is the number of nodes in -each cluster, $\TcpOld[ij]$ is the computation time of processor $j$ in the cluster $i$ +where $N$ is the number of clusters in the grid, $M_i$ is the number of nodes in + cluster $i$, $\TcpOld[ij]$ is the computation time of processor $j$ in the cluster $i$ and $\Tcm[hj]$ is the communication time of processor $j$ in the cluster $h$ during the first iteration. The execution time for one iteration is equal to the sum of the maximum computation time for all nodes with the new scaling factors and the slowest communication time without slack time during one iteration. The latter is equal to the communication time of the slowest node in the slowest cluster $h$. It means that only the communication time without any slack time is taken into account. Therefore, the execution time of the iterative application is equal to -the execution time of one iteration as in (\ref{eq:perf-grid}) multiplied by the +the execution time of one iteration as in Equation (\ref{eq:perf-grid}) multiplied by the number of iterations of that application. @@ -1059,55 +1039,56 @@ and reduce slack times. The communication time of a processor $j$ in cluster $i $\Tcm[ij]$ and could contain slack times when communicating with slower nodes, see Figure~\ref{fig:task-heter}. Therefore, all nodes do not have equal communication times. While the dynamic energy is computed according to the -frequency scaling factor and the dynamic power of each node as in +frequency scaling factor and the dynamic power of each node as in Equation (\ref{eq:Edyn}), the static energy is computed as the sum of the execution time of one iteration multiplied by the static power of each processor. The overall energy consumption of a message passing distributed application executed over a heterogeneous grid platform during one iteration is the summation of all dynamic and -static energies for $M$ processors in $N$ clusters. It is computed as follows: +static energies for $M_i$ processors in $N$ clusters. It is computed as follows: \begin{equation} \label{eq:energy-grid} - E = \sum_{i=1}^{N} \sum_{i=1}^{M} {(S_{ij}^{-2} \cdot \Pd[ij] \cdot \Tcp[ij])} + - \sum_{i=1}^{N} \sum_{j=1}^{M} (\Ps[ij] \cdot - (\mathop{\max_{i=1,\dots N}}_{j=1,\dots,M}({\Tcp[ij]} \cdot S_{ij}) - +\mathop{\min_{j=1,\dots M}} (\Tcm[hj]) )) + E = \sum_{i=1}^{N} \sum_{i=1}^{M_i} {(S_{ij}^{-2} \cdot \Pd[ij] \cdot \Tcp[ij])} + + \sum_{i=1}^{N} \sum_{j=1}^{M_i} (\Ps[ij] \cdot + (\mathop{\max_{i=1,\dots N}}_{j=1,\dots,M_i}({\Tcp[ij]} \cdot S_{ij}) + +\mathop{\min_{j=1,\dots M_i}} (\Tcm[hj]) )) \end{equation} -To optimize both of the energy model \ref{eq:energy-grid} and the performance model\ref{eq:perf-grid}, -they must normalizes respectively as in \ref{eq:enorm-heter} and \ref{eq:pnorm-heter}. -While the original energy consumption is the consumed energy with -maximum frequency for all nodes computes as follows: +To optimize both of the energy consumption model computed by \ref{eq:energy-grid} and the performance model computed by \ref{eq:perf-grid}, +they must be normalized as in \ref{eq:enorm-heter} and \ref{eq:pnorm-heter} Equations respectively. +While the original energy consumption is the consumed energy with the +maximum frequency for all the nodes computed as follows: \begin{equation} \label{eq:eorginal-grid} - \Eoriginal = \sum_{i=1}^{N} \sum_{j=1}^{M} ( \Pd[ij] \cdot \Tcp[ij]) + - \mathop{\sum_{i=1}^{N}} \sum_{j=1}^{M} (\Ps[ij] \cdot \Told) + \Eoriginal = \sum_{i=1}^{N} \sum_{j=1}^{M_i} ( \Pd[ij] \cdot \Tcp[ij]) + + \mathop{\sum_{i=1}^{N}} \sum_{j=1}^{M_i} (\Ps[ij] \cdot \Told) \end{equation} -By the same way, the old execution time with maximum frequency for all nodes computes as follows: +By the same way, the old execution time with the maximum frequency for all the nodes is computed as follows: \begin{equation} \label{eq:told-grid} - \Told = \mathop{\max_{i=1,2,\dots,N}}_{j=1,2,\dots,M} (\Tcp[ij]+\Tcm[ij]) + \Told = \mathop{\max_{i=1,\dots N}}_{j=1,\dots,M_i}({\Tcp[ij]}) + +\mathop{\min_{j=1,\dots,M_i}} (\Tcm[hj]) \end{equation} -Therefore, the objective function can be modeled in order to find the maximum +Therefore, the objective function can be modelled in order to find the maximum distance between the normalized energy curve and the normalized performance curve -over all available sets of scaling factors as follows: +over all possible sets of scaling factors as follows: \begin{equation} \label{eq:max-grid} \MaxDist = -\mathop{ \mathop{\max_{i=1,\dots N}}_{j=1,\dots,M}}_{k=1,\dots,F} +\mathop{ \mathop{\max_{i=1,\dots N}}_{j=1,\dots,M_i}}_{k=1,\dots,F_j} (\overbrace{\Pnorm(S_{ijk})}^{\text{Maximize}} - \overbrace{\Enorm(S_{ijk})}^{\text{Minimize}} ) \end{equation} -where $N$ is the number of clusters, $M$ is the number of nodes in each cluster and -$F$ is the number of available frequencies for each node. Then, the optimal set +where $N$ is the number of clusters, $M_i$ is the number of nodes in each cluster and +$F_j$ is the number of available frequencies for the node $j$. Then, the optimal set of scaling factors that satisfies (\ref{eq:max-grid}) can be selected. -\subsection{The scaling factors selection algorithm for a grid } +\subsection{The scaling factors selection algorithm for a grid architecture} \label{ch3:3:2} \begin{algorithm} @@ -1118,7 +1099,7 @@ of scaling factors that satisfies (\ref{eq:max-grid}) can be selected. \Require ~ \item [{$N$}] number of clusters in the grid. - \item [{$M$}] number of nodes in each cluster. + \item [{$M_i$}] number of nodes in each cluster. \item[{$\Tcp[ij]$}] array of all computation times for all nodes during one iteration and with the highest frequency. \item[{$\Tcm[ij]$}] array of all communication times for all nodes during one iteration and with the highest frequency. \item[{$\Fmax[ij]$}] array of the maximum frequencies for all nodes. @@ -1128,15 +1109,16 @@ of scaling factors that satisfies (\ref{eq:max-grid}) can be selected. \Ensure $\Sopt[11],\Sopt[12] \dots, \Sopt[NM_i]$, a vector of scaling factors that gives the optimal trade-off between energy consumption and execution time - \State $\Scp[ij] \gets \frac{ \mathop{\max\limits_{i=1,\dots N}}\limits_{j=1,\dots,M}(\Tcp[ij])} {\Tcp[ij]} $ + \State $\Scp[ij] \gets \frac{ \mathop{\max\limits_{i=1,\dots N}}\limits_{j=1,\dots,M_i}(\Tcp[ij])} {\Tcp[ij]} $ \State $F_{ij} \gets \frac{\Fmax[ij]}{\Scp[i]},~{i=1,2,\cdots,N},~{j=1,2,\dots,M_i}.$ \State Round the computed initial frequencies $F_i$ to the closest available frequency for each node. \If{(not the first frequency)} \State $F_{ij} \gets F_{ij}+\Fdiff[ij],~i=1,\dots,N,~{j=1,\dots,M_i}.$ \EndIf - \State $\Told \gets \mathop{\max\limits_{i=1,2,\dots,N}}\limits_{j=1,2,\dots,M} (\Tcp[ij]+\Tcm[ij]) $ - \State $\Eoriginal \gets \sum_{i=1}^{N} \sum_{j=1}^{M} ( \Pd[ij] \cdot \Tcp[ij]) + - \mathop{\sum_{i=1}^{N}} \sum_{j=1}^{M} (\Ps[ij] \cdot \Told) $ + \State $\Told \gets \mathop{\max\limits_{i=1,\dots N}}\limits_{j=1,\dots,M_i}({\Tcp[ij]}) + +\mathop{\min\limits_{j=1,\dots,M_i}} (\Tcm[hj]) $ + \State $\Eoriginal \gets \sum_{i=1}^{N} \sum_{j=1}^{M_i} ( \Pd[ij] \cdot \Tcp[ij]) + + \mathop{\sum_{i=1}^{N}} \sum_{j=1}^{M_i} (\Ps[ij] \cdot \Told) $ \State $\Sopt[ij] \gets 1,~i=1,\dots,N,~{j=1,\dots,M_i}. $ \State $\Dist \gets 0 $ \While {(all nodes have not reached their minimum frequency \textbf{or} $\Pnorm - \Enorm < 0 $)} @@ -1144,17 +1126,17 @@ of scaling factors that satisfies (\ref{eq:max-grid}) can be selected. \State $F_{ij} \gets F_{ij} - \Fdiff[ij],~{i=1,\dots,N},~{j=1,\dots,M_i}$. \State $S_{ij} \gets \frac{\Fmax[ij]}{F_{ij}},~{i=1,\dots,N},~{j=1,\dots,M_i}.$ \EndIf - \State $\Tnew \gets \mathop{\max\limits_{i=1,\dots N}}\limits_{j=1,\dots,M}({\TcpOld[ij]} - \cdot S_{ij}) +\mathop{\min\limits_{j=1,\dots,M}} (\Tcm[hj]) $. - \State $\Ereduced \gets \sum\limits_{i=1}^{N} \sum\limits_{i=1}^{M} {(S_{ij}^{-2} \cdot \Pd[ij] - \cdot \Tcp[ij])} + \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{M} (\Ps[ij] \cdot - (\mathop{\max\limits_{i=1,\dots N}}\limits_{j=1,\dots,M}({\Tcp[ij]} \cdot S_{ij}) - +\mathop{\min\limits_{j=1,\dots M}} (\Tcm[hj]) ))$ + \State $\Tnew \gets \mathop{\max\limits_{i=1,\dots N}}\limits_{j=1,\dots,M_i}({\TcpOld[ij]} + \cdot S_{ij}) +\mathop{\min\limits_{j=1,\dots,M_i}} (\Tcm[hj]) $ + \State $\Ereduced \gets \sum\limits_{i=1}^{N} \sum\limits_{i=1}^{M_i} {(S_{ij}^{-2} \cdot \Pd[ij] + \cdot \Tcp[ij])} + \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{M_i} (\Ps[ij] \cdot + (\mathop{\max\limits_{i=1,\dots N}}\limits_{j=1,\dots,M_i}({\Tcp[ij]} \cdot S_{ij}) + +\mathop{\min\limits_{j=1,\dots,M_i}} (\Tcm[hj]) ))$ \State $\Pnorm \gets \frac{\Told}{\Tnew}$ \State $\Enorm \gets \frac{\Ereduced}{\Eoriginal}$ \If{$(\Pnorm - \Enorm > \Dist)$} - \State $\Sopt[ij] \gets S_{ij},~i=1,\dots,N,~j=1,\dots,M_i. $ + \State $\Sopt[ij] \gets S_{ij},~i=1,\dots,N,~j=1,\dots,M_i$ \State $\Dist \gets \Pnorm - \Enorm$ \EndIf \EndWhile @@ -1180,56 +1162,53 @@ of scaling factors that satisfies (\ref{eq:max-grid}) can be selected. In this section, the scaling factors selection algorithm for a grid, Algorithm~\ref{HSA-grid}, -is presented. It selects the vector of the frequency +is presented. It selects the vector of frequency scaling factors that gives the best trade-off between minimizing the energy consumption and maximizing the performance of a message passing -synchronous iterative application executed on a grid that satisfies the objective function -(\ref{eq:max-grid}). -It has the same principles and specifications of the frequencies selection algorithm of the heterogeneous -local cluster \ref{HSA}. +synchronous iterative application executed on a grid. +It is similar to the frequency selection algorithm for heterogeneous +local clusters presented in section \ref{ch3:1:4}. The value of the initial frequency scaling factor for each node is inversely proportional to its -computation time that was gathered from the first iteration. These initial -frequency scaling factors are computed as a ratio between the computation time +computation time that was gathered in the first iteration. The initial +frequency scaling factor for a node $i$ is computed as a ratio between the computation time of the slowest node and the computation time of the node $i$ as follows: \begin{equation} \label{eq:Scp-grid} - \Scp[ij] = \frac{ \mathop{\max\limits_{i=1,\dots N}}\limits_{j=1,\dots,M}(\Tcp[ij])} {\Tcp[ij]} + \Scp[ij] = \frac{ \mathop{\max\limits_{i=1,\dots N}}\limits_{j=1,\dots,M_i}(\Tcp[ij])} {\Tcp[ij]} \end{equation} Using the initial frequency scaling factors computed in (\ref{eq:Scp-grid}), the algorithm computes the initial frequencies for all nodes as a ratio between the -maximum frequency of node $i$ and the computation scaling factor $\Scp[i]$ as -follows: +maximum frequency of the node and its computed scaling factor, as follows: \begin{equation} \label{eq:Fint-grid} - F_{ij} = \frac{\Fmax[ij]}{\Scp[ij]},~{i=1,2,\dots,N},~{j=1,\dots,M} + F_{ij} = \frac{\Fmax[ij]}{\Scp[ij]},~{i=1,2,\dots,N},~{j=1,\dots,M_i} \end{equation} Figure \ref{fig:st_freq-grid} shows the selected initial frequencies for a grid composed of three clusters. In contrast to algorithm \ref{HSA}, algorithm \ref{HSA-grid} replaces the computed initial frequency for a node by the nearest available frequency if not available in the gears of that node. -The frequency scaling algorithm of the grid stops its iteration if it reaches to lower bound, which is the computed distance between the energy and performance at this frequency if it is less than zero. +The frequency scaling algorithm of the grid stops its iteration if it reaches the lower bound, which is the frequency that gives a negative distance between the energy and performance. A negative distance means that the performance degradation ratio is higher than the energy saving ratio as in figure \ref{fig:rel-grid}. In this situation, the algorithm must stop the downward search because it has reached the lower bound and it is useless to test the lower frequencies. Indeed, they will all give worse distances. -Therefore, the algorithm iterates on all remaining frequencies, from the higher +Therefore, the algorithm iterates on all the remaining frequencies, from the higher bound until all nodes reach their minimum frequencies or their lower bounds, to compute the overall -energy consumption and performance and selects the optimal vector of the frequency scaling -factors. The DVFS algorithm~\ref{dvfs-heter} is also used to call the algorithm \ref{HSA-grid} in the MPI -program executed over grid platform. +energy consumption and execution time. Then, it selects the vector of frequency scaling +factors that give the maximum distance (MaxDist). Algorithm~\ref{dvfs-heter} is also used to call the Algorithm \ref{HSA-grid} in the MPI program executed over the grid platform. -\section{Experimental results over Grid5000 platform} +\section{Experimental results over the Grid5000 platform} \label{ch3:4} In this section, real experiments were conducted over the Grid'5000 platform. -Grid'5000~\cite{ref21} is a large-scale testbed that consists of ten sites distributed all over metropolitan France and Luxembourg. These sites are: Grenoble, Lille, Luxembourg, Lyon, Nancy, Reims, Rennes , Sophia, Toulouse, Bordeaux. Figure \ref{fig:grid5000-dis} shows the geographical distribution of grid'5000 sites over France and Luxembourg. All the sites are connected together via a special long distance network called RENATER, which is abbreviation of the French +Grid'5000~\cite{ref21} is a large-scale testbed that consists of ten sites distributed all over metropolitan France and Luxembourg. These sites are: Grenoble, Lille, Luxembourg, Lyon, Nancy, Reims, Rennes , Sophia, Toulouse and Bordeaux. Figure \ref{fig:grid5000-dis} shows the geographical distribution of grid'5000 sites over France and Luxembourg. All the sites are connected together via a special long distance network called RENATER, which is the abbreviation of the French National Telecommunication Network for Technology. Each site in the grid is composed of a few heterogeneous computing clusters and each cluster contains many homogeneous nodes. In total, Grid'5000 has about one thousand heterogeneous nodes and eight thousand cores. In each site, the clusters and their nodes are connected via high speed local area networks. Two types of local networks are used, Ethernet or Infiniband networks, which have different characteristics in terms of bandwidth and latency. -Grid'5000 is dedicated as a test-bed for grid computing and thus users can book the required nodes from different sites. -It also gives the opportunity to the users to deploy their configured image of the operating system over the reserved nodes. -Indeed, many software tools are available for users in order to control and manage the reservation and deployment processes from their local machines. For example, OAR \cite{ref22} is a batch scheduler that is used to manage the heterogeneous resources of the grid'5000. +Grid'5000 is dedicated for research experiments and users can book nodes from different sites to conduct their experiments. +It also gives the opportunity to the users to deploy their customized operating system over the reserved nodes. +Indeed, many software tools are available for users in order to control and manage the reservation and deployment processes remotely. For example, OAR \cite{ref22} is a batch scheduler that is used to manage the heterogeneous resources of the grid'5000. \begin{figure}[h!] \centering @@ -1239,8 +1218,8 @@ Indeed, many software tools are available for users in order to control and man \end{figure} - Moreover, the Grid'5000 testbed provides at some sites a power measurement tool to capture -the power consumption for each node in those sites. The measured power is the overall consumed power by all the components of a node at a given instant, such as CPU, hard drive, main-board, memory, \dots{} For more details refer to \cite{ref79}. +Moreover, the Grid'5000 testbed provides at some sites a power measurement tool to capture +the power consumption for each node in those sites. The measured power is the overall consumed power by all the components of a node at a given instant. For more details refer to \cite{ref79}. In order to correctly measure the CPU power of one core in a node $j$, firstly, the power consumed by the node while being idle at instant $y$, noted as $\Pidle[jy]$, was measured. Then, the power was measured while running a single thread benchmark with no communication (no idle time) over the same node with its CPU scaled to the maximum available frequency. The latter power measured at time $x$ with maximum frequency for one core of node $j$ is noted $\Pmax[jx]$. The difference between the two measured power consumptions represents the dynamic power consumption of that core with the maximum frequency, see Figure~\ref{fig:power_cons}. @@ -1258,13 +1237,13 @@ $\lbrace\Theta_1,\Theta_2\rbrace$ is the time interval for the measured idle po Therefore, the dynamic power of one core is computed as the difference between the maximum measured value in maximum powers vector and the minimum measured value in the idle powers vector. -On the other hand, the static power consumption by one core is a part of the measured idle power consumption of the node. Since in Grid'5000 there is no way to measure precisely the consumed static power and same as in sections \ref{ch3:2} and \ref{ch2:6} it was assumed that the static power represents a ratio of the dynamic power, the value of the static power is assumed as 20\% of dynamic power consumption of the core. +On the other hand, the static power consumption by one core is a part of the measured idle power consumption of the node. Since in Grid'5000 there is no way to measure precisely the consumed static power and it was assumed, as in sections \ref{ch3:2} and \ref{ch2:6}, that the static power represents a ratio of the dynamic power, the value of the static power is assumed to be equal to 20\% of the dynamic power consumption of the core. -In the experiments presented in the following sections, two sites of Grid'5000 were used, Lyon and Nancy sites. These two sites have in total seven different clusters as shown on Figure~\ref{fig:grid5000}. +In the experiments presented in the following sections, two sites of Grid'5000 were used, Lyon and Nancy sites. These two sites have in total seven different clusters as shown in Figure~\ref{fig:grid5000}. Four clusters from the two sites were selected in the experiments: one cluster from Lyon's site, Taurus, and three clusters from Nancy's site, Graphene, -Griffon and Graphite. Each one of these clusters has homogeneous nodes inside, while nodes from different clusters are heterogeneous in many aspects such as: computing power, power consumption, available +Griffon and Graphite. Each one of these clusters composed of homogeneous nodes, while nodes from different clusters are heterogeneous in many aspects such as: computing power, power consumption, available frequency ranges and local network features: the bandwidth and the latency. Table~\ref{table:grid5000-1} shows the detailed characteristics of these four clusters. Moreover, the dynamic powers were computed using Equation~\ref{eq:pdyn} for all the nodes in the selected clusters and are presented in Table~\ref{table:grid5000-1}. @@ -1279,19 +1258,18 @@ selected clusters and are presented in Table~\ref{table:grid5000-1}. \begin{figure}[!t] \centering \includegraphics[scale=0.8]{fig/ch3/power_consumption.pdf} - \caption{The power consumption by one core from the Taurus cluster} + \caption{The power consumed by one core from the Taurus cluster} \label{fig:power_cons} \end{figure} The energy model and the scaling factors selection algorithm were applied to the NAS parallel benchmarks v3.3 \cite{ref65} and evaluated over Grid'5000. The benchmark suite contains seven applications: CG, MG, EP, LU, BT, SP and FT. These applications have different computations and communications ratios and strategies which make them good testbed applications to evaluate the proposed algorithm and energy model. -The benchmarks have seven different classes, S, W, A, B, C, D and E, that represent the size of the problem that the method solves. In this work, class D was used for all benchmarks in all the experiments presented in the next sections. - +The benchmarks have seven different classes, S, W, A, B, C, D and E, that represent the size of the problem that the method solves. In the next sections, the class D was used for all the benchmarks in all the experiments. \begin{table}[!t] - \caption{CPUs characteristics of the selected clusters} + \caption{The characteristics of the CPUs in the selected clusters} % title of Table \centering \begin{tabular}{|*{7}{c|}} @@ -1319,27 +1297,26 @@ The benchmarks have seven different classes, S, W, A, B, C, D and E, that repres \end{tabular} \label{table:grid5000-1} \end{table} +CPUs - -\subsection{The experimental results of the scaling algorithm of Grid} +\subsection{The experimental results of the scaling algorithm on a Grid} \label{ch3:4:1} -In this section, the results of applying the scaling factors selection algorithm \ref{HSA} -to NAS parallel benchmarks are presented. - +In this section, the results of applying the scaling factors selection algorithm +to the NAS parallel benchmarks are presented. As mentioned previously, the experiments were conducted over two sites of Grid'5000, Lyon and Nancy sites. Two scenarios were considered while selecting the clusters from these two sites : \begin{itemize} \item In the first scenario, nodes from two sites and three heterogeneous clusters were selected. The two sites are connected via a long distance network. -\item In the second scenario nodes from three clusters located in one site, Nancy site, were selected. +\item In the second scenario nodes from three clusters located in one site, Nancy's site, were selected. \end{itemize} The main reason for using these two scenarios is to evaluate the influence of long distance communications (higher latency) on the performance of the scaling factors selection algorithm. Indeed, in the first scenario the computations to communications ratio -is very low due to the higher communication times which reduce the effect of DVFS operations. +is very low due to the higher communication times which reduces the effect of the DVFS operations. The NAS parallel benchmarks are executed over 16 and 32 nodes for each scenario. The number of participating computing nodes from each cluster @@ -1348,7 +1325,7 @@ Table~\ref{tab:sc} shows the number of nodes used from each cluster for each sce \begin{table}[h] -\caption{The different clusters scenarios} +\caption{The different grid scenarios} \centering \begin{tabular}{|*{4}{c|}} \hline @@ -1359,7 +1336,7 @@ Table~\ref{tab:sc} shows the number of nodes used from each cluster for each sce & Graphene & Nancy & 5 \\ \cline{2-4} & Griffon & Nancy & 6 \\ \hline -\multirow{3}{*}{Tow sites / 32 nodes} & Taurus & Lyon & 10 \\ \cline{2-4} +\multirow{3}{*}{Two sites / 32 nodes} & Taurus & Lyon & 10 \\ \cline{2-4} & Graphene & Nancy & 10 \\ \cline{2-4} & Griffon &Nancy & 12 \\ \hline @@ -1377,84 +1354,64 @@ Table~\ref{tab:sc} shows the number of nodes used from each cluster for each sce The NAS parallel benchmarks are executed over these two platforms - with different number of nodes, as in Table~\ref{tab:sc}. +with different number of nodes, as in Table~\ref{tab:sc}. The overall energy consumption of all the benchmarks solving the class D instance and using the proposed frequency selection algorithm is measured -using the equation of the reduced energy consumption, Equation~\ref{eq:energy-grid}. This model uses the measured dynamic power showed in Table~\ref{table:grid5000-1} -and the static -power is assumed to be equal to 20\% of the dynamic power. The execution -time is measured for all the benchmarks over these different scenarios. +using Equation~\ref{eq:energy-grid}. The energy consumptions and the execution times for all the benchmarks are presented in Figures~\ref{fig:exp-time-energy} (a) and (b) respectively. - -For the majority of the benchmarks, the energy consumed while executing the NAS benchmarks over one site scenario -for 16 and 32 nodes is lower than the energy consumed while using two sites. -The long distance communications between the two distributed sites increase the idle time, which leads to more static energy consumption. +For the majority of the benchmarks, the energy consumed while executing the NAS benchmarks over one site on 16 and 32 nodes is lower than the energy consumed while using two sites. +The long distance communications between the two distributed sites increase the idle times, which lead to more static energy consumption. The execution times of these benchmarks -over one site with 16 and 32 nodes are also lower when compared to those of the two sites -scenario. Moreover, most of the benchmarks running over the one site scenario have their execution times approximately divided by two when the number of computing nodes is doubled from 16 to 32 nodes (linear speed up according to the number of the nodes). +over one site with 16 and 32 nodes are also lower than those of the two sites +scenario. Moreover, most of the benchmarks running over the one site scenario have their execution times approximately halved when the number of computing nodes is doubled from 16 to 32 nodes (linear speed up according to the number of the nodes). -However, the execution times and the energy consumptions of EP and MG +However, the execution times and the energy consumptions of the EP and MG benchmarks, which have no or small communications, are not significantly affected in both scenarios, even when the number of nodes is doubled. On the -other hand, the communication times of the rest of the benchmarks increases when -using long distance communications between two sites or increasing the number of +other hand, the communication times of the rest of the benchmarks increase when +using long distance communications between two sites or when increasing the number of computing nodes. The energy saving percentage is computed as the ratio between the reduced energy consumption, Equation~\ref{eq:energy-grid}, and the original energy consumption, -Equation~\ref{eq:eorginal-grid}, for all benchmarks as in Figure~\ref{fig:eng_s}. -This figure shows that the energy saving percentages of one site scenario for +Equation~\ref{eq:eorginal-grid}, for all the benchmarks as in Figure~\ref{fig:eng_s}. +This figure shows that the energy saving percentages of the one site scenario for 16 and 32 nodes are bigger than those of the two sites scenario which is due to the higher computations to communications ratio in the first scenario than in the second one. Moreover, the frequency selecting algorithm selects smaller frequencies when the computation times are bigger than the communication times which results in a lower energy consumption. Indeed, the dynamic consumed power is exponentially related to the CPU's frequency value. On the other hand, the increase in the number of computing nodes can increase the communication times and thus produces less energy saving depending on the -benchmarks being executed. The results of benchmarks CG, MG, BT and FT show more -energy saving percentage in one site scenario when executed over 16 nodes comparing to 32 nodes. While, LU and SP consume more energy with 16 nodes than 32 in one site because their computations to communications ratio is not affected by the increase of the number of local communications. -\begin{figure}[!t] +benchmarks being executed. The results of the benchmarks CG, MG, BT and FT show more +energy saving percentage in the one site scenario when executed over 16 nodes than on 32 nodes. LU and SP consume more energy with 16 nodes than with 32 node on one site because their computations to communications ratio is not affected by the increase of the number of local communications. +\begin{figure}[!h] \centering \centering \includegraphics[width=.7\textwidth]{fig/ch3/eng_con_scenarios.eps}\\~~~~~~~~~(a)\\ \includegraphics[width=.7\textwidth]{fig/ch3/time_scenarios.eps}\\~~~~~~~~~(b) \caption{ (a) energy consumption and (b) execution time of NAS Benchmarks over different scenarios} - \label{fig:exp-time-energy} - + \label{fig:exp-time-energy} \end{figure} - -The energy saving percentage is reduced for all the benchmarks because of the long distance communications in the two sites -scenario, except for the EP benchmark which has no communication. Therefore, the energy saving percentage of this benchmark is -dependent on the maximum difference between the computing powers of the heterogeneous computing nodes, for example -in the one site scenario, the graphite cluster is selected but in the two sites scenario -this cluster is replaced with the Taurus cluster which is more powerful. -Therefore, the energy savings of the EP benchmark are bigger in the two sites scenario due -to the higher maximum difference between the computing powers of the nodes. - -In fact, high differences between the nodes' computing powers make the proposed frequencies selecting -algorithm select smaller frequencies for the powerful nodes which -produces less energy consumption and thus more energy saving. -The best energy saving percentage was obtained in the one site scenario with 16 nodes, the energy consumption was on average reduced up to 30\%. - - - -\begin{figure*}[t] +\begin{figure*}[!h] \centering \includegraphics[width=.7\textwidth]{fig/ch3/eng_s.eps} \caption{The energy reduction while executing the NAS benchmarks over different scenarios} \label{fig:eng_s} \end{figure*} -\begin{figure*}[t] + +\begin{figure*}[!h] \centering \includegraphics[width=.7\textwidth]{fig/ch3/per_d.eps} \caption{The performance degradation of the NAS benchmarks over different scenarios} \label{fig:per_d} \end{figure*} -\begin{figure*}[t] + +\begin{figure*}[!h] \centering \includegraphics[width=.7\textwidth]{fig/ch3/dist.eps} \caption{The trade-off distance between the energy reduction and the performance of the NAS benchmarks @@ -1462,20 +1419,31 @@ The best energy saving percentage was obtained in the one site scenario with 16 \label{fig:dist-grid} \end{figure*} +The energy saving percentage is reduced for all the benchmarks because of the long distance communications in the two sites +scenario, except for the EP benchmark which has no communication. Therefore, the energy saving percentage of this benchmark is +dependent on the maximum difference between the computing powers of the heterogeneous computing nodes, for example +in the one site scenario, the graphite cluster is selected but in the two sites scenario +this cluster is replaced with the Taurus cluster which is more powerful. +Therefore, the energy savings of the EP benchmark are bigger in the two sites scenario due +to the higher maximum difference between the computing powers of the nodes. +In fact, high differences between the nodes' computing powers make the proposed frequencies selecting +algorithm select smaller frequencies for the powerful nodes which +produces less energy consumption and thus more energy saving. +The best energy saving percentage was obtained in the one site scenario with 16 nodes, the energy consumption was on average reduced up to 30\%. -Figure \ref{fig:per_d} presents the performance degradation percentages for all benchmarks over the two scenarios. +Figure \ref{fig:per_d} presents the performance degradation percentages for all the benchmarks over the two scenarios. The performance degradation percentage for the benchmarks running on two sites with -16 or 32 nodes is on average equal to 8.3\% or 4.7\% respectively. -For this scenario, the proposed scaling algorithm selects smaller frequencies for the executions with 32 nodes without significantly degrading their performance because the communication times are higher with 32 nodes which results in smaller computations to communications ratio. On the other hand, the performance degradation percentage for the benchmarks running on one site with -16 or 32 nodes is on average equal to 3.2\% or 10.6\% respectively. In contrary to the two sites scenario, when the number of computing nodes is increased in the one site scenario, the performance degradation percentage is increased. Therefore, doubling the number of computing +16 and 32 nodes is on average equal to 8.3\% and 4.7\% respectively. +For this scenario, the proposed scaling algorithm selects smaller frequencies for the executions with 32 nodes without significantly degrading their performance because the communication times are high with 32 nodes which results in smaller computations to communications ratio. On the other hand, the performance degradation percentage for the benchmarks running on one site with +16 and 32 nodes is on average equal to 3.2\% and 10.6\% respectively. In contrary to the two sites scenario, when the number of computing nodes is increased in the one site scenario, the performance degradation percentage is increased. Therefore, doubling the number of computing nodes when the communications occur in high speed network does not decrease the computations to communication ratio. The performance degradation percentage of the EP benchmark after applying the scaling factors selection algorithm is the highest in comparison to the other benchmarks. Indeed, in the EP benchmark, there are no communication and slack times and its performance degradation percentage only depends on the frequencies values selected by the algorithm for the computing nodes. -The rest of the benchmarks showed different performance degradation percentages, which decrease +The rest of the benchmarks showed different performance degradation percentages which decrease when the communication times increase and vice versa. Figure \ref{fig:dist-grid} presents the distance percentage between the energy saving and the performance degradation for each benchmark over both scenarios. The trade-off distance percentage can be @@ -1490,26 +1458,17 @@ which increase the computations to communications ratio and the latter uses lon -\subsection{The experimental results over multi-cores clusters} +\subsection{The experimental results over multi-core clusters} \label{ch3:4:2} The clusters of Grid'5000 have different number of cores embedded in their nodes as shown in Table~\ref{table:grid5000-1}. In -this section, the proposed scaling algorithm of the grid is evaluated over the Grid'5000 platform while using multi-cores nodes selected according to the one site scenario described in Section +this section, the proposed scaling algorithm is evaluated over the Grid'5000 platform while using multi-core nodes selected according to the one site scenario described in Section ~\ref{ch3:4:1}. -The one site scenario uses 32 cores from multi-cores nodes instead of 32 distinct nodes. For example if -the participating number of cores from a certain cluster is equal to 14, -in the multi-core scenario the selected nodes is equal to 4 nodes while using -3 or 4 cores from each node. The platforms with one -core per node and multi-cores nodes are shown in Table~\ref{table:sen-mc}. -The energy consumptions and execution times of running class D of the NAS parallel -benchmarks over these two different scenarios are presented -in Figures \ref{fig:eng-cons-mc} and \ref{fig:time-mc} respectively. - -\begin{table}[] +\begin{table}[!h] \centering -\caption{The multicores scenarios} +\caption{The multi-core scenarios} \begin{tabular}{|*{4}{c|}} \hline Scenario name & Cluster name & Nodes per cluster & @@ -1517,73 +1476,76 @@ Scenario name & Cluster name & Nodes per cluster & \multirow{3}{*}{One core per node} & Graphite & 4 & 1 \\ \cline{2-4} & Graphene & 14 & 1 \\ \cline{2-4} & Griffon & 14 & 1 \\ \hline -\multirow{3}{*}{Multi-cores per node} & Graphite & 1 & 4 \\ \cline{2-4} +\multirow{3}{*}{Multi-core per node} & Graphite & 1 & 4 \\ \cline{2-4} & Graphene & 4 & 3 or 4 \\ \cline{2-4} & Griffon & 4 & 3 or 4 \\ \hline \end{tabular} + \label{table:sen-mc} \end{table} - - - - -\begin{figure}[!t] +\begin{figure}[!h] \centering \includegraphics[width=.7\textwidth]{fig/ch3/time.eps} - \caption{The execution times of running NAS benchmarks over one core and multicores scenarios} + \caption{The execution times of NAS benchmarks running over the one core and the multi-core scenarios} \label{fig:time-mc} \end{figure} -\begin{figure}[!t] +\begin{figure}[!h] \centering \includegraphics[width=.7\textwidth]{fig/ch3/eng_con.eps} - \caption{The energy consumptions and execution times of NAS benchmarks over one core and multi-cores per node architectures} + \caption{The energy consumptions and execution times of NAS benchmarks over one core and multi-core per node architectures} \label{fig:eng-cons-mc} \end{figure} -The execution times for most of the NAS benchmarks are higher over the multi-cores per node scenario -than over single core per node scenario. Indeed, - the communication times are higher in the one site multi-cores scenario than in the latter scenario because all the cores of a node share the same node network link which can be saturated when running communication bound applications. Moreover, the cores of a node share the memory bus which can be also saturated and become a bottleneck. +The one site scenario uses 32 cores from multi-core nodes instead of 32 distinct nodes. For example if +the participating number of cores from a certain cluster is equal to 14, +in the multi-core 4 nodes are selected and 3 or 4 cores from each node are used. The platforms with one +core per node and multi-core nodes are shown in Table~\ref{table:sen-mc}. +The energy consumptions and execution times of running class D of the NAS parallel +benchmarks over these two different platforms are presented +in Figures \ref{fig:eng-cons-mc} and \ref{fig:time-mc} respectively. + +The execution times for most of the NAS benchmarks are higher over the multi-core per node scenario +than over the single core per node scenario. Indeed, + the communication times are higher in the one site multi-core scenario than in the latter scenario because all the cores of a node share the same node network link which can be saturated when running communication bound applications. Moreover, the cores of a node share the memory bus which can be also saturated and might become a bottleneck. Moreover, the energy consumptions of the NAS benchmarks are lower over the - one core scenario than over the multi-cores scenario because + one core scenario than over the multi-core scenario because the first scenario had less execution time than the latter which results in less static energy being consumed. The computations to communications ratios of the NAS benchmarks are higher over -the one site one core scenario when compared to the ratio of the multi-cores scenario. +the one site one core scenario when compared to the ratio of the multi-core scenario. More energy reduction can be gained when this ratio is big because it pushes the proposed scaling algorithm to select smaller frequencies that decrease the dynamic power consumption. These experiments also showed that the energy consumption and the execution times of the EP and MG benchmarks do not change significantly over these two scenarios because there are no or small communications. Contrary to EP and MG, the energy consumptions and the execution times of the rest of the benchmarks vary according to the communication times that are different from one scenario to the other. - - -\begin{figure*}[!t] +\begin{figure*}[!h] \centering \includegraphics[width=.7\textwidth]{fig/ch3/eng_s_mc.eps} - \caption{The energy saving of running NAS benchmarks over one core and multicores scenarios} + \caption{The energy saving of running NAS benchmarks over one core and multi-core scenarios} \label{fig:eng-s-mc} \end{figure*} -\begin{figure*}[!t] + +\begin{figure*}[!h] \centering \includegraphics[width=.7\textwidth]{fig/ch3/per_d_mc.eps} - \caption{The performance degradation of running NAS benchmarks over one core and multicores scenarios} + \caption{The performance degradation of running NAS benchmarks over one core and multi-core scenarios} \label{fig:per-d-mc} \end{figure*} -\begin{figure*}[!t] + +\begin{figure*}[!h] \centering \includegraphics[width=.7\textwidth]{fig/ch3/dist_mc.eps} - \caption{The trade-off distance of running NAS benchmarks over one core and multicores scenarios} + \caption{The trade-off distance of running NAS benchmarks over one core and multi-core scenarios} \label{fig:dist-mc} \end{figure*} - -The energy saving percentages of all NAS benchmarks running over these two scenarios are presented in Figure~\ref{fig:eng-s-mc}. -The figure shows that the energy saving percentages in the one -core and the multi-cores scenarios +The energy saving percentages of all the NAS benchmarks running over these two scenarios are presented in Figure~\ref{fig:eng-s-mc}. +It shows that the energy saving percentages in the one +core and the multi-core scenarios are approximately equivalent, on average they are equal to 25.9\% and 25.1\% respectively. The energy consumption is reduced at the same rate in the two scenarios when compared to the energy consumption of the executions without DVFS. - The performance degradation percentages of the NAS benchmarks are presented in -Figure~\ref{fig:per-d-mc}. It shows that the performance degradation percentages are higher for the NAS benchmarks over the one core per node scenario (on average equal to 10.6\%) than over the multi-cores scenario (on average equal to 7.5\%). The performance degradation percentages over the multi-cores scenario are lower because the computations to communications ratios are smaller than the ratios of the other scenario. +Figure~\ref{fig:per-d-mc}. It shows that the performance degradation percentages are higher for the NAS benchmarks executed over the one core per node scenario (on average equal to 10.6\%) than over the multi-core scenario (on average equal to 7.5\%). The performance degradation percentages over the multi-core scenario are lower because the computations to communications ratios are smaller than the ratios of the other scenario. -The trade-off distances percentages of the NAS benchmarks over the two scenarios are presented -in ~Figure~\ref{fig:dist-mc}. These trade-off distances between energy consumption reduction and performance are used to verify which scenario is the best in both terms at the same time. The figure shows that the trade-off distance percentages are on average bigger over the multi-cores scenario (17.6\%) than over the one core per node scenario (15.3\%). +The trade-off distances percentages of the NAS benchmarks over both scenarios are presented +in~Figure~\ref{fig:dist-mc}. These trade-off distances between energy consumption reduction and performance are used to verify which scenario is the best in both terms at the same time. The figure shows that the trade-off distance percentages are on average bigger over the multi-core scenario (17.6\%) than over the one core per node scenario (15.3\%). \subsection{Experiments with different static power scenarios} @@ -1594,24 +1556,25 @@ In Section~\ref{ch3:4}, since it was not possible to measure the static power co The aim of this section is to evaluate the scaling algorithm while assuming different values of static powers. In addition to the previously used percentage of static power, two new static power ratios, 10\% and 30\% of the measured dynamic power of the core, are used in this section. The experiments have been executed with these two new static power scenarios over the one site one core per node scenario. -In these experiments, class D of the NAS parallel benchmarks are executed over the Nancy site. 16 computing nodes from the three clusters, Graphite, Graphene and Griffon, where used in this experiment. +In these experiments, the class D of the NAS parallel benchmarks were executed over the Nancy site. 16 computing nodes from the three clusters, Graphite, Graphene and Griffon, were used in this experiment. -\begin{figure}[!t] +\begin{figure}[!h] \centering \includegraphics[width=.7\textwidth]{fig/ch3/eng_pow.eps} \caption{The energy saving percentages for the nodes executing the NAS benchmarks over the three power scenarios} \label{fig:eng-pow} \end{figure} -\begin{figure}[!t] +\begin{figure}[!h] \centering \includegraphics[width=.7\textwidth]{fig/ch3/per_pow.eps} \caption{The performance degradation percentages for the NAS benchmarks over the three power scenarios} \label{fig:per-pow} \end{figure} -\begin{figure}[!t] + +\begin{figure}[!h] \centering \includegraphics[width=.7\textwidth]{fig/ch3/dist_pow.eps} \caption{The trade-off distance between the energy reduction and the performance of the NAS benchmarks over the three power scenarios} @@ -1619,7 +1582,7 @@ In these experiments, class D of the NAS parallel benchmarks are executed over t \end{figure} -\begin{figure} +\begin{figure}[!h] \centering \includegraphics[scale=0.7]{fig/ch3/three_scenarios2.pdf} \caption{Comparing the selected frequency scaling factors for the MG benchmark over the three static power scenarios} @@ -1648,13 +1611,13 @@ distance percentages for these static power scenarios are not significantly diff -\subsection{Comparison of the proposed frequencies selecting algorithm } +\subsection{Comparison between the proposed frequencies selecting algorithm and the EDP method} \label{ch3:4:4} Finding the frequencies that give the best trade-off between the energy consumption and the performance for a parallel application is not a trivial task. Many algorithms have been proposed to tackle this problem. In this section, the proposed frequencies selecting algorithm is compared to a method that uses the well known energy and delay product objective function, $EDP=energy \times delay$, that has been used by many researchers \cite{ref80,ref81,ref82}. -This objective function was also used by Spiliopoulos et al. algorithm \cite{ref67} where they select the frequencies that minimize the EDP product and apply them with DVFS operations to the multi-cores +This objective function was also used by Spiliopoulos et al. algorithm \cite{ref67} where they select the frequencies that minimize the EDP product and apply them with DVFS operations to the multi-core architecture. Their online algorithm predicts the energy consumption and execution time of a processor before using the EDP method. To fairly compare the proposed frequencies scaling algorithm to Spiliopoulos et al. algorithm, called Maxdist and EDP respectively, both algorithms use the same energy model, Equation~\ref{eq:energy-grid} and @@ -1662,26 +1625,25 @@ execution time model, Equation~\ref{eq:perf-grid}, to predict the energy consump Moreover, both algorithms start the search space from the upper bound computed as in Equation~\ref{eq:Fint}. Finally, the resulting EDP algorithm is an exhaustive search algorithm that tests all the possible frequencies, starting from the initial frequencies (upper bound), and selects the vector of frequencies that minimize the EDP product. -Both algorithms were applied to class D of the NAS benchmarks over 16 nodes. +Both algorithms were applied to the class D of the NAS benchmarks running over 16 nodes. The participating computing nodes are distributed according to the two scenarios described in Section~\ref{ch3:4:1}. The experimental results, the energy saving, performance degradation and trade-off distance percentages, are presented in Figures~\ref{fig:edp-eng}, \ref{fig:edp-perf} and \ref{fig:edp-dist} respectively. - - - -\begin{figure*}[!t] +\begin{figure*}[!h] \centering \includegraphics[width=.7\textwidth]{fig/ch3/edp_eng} \caption{The energy reduction induced by the Maxdist method and the EDP method} \label{fig:edp-eng} \end{figure*} -\begin{figure*}[!t] + +\begin{figure*}[!h] \centering \includegraphics[width=.7\textwidth]{fig/ch3/edp_per} \caption{The performance degradation induced by the Maxdist method and the EDP method} \label{fig:edp-perf} \end{figure*} -\begin{figure*}[!t] + +\begin{figure*}[!h] \centering \includegraphics[width=.7\textwidth]{fig/ch3/edp_dist} \caption{The trade-off distance between the energy consumption reduction and the performance for the Maxdist method and the EDP method} @@ -1690,35 +1652,35 @@ presented in Figures~\ref{fig:edp-eng}, \ref{fig:edp-perf} and \ref{fig:edp-dis As shown in these figures, the proposed frequencies selection algorithm, Maxdist, outperforms the EDP algorithm in terms of energy consumption reduction and performance for all of the benchmarks executed over the two scenarios. -The proposed algorithm gives better results than EDP because it +The proposed algorithm gives better results than the EDP method because it maximizes the energy saving and the performance at the same time. Moreover, the proposed scaling algorithm gives the same weight for these two metrics. Whereas, the EDP algorithm gives sometimes negative trade-off values for some benchmarks in the two sites scenarios. These negative trade-off values mean that the performance degradation percentage is higher than the energy saving percentage. The high positive values of the trade-off distance percentage mean that the energy saving percentage is much higher than the performance degradation percentage. -The time complexity of both Maxdist and EDP algorithms are $O(N \cdot M \cdot F)$ and -$O(N \cdot M \cdot F^2)$ respectively, where $N$ is the number of the clusters, $M$ is the number of nodes and $F$ is the -maximum number of available frequencies. When Maxdist is applied to a benchmark that is being executed over 32 nodes distributed between Nancy and Lyon sites, it takes on average $0.01 ms$ to compute the best frequencies while EDP is on average ten times slower over the same architecture. +The complexity of both algoriths, Maxdist and EDP, are of order $O(N \cdot M_i \cdot F_j)$ and +$O(N \cdot M_i \cdot F_j^2)$ respectively, where $N$ is the number of the clusters, $M_i$ is the number of nodes and $F_j$ is the +maximum number of available frequencies of node $j$. When Maxdist is applied to a benchmark that is being executed over 32 nodes distributed between Nancy and Lyon sites, it takes on average $0.01$ $ms$ to compute the best frequencies while the EDP method is on average ten times slower over the same architecture. \section{Conclusion} \label{ch3:concl} In this chapter, two new online frequency scaling factors selecting algorithms have been presented. They select the best possible vectors of frequency scaling factors that give the -maximum distance (optimal trade-off) between the predicted energy and the +maximum distance (optimal trade-off) between the predicted energy and the predicted performance curves for a heterogeneous cluster and grid. Both algorithms use a -new energy models for measuring and predicting the energy of distributed +new energy models for measuring and predicting the energy consumption of message passing iterative applications running over a heterogeneous local cluster and a grid platform. -Firstly, the proposed scaling factors selection algorithm for a heterogeneous local cluster is applied to NAS parallel benchmarks class C and simulated by SimGrid. -The results of the experiments showed that the algorithm on average reduces by 29.8\% the energy -consumption of NAS benchmarks executed over 8 nodes while limiting the degradation of the performance by 3.8\%. The algorithm also selects different scaling factors according to +Firstly, the proposed scaling factors selection algorithm for a heterogeneous local cluster is applied to the class C of NAS parallel benchmarks and simulated by SimGrid. +The results of the simulations showed that the algorithm on average reduces by 29.8\% the energy +consumption of the NAS benchmarks executed over 8 nodes while limiting the degradation of the performance by 3.8\%. The algorithm also selects different scaling factors according to the percentage of the computing and communication times, and according to the values of the static and dynamic powers of the CPUs. -Secondly, the proposed scaling factors selection algorithm for a grid is applied to NAS parallel benchmarks class D and executed over Grid5000 testbed platform. -The experiments on 16 nodes, distributed over three clusters, showed that the algorithm on average reduces by 30\% the energy consumption -for all the NAS benchmarks while on average only degrading by 3.2\% the performance. -The algorithm was also evaluated in different scenarios that vary in the distribution of the computing nodes between different clusters' sites or use multi-cores per node architecture or consume different static power values. The algorithm selects different vectors of frequencies according to the +Secondly, the proposed scaling factors selection algorithm for a grid is applied to the class D of the NAS parallel benchmarks and executed over the Grid5000 testbed platform. +The experiments executed on 16 nodes distributed over three clusters, showed that the algorithm on average reduces by 30\% the energy consumption +of all the NAS benchmarks while on average only degrading by 3.2\% their performance. +The algorithm was also evaluated in different scenarios that vary in the distribution of the computing nodes between different clusters' sites or use multi-core per node architecture or consume different static power values. The algorithm selects different vectors of frequencies according to the computations and communication times ratios, and the values of the static and measured dynamic powers of the CPUs. Thus, the simulation and the real results are comparable in term of energy saving and performance degradation percentages. -Finally, both the proposed algorithms were compared to another method that uses +Finally, both algorithms were compared to a method that uses the well known energy and delay product as an objective function. The comparison results showed that the proposed algorithms outperform the latter by selecting vectors of frequencies that give a better trade-off results. diff --git a/CHAPITRE_04.tex b/CHAPITRE_04.tex index 32cec12..43987cc 100644 --- a/CHAPITRE_04.tex +++ b/CHAPITRE_04.tex @@ -1,10 +1,796 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% -%% CHAPTER 05 %% +%% CHAPTER 04 %% %% %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\chapter{Energy Optimization of Asynchronous Iterative Applications} +\newcommand{\Tnorm}{\Xsub{T}{Norm}} +\newcommand{\Ltcm}[1][]{\Xsub{L}{tcm}_{\fxheight{#1}}} +\newcommand{\Etcm}[1][]{\Xsub{E}{tcm}_{\fxheight{#1}}} +\newcommand{\Niter}[1][]{\Xsub{N}{iter}_{\fxheight{#1}}} + +\chapter{Energy Optimization of Asynchronous Applications} \label{ch4} +\section{Introduction} +\label{ch4:1} + +A grid is composed of heterogeneous clusters: CPUs from distinct clusters might have different computing power, energy consumption or frequency range. +Running synchronous parallel applications on grids results in long slack times where the fast nodes have to wait for the slower ones to finish their computations before synchronously exchanging data with them. Therefore, it is widely accepted that asynchronous parallel methods are more suitable than synchronous ones for such architectures because there is no slack time and the asynchronous communications are overlapped by computations. However, they usually execute more iterations than the synchronous ones and thus consume more energy. +In order to make the asynchronous method a good alternative to the synchronous one, it should not be just competitive in performance but also in energy consumption. +To reduce the energy consumption of a CPU executing the asynchronous iterative method, the Dynamic voltage and frequency scaling (DVFS) technique can be used. Modern operating systems automatically adjust the frequency of the processor according to their needs using DVFS operations. However, the user can scale down the frequency of the CPU using the on-demand governor \cite{ref96}. It lowers the frequency of a CPU to reduce its energy +consumption, but it also decreases its computing power and thus it might increase the +execution time of an application running on that processor. Therefore, the frequency that gives the best trade-off between energy consumption and performance must be selected. For parallel asynchronous methods running over a grid, a different frequency might be selected for each CPU in the grid depending on its characteristics. +In chapters \ref{ch2} and \ref{ch3}, three frequencies selecting algorithms were proposed +to reduce the energy consumption of synchronous message passing iterative applications running over homogeneous and heterogeneous platforms respectively. In this chapter, a new frequency selecting algorithm for asynchronous iterative message passing applications running over grids is presented. An adaptation for hybrid methods, with synchronous and asynchronous communications, is also proposed. +The algorithm and its adaptation select the vector of frequencies which simultaneously offers a maximum energy reduction and minimum performance degradation ratio. The algorithm has a very small overhead and works online without needing any training nor any profiling. + + +This chapter is organized as follows: Section~\ref{ch4:2} presents some +related works from other authors. models for predicting the performance and the energy consumption + of both synchronous and asynchronous message passing programs +running over a grid are explained in Section~\ref{ch4:3}. +It also presents the objective function that maximizes the reduction of energy consumption while minimizing +the degradation of the program's performance, used to select the frequencies. +Section~\ref{ch4:5} details the proposed frequencies selecting algorithm. +Section~\ref{ch4:6} presents the iterative multi-splitting application which is a hybrid method and was used as a benchmark to evaluate the efficiency of the proposed algorithm. +Section~\ref{ch4:7} presents the simulation results of applying the algorithm on the multi-splitting application +and executing it on different grid scenarios. It also shows the results of running +three different power scenarios and comparing them. Moreover, in the last subsection, the proposed algorithm is compared to the energy and delay product (EDP) method. Section \ref{ch4:8} shows the real experiment results of applying the proposed algorithm over Grid'5000 platform and the results with the EDP method . Finally, the chapter ends with a summary in section +\ref{ch4:9}. + + + + +\section{Related works} +\label{ch4:2} + + +A message passing application is in general composed of two types of sections, which are the computations and the communications sections. The communications can be done synchronously or asynchronously. In a synchronous message passing application, when a process synchronously sends a message to another node, it is blocked until the latter receives the message. During that time, there is no computation on both nodes and that period is called slack time. +On the contrary, in an asynchronous message passing application, the asynchronous communications are overlapped by computations, thus, there is no slack time. +Many techniques have been used to reduce the energy consumption of message passing applications, +such as scheduling, heuristics and DVFS. For example, different scheduling techniques, to switch off the idle nodes to save their energy consumption, were presented in \cite{ref83,ref84,ref85} and \cite{ref86}. In \cite{ref87} +and \cite{ref88}, an heuristic to manage the workloads between the computing resources of the cluster and reduce their energy, was published. +However, the dynamic voltage and frequency scaling (DVFS) is the most popular technique to reduce the energy consumption of computing processors. + +As shown in the related works of chapter \ref{ch2}, most of the works in this field targeted the synchronous message passing applications because they are more common than the asynchronous ones and easier to work on. Some researchers tried to reduce slack times in synchronous applications running over homogeneous clusters. These slack times can happen on such architectures if the distributed workloads over the computing nodes are imbalanced. +Other works focused on reducing the energy consumption of synchronous applications running over heterogeneous architectures such as heterogeneous clusters or grids. When executing synchronous message passing applications on these architectures, slack times are generated when fast nodes have to communicate with slower ones. Indeed, the fast nodes have to wait for the slower ones to finish their computations to be able to communicate with them. In this case, some energy was saved as in the work of chapter \ref{ch3} and its related works by reducing the frequencies of the fast nodes with DVFS operations while minimizing the slack times. + +Whereas, no work has been conducted to optimize the energy consumption of asynchronous message passing applications. Some works use asynchronous communications when applying DVFS operations on synchronous applications. For example, Hsu et al. \cite{ref92} proposed an online adaptive algorithm that divides the synchronous message passing application into several time periods and selects the suitable frequency for each one. The algorithm asynchronously applies the new computed frequencies to overlap the multiple DVFS switching times with computation. Similarly to this work, Zhu et al. \cite{ref93} studied the difference between applying synchronously or asynchronously the frequency changing algorithm during the execution time of the program. The results of the proposed asynchronous scheduler were more energy efficient than synchronous one. In \cite{ref94}, Vishnu et al. presented an energy efficient asynchronous agent that reduces the slack times in a parallel program to reduce the energy consumption. They used asynchronous communications in the proposed algorithm, which calls the DVFS algorithm many times during the execution time of the program. The three previous presented works were applied on applications running over homogeneous platforms. + +In \cite{ref95}, the energy consumption of an asynchronous iterative linear solver running over a heterogeneous platform, is evaluated. The results showed that the asynchronous version of the application had less execution time than the synchronous one. Therefore, according to their energy model the asynchronous method consumes less energy. +However, in their model they do not consider that during synchronous communications only static power which is significantly lower than dynamic power, is consumed. + +This chapter presents the following contributions: +\begin{enumerate} +\item new model to predict the energy consumption and the execution time + of asynchronous iterative message passing applications running over a grid platform. + +\item a new online algorithm that selects a vector of frequencies which gives the best trade-off between energy consumption and performance for asynchronous iterative message passing applications running over a grid platform. The algorithm has a very small overhead + and does not need any training or profiling. The new algorithm can be applied synchronously and asynchronously on an iterative message passing application. + +\end{enumerate} + + + + +\section{The performance and the energy consumption measurement models} +\label{ch4:3} + +\subsection{The execution time of iterative asynchronous message passing applications} +\label{ch4:3:1} +In this chapter, we are interested in running asynchronous iterative message + passing distributed applications over a grid while reducing the energy consumption of the + CPUs during the execution. + Figure \ref{fig:heter} is an example of a grid with four different clusters. Inside each cluster, all the nodes are homogeneous, have the same specifications, but are different from the nodes of the other clusters. + To reduce the energy consumption of these applications while running on a grid, + the heterogeneity of the clusters' nodes, such as nodes' computing powers (FLOPS), energy consumptions and + CPU's frequency ranges, must be taken into account. To reduce the complexity of the experiments and focus on the heterogeneity of the nodes, the local networks of all the clusters are assumed to be identical, with the same latency and bandwidth. The networks connecting the clusters are also assumed to be homogeneous but they are slower than the local networks. + + \begin{figure}[!t] + \centering + \includegraphics[scale=0.9]{fig/ch4/GRID} + \caption{A grid platform composed of heterogeneous clusters} + \label{fig:heter} +\end{figure} + + +An iterative application consists of a block of instructions that is repeatedly executed until convergence. A distributed iterative application with interdependent tasks requires, at each iteration, exchanging data between nodes to compute the distributed tasks. The communications between the nodes can be done synchronously or asynchronously. In the synchronous model, each node has to wait to receive data from all its neighbors to compute its iteration, see figures \ref{fig:ch1:15} and \ref{fig:ch1:16}. +Since the tasks are synchronized, all the nodes execute the same number of iterations. +Then, The overall execution time of an iterative synchronous message passing application with balanced tasks, running on the grid described above, is equal to the execution time of the slowest node in the slowest cluster running a task as presented in \ref{eq:perf_heter}. + + +Whereas, in the asynchronous model, the fast nodes do not have to wait for the slower nodes to finish their computations to exchange data, see Figure \ref{fig:ch1:17}. Therefore, there are no idle times between successive iterations, the node executes the computations with the last received data from its neighbors and the communications are overlapped by computations. Since there are no synchronizations between nodes, all nodes do not have the same number of iterations. +The difference in the number of executed iterations between the nodes depends on the heterogeneity of the computing powers of the nodes. The execution time of an asynchronous iterative message passing application is not equal to the execution time of the slowest node like in the synchronous mode because each node executes a different number of iterations. Moreover, the overall execution time is directly dependent on the method used to detect the global convergence of the asynchronous iterative application. The global convergence detection method might be synchronous or asynchronous and centralized or distributed. + +In a grid, the nodes in each cluster have different characteristics, especially different frequency gears. +Therefore, when applying DVFS operations on these nodes, they may get different scaling factors represented +by a scaling vector: $(S_{11}, S_{12},\dots, S_{NM_i})$ where $S_{ij}$ is the +scaling factor of processor $j$ in the cluster $i$. +To be able to predict the execution time of asynchronous iterative message passing applications running +over a grid, for different vectors of scaling factors, the communication times and the computation times for all the tasks must be measured during the first iteration before applying any DVFS operation. Then, the execution time of one iteration of an asynchronous iterative message passing application, +running on a grid after applying a vector of scaling factors, is equal to the execution time of the synchronous application but without its communication times. The communication times are overlapped by computations and the execution time can be evaluated for all the application as the average of the execution time of all the parallel tasks. This is presented in Equation \ref{eq:asyn_time}. + +\begin{equation} + \label{eq:asyn_time} + \Tnew = \frac{\sum_{i=1}^{N} \sum_{j=1}^{M_i}({\TcpOld[ij]} \cdot S_{ij})} {N \cdot M_i } +\end{equation} + + +In this work, a hybrid (synchronous/asynchronous) message passing application \cite{ref99} is being used. It is composed of two loops: +\begin{enumerate} +\item In the inner loop, at each iteration, the nodes in a cluster synchronously exchange data between them. There is no communication between nodes from different clusters. +\item In the outer loop, at each iteration, the nodes from different clusters asynchronously exchange their data between them because the network interconnecting the clusters has a high latency. +\end{enumerate} + +Therefore, the execution time of one outer iteration of such a hybrid application can be evaluated by computing the average of the execution time of the slowest node in each cluster. The overall execution time of the asynchronous iterative applications can be evaluated as follows: + +\begin{equation} + \label{eq:asyn_perf} + \Tnew = \frac{\sum_{i=1}^{N} (\max_{j=1,\dots, M_i} ({\TcpOld[ij]} \cdot S_{ij}) + + \min_{j=1,\dots,M_i} ({\Ltcm[ij]}))}{N} +\end{equation} + +In Equation (\ref{eq:asyn_perf}), the communication times $\Ltcm[ij]$ are only the communications between the local nodes because the communications between the clusters are asynchronous and overlapped by computations. + + +\subsection{The energy model and tradeoff optimization} +\label{ch3:3:3} + +The energy consumption of an asynchronous application running over a heterogeneous grid is the summation of +the dynamic and static power of each node multiplied by the computation time of that node as in Equation (\ref{eq:asyn_energy1}). The computation time of each node is equal to the overall execution time of +the node because the asynchronous communications are overlapped by computations. +\begin{equation} + \label{eq:asyn_energy1} + E = \sum_{i=1}^{N} \sum_{j=1}^{M_i} {(S_{ij}^{-2} \cdot \Tcp[ij] \cdot (\Pd[ij]+\Ps[ij]) )} +\end{equation} + + +It is common for distributed algorithms running over grids to have asynchronous external communications between clusters and synchronous ones between the nodes of the same cluster. In this hybrid communication scheme, the dynamic energy consumption can be computed in the same way as for the synchronous application with Equation (\ref{eq:Edyn_new}). +However, since the nodes of different clusters are not synchronized and do not have the same execution time as in the synchronous application, the static energy consumption is different between them. The cluster execution time is equal to the execution time of the slowest task in that cluster. The energy +consumption of the asynchronous iterative message passing application running on a +heterogeneous grid platform during one iteration can be computed as follows: + + \begin{equation} + \label{eq:asyn_energy} + E = \sum_{i=1}^{N} \sum_{j=1}^{M_i} {(S_{ij}^{-2} \cdot \Pd[ij] \cdot \Tcp[ij])} + \sum_{i=1}^{N} \sum_{j=1}^{M_i} (\Ps[ij] \cdot + ( \mathop{\max_{j=1,\dots,M_i}} ({\Tcp[ij]} \cdot S_{ij}) + \mathop{\min_{j=1,\dots,M_i}} ({\Ltcm[ij]}))) +\end{equation} +Where $\Ltcm[ij]$ is the local communication time of the cluster $i$ of node $j$. +Reducing the frequencies of the processors according to the vector of scaling +factors $(S_{11}, S_{12},\dots, S_{NM_i})$ may degrade the performance of the application +and thus, increase the static energy consumed because the execution time is +increased~\cite{ref78}. The overall +energy consumption for the asynchronous application can be computed by multiplying the energy consumption +from one iteration of each cluster by the number of the iterations of that cluster, $\Niter[i]$, +as in Equation (\ref{eq:asyn_energy_it}). + + + \begin{multline} + \label{eq:asyn_energy_it} + E = \sum_{i=1}^{N} (\sum_{j=1}^{M_i} {(S_{ij}^{-2} \cdot \Pd[ij] \cdot \Tcp[ij])}) \cdot \Niter[i] + \sum_{i=1}^{N} (\sum_{j=1}^{M_i} (\Ps[ij] \cdot \\ + ( \mathop{\max_{j=1,\dots,M_i}} ({\Tcp[ij]} \cdot S_{ij}) + \mathop{\min_{j=1,\dots,M_i}} ({\Ltcm[ij]})))) \cdot \Niter[i] +\end{multline} + +In order to optimize the energy consumption and the performance of the asynchronous iterative applications at the same time, the maximum distance between the two metrics can be computed as in the previous chapters. +However, both the energy model and performance must be normalized as in the Equations \ref{eq:enorm-heter} and +\ref{eq:pnorm-heter} respectively. +Hence, $\Tnew$ should be computed as in Equation~\ref{eq:asyn_perf} and $\Told$ computed as follows: +\begin{equation} + \label{eq:asyn_told} + \Told = \frac{\sum_{i=1}^{N} (\max_{j=1,\dots, M_i} ({\TcpOld[ij]}) + + \min_{j=1,\dots,M_i} ({\Ltcm[ij]}))}{N} +\end{equation} + +The original energy consumption of asynchronous applications, $\Eoriginal$ is computed as in (\ref{eq:asyn_energy_original}). + + + +\begin{equation} + \label{eq:asyn_energy_original} + E_{original} = \sum_{i=1}^{N} \sum_{j=1}^{M_i} {( \Pd[ij] \cdot \TcpOld[ij])} + \sum_{i=1}^{N} \sum_{j=1}^{M_i} (\Ps[ij] \cdot + ( \mathop{\max_{j=1,\dots,M_i}} ({\TcpOld[ij]} ) + \mathop{\min_{j=1,\dots,M_i}} ({\Ltcm[ij]}))) +\end{equation} + + +Then, the objective function can be modeled as the maximum +distance between the normalized energy curve and the normalized +performance curve over all available sets of scaling factors and is computed as in the +objective function \ref{eq:max-grid}. + + +\section[The scaling algorithm of asynchronous applications]{The scaling factors selection algorithm of asynchronous applications over grid} +\label{ch4:5} +The frequency selection algorithm~(\ref{HSA-asyn}) works online during the first iteration of asynchronous iterative message passing program running over a grid. The algorithm selects + the set of frequency scaling factors $\Sopt[11],\Sopt[12],\dots,\Sopt[NM_i]$ which maximizes + the distance, the tradeoff function (\ref{eq:max-grid}), between the predicted normalized energy consumption + and the normalized performance of the program. The algorithm is called just once in the iterative program and + it uses information gathered from the first iteration to approximate the vector of frequency scaling factors that gives the best tradeoff. + According to the returned vector of scaling factors, the DVFS algorithm (\ref{dvfs-heter}) computes the new frequency + for each node in the grid. It also shows where and when the proposed scaling algorithm is called in + the iterative message passing program. + +\begin{figure}[!t] + \centering + \includegraphics[scale=0.65]{fig/ch4/init_freq} + \caption{Selecting the initial frequencies in a grid composed of four clusters} + \label{fig:st_freq} +\end{figure} + +In contrast to the scaling factors selection algorithm of synchronous applications running on the grid +(algorithm \ref{HSA-grid}), this algorithm computed the initial frequencies depending on the Equations +\ref{eq:Scp-grid} and \ref{eq:Fint-grid}. Figure~\ref{fig:st_freq} shows the selected initial frequencies of the grid composed of four different types of clusters that are presented in the Figure \ref{fig:heter}. +The only difference between the two algorithms is the energy and performance models that are used. Furthermore, this algorithm scales down all frequencies of nodes at each iteration, while other algorithm don't scaled down the frequency of the slowest node. However, the performance of asynchronous application does not depend on the performance of the slower nodes, while it depends on the performance of all nodes. + +\begin{algorithm} + \begin{algorithmic}[1] + % \footnotesize + \Require ~ + \item [{$N$}] number of clusters in the grid. + \item [{$M$}] number of nodes in each cluster. + \item[{$\Tcp[ij]$}] array of all computation times for all nodes during one iteration and with the highest frequency. + \item[{$\Tcm[ij]$}] array of all communication times for all nodes during one iteration and with the highest frequency. + \item[{$\Fmax[ij]$}] array of the maximum frequencies for all nodes. + \item[{$\Pd[ij]$}] array of the dynamic powers for all nodes. + \item[{$\Ps[ij]$}] array of the static powers for all nodes. + \item[{$\Fdiff[ij]$}] array of the differences between two successive frequencies for all nodes. + + \Ensure $\Sopt[11],\Sopt[12] \dots, \Sopt[NM_i]$, a vector of scaling factors that gives the optimal tradeoff between energy consumption and execution time + + \State $\Scp[ij] \gets \frac{\max_{i=1,2,\dots,N}(\max_{j=1,2,\dots,M_i}(\Tcp[ij]))}{\Tcp[ij]} $ + \State $F_{ij} \gets \frac{\Fmax[ij]}{\Scp[i]},~{i=1,2,\cdots,N},~{j=1,2,\dots,M_i}.$ + \State Round the computed initial frequencies $F_i$ to the closest available frequency for each node. + \If{(not the first frequency)} + \State $F_{ij} \gets F_{ij}+\Fdiff[ij],~i=1,\dots,N,~{j=1,\dots,M_i}.$ + \EndIf + \State $\Told \gets \frac{\sum_{i=1}^{N} (\max\limits_{j=1,\dots, M_i} ({\TcpOld[ij]}) + + \min\limits_{j=1,\dots,M_i} ({\Ltcm[ij]}))}{N} $ + \vspace*{0.2 cm} + \State $\Eoriginal \gets \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{M_i} {( \Pd[ij] \cdot \TcpOld[ij])} + \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{M_i} (\Ps[ij] \cdot + (\mathop{\max\limits_{j=1,\dots,M_i}} ({\TcpOld[ij]} ) + \mathop{\min\limits_{j=1,\dots,M_i}} ({\Ltcm[ij]})))$ + \State $\Sopt[ij] \gets 1,~i=1,\dots,N,~{j=1,\dots,M_i}. $ + \State $\Dist \gets 0 $ + \While {(all nodes have not reached their minimum frequency \textbf{or} $\Pnorm - \Enorm < 0 $)} + \If{(not the last frequency)} + \State $F_{ij} \gets F_{ij} - \Fdiff[ij],~{i=1,\dots,N},~{j=1,\dots,M_i}$. + \State $S_{ij} \gets \frac{\Fmax[ij]}{F_{ij}},~{i=1,\dots,N},~{j=1,\dots,M_i}.$ + \EndIf + \State $\Tnew \gets \frac{\sum\limits_{i=1}^{N} (\max\limits_{j=1,\dots, M_i} ({\TcpOld[ij]} \cdot S_{ij}) + \min\limits_{j=1,\dots,M_i} ({\Ltcm[ij]}))}{N} $ + \vspace*{0.2 cm} + \State $\Ereduced \gets \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{M_i} {(S_{ij}^{-2} \cdot \Pd[ij] \cdot \Tcp[ij])} + \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{M_i} (\Ps[ij] \cdot + ( \mathop{\max\limits_{j=1,\dots,M_i}} ({\Tcp[ij]} \cdot S_{ij}) + \mathop{\min\limits_{j=1,\dots,M_i}} ({\Ltcm[ij]}))) $ + \State $\Pnorm \gets \frac{\Told}{\Tnew}$ + \State $\Enorm\gets \frac{\Ereduced}{\Eoriginal}$ + \If{$(\Pnorm - \Enorm > \Dist)$} + \State $\Sopt[ij] \gets S_{ij},~i=1,\dots,N,~j=1,\dots,M_i. $ + \State $\Dist \gets \Pnorm - \Enorm$ + \EndIf + \EndWhile + \State Return $\Sopt[11],\Sopt[12],\dots,\Sopt[NM_i]$ + \end{algorithmic} + \caption{Scaling factors selection algorithm of asynchronous applications over grid} + \label{HSA-asyn} +\end{algorithm} + + + + +\section{The iterative multi-splitting method } + \label{ch4:6} + + Multi-splitting algorithms have been initially studied to + solve linear systems of equations in parallel + \cite{ref97}. Thereafter, they were used to design + non linear iterative algorithms and asynchronous iterative + algorithms~\cite{ref98}. The principle of multi-splitting + algorithms lies in splitting the system of equations, then solving + each sub-system using a direct or an iterative method and then + combining the results in order to build a global solution. Since a + multi-splitting method is iterative, it requires executing several iterations + in order to reach global convergence. + + In this chapter, we have used an asynchronous iterative multisplitting method + to solve a 3D Poisson problem as described in~\cite{ref99}. The + problem is divided into small 3D sub-problems and each one is solved by a + parallel GMRES method. For more information about multi-splitting + algorithms, interested readers are invited to + consult the previous references. + + +\section{The experimental results over SimGrid} + \label{ch4:7} +In this section, the heterogeneous scaling algorithm (HSA), Algorithm~(\ref{HSA-asyn}), is applied to the parallel iterative +multi-splitting method. The performance of this algorithm is evaluated by + executing the iterative multi-splitting method on the Simgrid/SMPI simulator v3.10 +\cite{ref66}. This simulator offers flexible tools to create a +grid architecture and run the iterative application over it. The grid used in these +experiments has four different types of nodes. Two types of nodes have different computing powers, frequency ranges, static and dynamic powers. Table \ref{table:platform} +presents the characteristics of the four types of nodes. The specifications of the simulated nodes are similar to real Intel processors. +Many grid configurations have been used in the experiments where the number of clusters and the number of nodes per cluster are equal to 4 or 8. +For the grids composed of 8 clusters, two clusters of each type of nodes were used. The number of nodes per cluster is the same for all the clusters in a given grid. + + +\begin{table}[!t] + \caption{The characteristics of the four types of nodes} + % title of Table + \centering + \begin{tabular}{|*{7}{r|}} + \hline + node& Simulated & Max & Min & Diff. & Dynamic & Static \\ + type & GFLOPS & Freq. & Freq. & Freq. & power & power \\ + & of one node & GHz & GHz & GHz & & \\ + \hline + A & 40 & 2.50 & 1.20 & 0.100 & \np[W]{20} & \np[W]{4} \\ + \hline + B & 50 & 2.66 & 1.60 & 0.133 & \np[W]{25} & \np[W]{5} \\ + \hline + C & 60 & 2.90 & 1.20 & 0.100 & \np[W]{30} & \np[W]{6} \\ + \hline + D & 70 & 3.40 & 1.60 & 0.133 & \np[W]{35} & \np[W]{7} \\ + \hline + \end{tabular} + \label{table:platform} +\end{table} + + + The CPUs' constructors do not specify the amount of static and dynamic powers their CPUs consume. +The maximum power consumption for each node's CPU was chosen to be proportional to its computing power (FLOPS). The dynamic power was assumed to represent \np[\%]{80} of the overall power consumption and the rest (\np[\%]{20}) is the static power. Similar assumptions were made in last two chapters and \cite{ref47}. +The clusters of the grid are connected via a long distance Ethernet network with +\np[Gbit/s]{1} bandwidth, while inside each cluster the nodes are connected via a high-speed \np[Gbit/s]{10} bandwidth local Ethernet network. The local networks have ten times less latency than the network connecting the clusters. + +\subsection{The energy consumption and the execution time of the multi-splitting application} + \label{ch4:7:1} + The multi-splitting (MS) method solves a three dimensional problem of size $N=N_x \cdot N_y \cdot N_z$. The problem is divided into equal sub-problems which are distributed to the computing nodes of the grid and then solved. + The experiments were conducted on problems of size $N=400^3$ + or $N=500^3$ that require more than $12$ and $24$ Gigabyte of memory, respectively. + Table \ref{table:comp} presents the different experiment scenarios with different numbers of clusters, nodes per cluster and problem sizes. A name, consisting in the values of these parameters was given to each scenario. + + \begin{table}[!t] + \caption{The different experiment scenarios} + % title of Table + \centering + \begin{tabular}{|*{7}{r|}} + \hline + Platform & Clusters & Number of nodes &Vector & Total number of \\ + scenario & number & in cluster &size & nodes in grid \\ + \hline + Grid.4*4.400 & 4 & 4 &$400^3$ &16 \\ + \hline + Grid.4*8.400 & 4 & 8 &$400^3$ &32 \\ + \hline + Grid.8*4.400 & 8 & 4 &$400^3$ &32 \\ + \hline + Grid.8*8.400 & 8 & 8 &$400^3$ &64 \\ + \hline + Grid.4*4.500 & 4 & 4 &$500^3$ &16 \\ + \hline + Grid.4*8.500 & 4 & 8 &$500^3$ &32 \\ + \hline + Grid.8*4.500 & 8 & 4 &$500^3$ &32 \\ + \hline + Grid.8*8.500 & 8 & 8 &$500^3$ &64 \\ + \hline + \end{tabular} + \label{table:comp} +\end{table} + +This section focuses on the execution time and the energy consumed by +the MS application while running over the grid platform without using DVFS operations. +The energy consumption of the synchronous and asynchronous MS was +measured using the energy Equations \ref{eq:energy-grid} and \ref{eq:asyn_energy} respectively. +Figures \ref{fig:eng_time_ms} (a) and (b) show the energy consumption +and the execution time, respectively, of the multi-splitting application running over a heterogeneous grid +with different numbers of clusters and nodes per cluster. +The synchronous and the asynchronous versions of the MS application were executed over each scenario in Table \ref{table:comp}. +As shown in Figure \ref{fig:eng_time_ms} (a), the asynchronous MS consumes more +energy than the synchronous one. Indeed, the asynchronous application overlaps the asynchronous communications with computations and thus it executes more iterations than the synchronous one and has no slack times. More computations result in more dynamic energy consumption by the CPU in the asynchronous MS and since the dynamic power is chosen to be four times higher than the static power, the asynchronous MS method consumes more overall energy than the synchronous one. However, the execution times of the experiments, presented in Figure \ref{fig:eng_time_ms} (b), show that the execution times of the +asynchronous MS are smaller than the execution times of the synchronous one. Indeed, in the +asynchronous application the fast nodes do not have to wait for the slower ones to exchange data. So there are no slack times and more iterations are executed by fast nodes which accelerates the convergence to the final solution. + +\begin{figure}[!t] + \centering + \centering + \includegraphics[width=.80\textwidth]{fig/ch4/energy_ms.eps}\\~~~~~~(a)\\ + \includegraphics[width=.82\textwidth]{fig/ch4/time_ms.eps}\\~~~~~~~~(b) + \caption{(a) energy consumption and (b) execution time of multi-splitting application without applying the HSA algorithm} + \label{fig:eng_time_ms} +\end{figure} + + +The synchronous and asynchronous MS scale well. The execution times of both methods decrease linearly with the increase of the +number of computing nodes in the grid, whereas the energy consumption is approximately +the same when the number of computing nodes increases. Therefore, the energy consumption +of this application is not directly related to the number of computing nodes. + +\subsection{The results of the scaling factor selection algorithm} + \label{ch4:7:2} + The scaling factor selection algorithm~\ref{HSA-asyn} was applied to both + synchronous and asynchronous MS applications which were + executed over the 8 possible scenarios presented in table~\ref{table:comp}. + The DVFS algorithm \ref{dvfs} needs to send and receive some information before + calling the scaling factor selection algorithm algorithm~\ref{HSA-asyn}. The communications of the DVFS algorithm + can be applied synchronously or asynchronously which results in four different versions of the application: synchronous or asynchronous MS with synchronous or asynchronous DVFS communications. Figures \ref{fig:eng_time_dvfs} (a) and (b) present the energy consumption and the execution time for the four different versions of the application running on all the scenarios in Table \ref{table:comp}. + + + \begin{figure}[!t] + \centering + \centering + \includegraphics[width=.82\textwidth]{fig/ch4/energy_dvfs.eps}\\~~~~~~~(a)\\ + \includegraphics[width=.80\textwidth]{fig/ch4/time_dvfs.eps}\\~~~~~~~~(b) + \caption{(a) energy consumption and (b) execution time of different versions of the multi-splitting application after applying the HSA algorithm} + \label{fig:eng_time_dvfs} +\end{figure} + Figure \ref{fig:eng_time_dvfs} (a) shows that the energy + consumption of all four versions of the method, running over the 8 grid scenarios described in Table \ref{table:comp}, are not affected by the increase in the number of computing nodes. MS without applying DVFS operations had the same behavior. On the other hand, Figure \ref{fig:eng_time_dvfs} (b) shows that the execution time of the MS application with DVFS operations + decreases in inverse proportion to the number of nodes. Moreover, it can be noticed that the asynchronous MS with synchronous DVFS consumes less energy when compared to the other versions of the method. Two reasons explain this energy consumption reduction: + \begin{enumerate} + \item The asynchronous MS with synchronous DVFS version uses synchronous DVFS communications which allow it to apply the new computed frequencies at the begining of the second iteration. Thus, reducing the consumption of dynamic energy by the application from the second iteration until the end of the application. Whereas in + asynchronous DVFS versions where the DVFS communications are asynchronous, the new frequencies cannot be computed at the end of the first iteration and consequently cannot be applied at the begining of the second iteration. + Indeed, since the performance information gathered during the first iteration is not sent synchronously at the end of the first iteration, fast nodes might execute many iterations before receiving the performance information, computing the new frequencies based on this information and applying the new computed frequencies. Therefore, many iterations might be computed by CPUs running on their highest frequency and consuming more dynamic energy than scaled down processors. + +\item As shown in Figure \ref{fig:eng_time_ms} (b), the execution time of the asynchronous MS version is lower than the execution time of the synchronous MS version because there is no idle time in the asynchronous version and the communications are overlapped by computations. Since the consumption of static energy is proportional to the execution time, the asynchronous MS version consumes less static energy than the synchronous version. + + \end{enumerate} + + \begin{figure}[!t] + \centering + \includegraphics[scale=0.7]{fig/ch4/energy_saving.eps} + \caption{The energy saving percentages after applying the HSA algorithm to the different versions and scenarios} + \label{fig:energy_saving} +\end{figure} + + + The energy saving percentage is the ratio between the reduced energy consumption after applying the HSA algorithm and the original energy consumption of synchronous MS without DVFS. + Whereas, the performance degradation percentage is the ratio between the original execution time of the synchronous MS without DVFS and the new execution time after applying the HSA algorithm. +Therefore, in this section, the synchronous MS method without DVFS serves as a reference for comparison with the other methods for the following terms: energy saving, performance degradation and the distance between the two previous terms. + + In Figure \ref{fig:energy_saving}, the energy saving is computed for the four versions of the MS method which + are the synchronous or asynchronous MS that apply synchronously or asynchronously the HSA algorithm. + The fifth version is the asynchronous MS without any DVFS operations. Figure \ref{fig:energy_saving} shows that some versions have positive or negative energy saving percentages which means that the corresponding version respectively consumes less or more energy than the reference method. +As in Figure \ref{fig:eng_time_dvfs} (a) and for the same reasons presented above, the asynchronous MS with synchronous DVFS version gives the best energy saving percentage when compared to the other versions. + + + \begin{figure}[!t] + \centering + \includegraphics[scale=0.7]{fig/ch4/perf_degra.eps} + \caption{The results of the performance degradation} + \label{fig:perf_degr} +\end{figure} + + \begin{figure}[!t] + \centering + \includegraphics[scale=0.7]{fig/ch4/dist.eps} + \caption{The results of the tradeoff distance} + \label{fig:dist} +\end{figure} + +Figure \ref{fig:perf_degr} shows that some versions have negative performance +degradation percentages which means that the new execution time of a given version of the application is less than the execution time of the synchronous MS without DVFS. + Therefore, the version with the smallest negative performance degradation percentage has actually the best speed up when compared to the other versions. The version that gives the best execution time is the + asynchronous MS without DVFS which on average outperforms the synchronous MS without DVFS version by + $16.9\%$. While the worst case is the synchronous MS with synchronous DVFS where the performance is on average degraded by $2.9\%$ when compared to the reference method. + + + The energy consumption and performance tradeoff between these five versions is presented in Figure \ref{fig:dist}. + These distance values are computed as the differences between the energy saving + and the performance degradation percentages as in the optimization function + (\ref{eq:max-grid}). Thus, the best MS version is the one that has the maximum distance between the energy saving and performance degradation. The distance can be negative if the energy saving percentage is less than the performance degradation percentage. + The asynchronous MS applying synchronously the HSA algorithm gives the best distance which is on average equal to $27.72\%$. + This version saves on average up to $22\%$ of energy and on average speeds up the application by $5.72\%$. This overall improvement is due to combining asynchronous computing and the synchronous application of the HSA algorithm. + + +The two platform scenarios, Grid 4*8 and Grid 8*4, use the same +number of computing nodes but give different trade-off results. +The versions applying the HSA algorithm and running over the Grid 4*8 platform, give higher distance percentages than those running on the Grid 8*4 platform. In the Grid 8*4 platform scenario more clusters are used than in the Grid 4*8 platform and thus the global system is divided into 8 small subsystems instead of 4. Indeed, each subsystem is assigned to a cluster and synchronously solved by the nodes of that cluster. Dividing the global system into smaller subsystems, increases the number of outer iterations required for the global convergence of the system because for the multi-splitting system the more the system is decomposed the higher the spectral radius is. For example, the asynchronous MS, applying synchronously the HSA algorithm, requires on average 135 outer iterations when running over the Grid 4*8 platform and 148 outer iterations when running over the Grid 8*4 platform. The increase in the number of executed iterations over the Grid 8*4 platform justifies the increase in energy consumption by applications running over that platform. + + +\subsection{Comparing the number of iterations executed by the different MS versions} + \label{ch4:7:3} + + The heterogeneity in the computing power of the nodes in the grid has a direct + effect on the number of iterations executed by the nodes of each cluster when running an asynchronous iterative message passing method. The fast nodes execute more iterations than the slower ones because the iterations are not synchronized. + On the other hand, in the synchronous versions, all the nodes in all the clusters have the same number of iterations and have to wait for the slowest node to finish its iteration before starting the next iteration because the iterations are synchronized. + + When the fast nodes asynchronously execute more iterations than the slower ones, they consume more energy without significantly improving the global convergence of the system. Reducing the frequency of the fast nodes will decrease the number of iterations executed by them. If all the nodes, the fast and the slow ones, execute close numbers of iterations, the asynchronous application will consume less energy and its performance will not be significantly affected. + Therefore, applying the HSA algorithm over asynchronous applications is very promising. In this section, the number of iterations executed by the asynchronous MS method, while solving a 3D problem of size $400^3$ with and without applying the HSA algorithm, is evaluated. In Table \ref{table:sd}, the standard deviation of the number of iterations executed by the asynchronous application over all the grid platform scenarios, is presented. + + +\begin{table}[h] +\centering +\caption{The standard deviation of the numbers of iterations for different asynchronous MS versions running over different grid platforms} +\label{table:sd} +\begin{tabular}{|l|l|l|l|} +\hline +\multirow{2}{*}{\begin{tabular}[c]{@{}l@{}}Grid\\platform \end{tabular}} +& \multicolumn{3}{c|}{Standard deviation} \\ \cline{2-4} +& \begin{tabular}[c]{@{}l@{}}Asyn. MS without \\ HSA\end{tabular} +& \begin{tabular}[c]{@{}l@{}}Asyn. MS with \\ Asyn. HSA\end{tabular} +& \begin{tabular}[c]{@{}l@{}}Asyn. MS with \\ Syn. HSA\end{tabular} \\ \hline +Grid.4*4.400 & 60.43 & 13.86 & 1.12 \\ \hline +Grid.4*8.400 & 58.06 & 27.43 & 1.22 \\ \hline +Grid.8*4.400 & 50.97 & 20.76 & 1.15 \\ \hline +Grid.8*8.400 & 52.46 & 48.40 & 2.38 \\ \hline +\end{tabular} +\end{table} + +A small standard deviation value means that there is a very small difference between + the numbers of iterations executed by the nodes which means fast nodes did not uselessly execute more iterations than the slower ones and the application does not waste a lot of energy. As shown in Table \ref{table:sd}, + the asynchronous MS that applies synchronously the HSA algorithm has the best standard deviation value when compared to the other versions. Two reasons explain the advantage of this method: + \begin{enumerate} +\item The applied HSA algorithm selects new frequencies that reduce the computation power of the fast nodes while maintaining the computation power of the slower nodes. Therefore, it tries to balance as much as possible the computation powers of the heterogeneous nodes. + +\item Applying synchronously the HSA algorithm scales down the frequencies of the CPUs at the end of the first iteration of the application. Therefore the computation power of all the nodes is balanced as much as possible since the beginning of the application. On the other hand, applying asynchronously the HSA algorithm onto the asynchronous MS application only changes the frequencies of the nodes after executing many iterations. Therefore, before the frequencies are scaled down, the fast nodes have enough time to execute many more iterations than the slower ones and consequently increase the overall energy consumption of the application. + + \end{enumerate} + +Finally, the asynchronous MS version that does not apply the HSA algorithm gives the worst standard deviation values because there is a big difference between the numbers of iterations executed by the heterogeneous nodes. Therefore, this version consumes more energy than the other versions and thus saves less energy as shown in Figure \ref{fig:eng_time_dvfs} (a). + + +\subsection{Comparing different power scenarios} + \label{ch4:7:4} + + In the previous sections, all the results were obtained by assuming that the dynamic and the static powers are respectively equal to 80\% and 20\% of the total power consumed by a CPU during computation at its highest frequency. The goal + of this section is to evaluate the proposed frequency scaling factors selection algorithm when + these two power ratios are changed. Two new power scenarios are proposed in this section: + \begin{enumerate} +\item The dynamic and the static power are respectively equal to 90\% and 10\% of the total power consumed by a CPU during computation at its highest frequency. + \item The dynamic and the static power are respectively equal to 70\% and 30\% of the total power consumed by a CPU during computation at its highest frequency. + \end{enumerate} + The asynchronous MS method solving a 3D problem of size $400^3$ was executed over two + platform scenarios, the Grid 4*4 and Grid 8*4. Two versions of the asynchronous MS method, with synchronous or asynchronous application of the HSA algorithm, were evaluated on each platform scenario. + The energy saving, performance degradation and distance percentages for both versions over both platform + scenarios and with the three power scenarios are presented in Figures \ref{fig:three_power_syn} and \ref{fig:three_power_asyn}. + +\begin{figure}[!t] + \centering + \includegraphics[width=.7\textwidth]{fig/ch4/three_powers_syn.eps} +\caption{The results of the three power scenarios: Synchronous application of the HSA algorithm} +\label{fig:three_power_syn} +\end{figure} + +\begin{figure} + \centering + \includegraphics[width=.7\textwidth]{fig/ch4/three_powers_Asyn.eps} +\caption{The results of the three power scenarios: Asynchronous application of the HSA algorithm} +\label{fig:three_power_asyn} +\end{figure} + +\begin{figure}[!t] + \centering + \includegraphics[scale=.7]{fig/ch4/three_scenarios.pdf} + \caption{Comparison of the selected frequency scaling factors by the HSA algorithm for the three power scenarios} + \label{fig:three_scenarios} +\end{figure} + + + The displayed results are the average of the percentages obtained from multiple runs. + Both figures show that the \np[\%]{90}-\np[\%]{10} power scenario gives the biggest energy saving percentages. + The high dynamic power ratio pushes the HSA algorithm to select bigger scaling factors + which decreases exponentially the dynamic energy consumption. Figure \ref{fig:three_scenarios} shows that the HSA algorithm selects in the \np[\%]{90}-\np[\%]{10} power scenario higher frequency scaling factors than in the other power scenarios for the same application. Moreover, the \np[\%]{90}-\np[\%]{10} power scenario has the smallest static power consumption per CPU which reduces the effect of the performance degradation, due to scaling down the frequencies of the CPUs, on the total energy consumption of the application. Finally, the \np[\%]{90}-\np[\%]{10} power scenario gives higher distance percentages than the other two scenarios which means the difference between the energy reduction and the performance degradation percentages is the highest for this scenario. From these observations, it can be concluded that in a platform with CPUs that consume low static power and high dynamic power, a lot of energy consumption can be reduced by applying the HSA algorithm but the performance degradation might be significant. + +The energy saving percentages are the smallest with the \np[\%]{70}-\np[\%]{30} power scenario. The high static power consumption in this scenario force the HSA algorithm to select small scaling factors in order not to significantly decrease the performance of the application. Indeed, scaling down more the frequency of the CPUs will significantly increase the total execution time and consequently increase the static energy consumption which will outweigh the reduction of dynamic energy consumption. Finally, since the dynamic power consumption ratio is relatively small in this power scenario less dynamic energy reduction can be gained in lowering the frequencies of the CPUs than in the other power scenarios. On the other hand, the \np[\%]{70}-\np[\%]{30} power scenario's main advantage is that its performance suffers the least from the application of the HSA algorithm. From these observations, it can be concluded that in a high static power model just a small percentage of energy can be saved by applying the HSA algorithm. + +The asynchronous application of the HSA algorithm on average +improves the performance of the application more than the synchronous +application of the HSA algorithm. This difference can be explained by the fact that applying the HSA algorithm synchronously scales down the frequencies of the CPUs after the first iteration, while applying the HSA algorithm asynchronously scales them down after many iterations, depending on the heterogeneity of the platform. +However, for the same reasons as above, the synchronous application of the HSA algorithm reduces the energy consumption more than the asynchronous one even though, the method applying the first has a bigger execution time than the one applying the latter. + +\subsection{Comparing the HSA algorithm to the energy and delay product method} +\label{ch4:7:5} + +Many methods have been proposed to optimize the trade-off between the energy consumption and the performance of message passing applications. A well known optimization model used to solve this + problem is the energy and delay product, $\mathit{EDP}=\mathit{energy}\times \mathit{delay}$. +In \cite{ref100,ref60,ref55}, the researchers used equal weights for the energy and delay factors. +However, others added some weights to the factors in order to direct the optimization towards more energy saving or less performance degradation. For example, in ~\cite{ref71} they used the product $\mathit{EDP}=\mathit{energy}\times \mathit{delay}^2$ which favour performance over energy consumption reduction. + +In this work, the proposed scaling factors selection algorithm optimizes both the energy consumption and the performance at the same time and gives the same weight to both factors as in Equation \ref{eq:max-grid}. In this section, to evaluate the performance of the HSA algorithm, it is compared to the algorithm proposed by Spiliopoulos et al. \cite{ref67}. The latter is an online method that selects for each processor the frequency that minimizes the energy and delay product in order to reduce the energy consumption of a parallel application running over a homogeneous multi-cores platform. It gives the same weight to both metrics and predicts both the energy consumption and the execution time for each frequency gear as in the HSA algorithm. +To fairly compare the HSA algorithm with the algorithm of Spiliopoulos et al., the same energy models, Equation (\ref{eq:energy-grid}) or (\ref{eq:asyn_energy}), and execution time models, Equation (\ref{eq:perf-grid}) or (\ref{eq:asyn_perf}), are used to predict the energy consumptions and the execution times. + +The EDP objective function can be equal to zero when the predicted delay is equal to zero. Moreover, this product is equal to zero before applying any DVFS operation. To eliminate the zero values, the EDP function must take the following form: + + +\begin{equation} + \label{eq:EDP} + EDP = E_{Norm} \times (1+ D_{Norm}) +\end{equation} +where $E_{Norm}$ is the normalized energy consumption which is computed as in Equation (\ref{eq:enorm}) +and $D_{Norm}$ is the normalized delay of the execution time which is computed as follows: +\begin{equation} + \label{eq:Dnorm} + D_{Norm}= 1 -P_{Norm}= 1- (\frac{T_{old}}{T_{new}}) +\end{equation} +Where $P_{Norm}$ is computed as in Equation (\ref{eq:pnorm}). Furthermore, the EDP algorithm starts the search process from the initial frequencies that are computed as in Equation (\ref{eq:Fint}). It stops the search process when it reaches the minimum available frequency for each processor. The EDP algorithm was applied to the synchronous and asynchronous MS algorithm solving a 3D problem of size $400^3$. Two platform scenarios, Grid 4*4 and Grid 4*8, were chosen for this experiment. The EDP method was applied synchronously and asynchronously to the MS application as for the HSA algorithm. The comparison results of the EDP and HSA algorithms are presented in the Figures \ref{fig:compare_syndvfs_synms}, \ref{fig:compare_asyndvfs_asynms},\ref{fig:compare_asyndvfs_synms} and \ref{fig:compare_asyndvfs_asynms}. Each of these figures presents the energy saving, performance degradation and distance percentages for one version of the MS algorithm. The results shown in these figures are also the average of the results obtained from running each version of the MS method over the two platform scenarios described above. + + + + +\begin{figure}[!h] + \centering + \includegraphics[width=.7\textwidth]{fig/ch4/compare_syndvfs_synms.eps} + \caption{Synchronous application of the frequency scaling selection method on the synchronous MS version} + \label{fig:compare_syndvfs_synms} +\end{figure} +\begin{figure}[!h] + \centering + \includegraphics[width=.7\textwidth]{fig/ch4/compare_syndvfs_asynms.eps} + \caption{Synchronous application of the frequency scaling selection method on the asynchronous MS version} + \label{fig:compare_syndvfs_asynms} +\end{figure} +\begin{figure}[!h] + \centering + \includegraphics[width=.7\textwidth]{fig/ch4/compare_asyndvfs_synms.eps} + \caption{Asynchronous application of the frequency scaling selection method on the synchronous MS version} + \label{fig:compare_asyndvfs_synms} +\end{figure} +\begin{figure}[!h] + \centering + \includegraphics[width=.7\textwidth]{fig/ch4/compare_asyndvfs_asynms.eps} + \caption{Asynchronous application of the frequency scaling selection method on the asynchronous MS version} + \label{fig:compare_asyndvfs_asynms} +\end{figure} + + + + +All the figures show that the proposed HSA algorithm outperforms the EDP algorithm +in terms of energy saving and performance degradation. EDP gave for some scenarios negative trade-off values which mean that the performance degradation percentages are higher than +the energy saving percentages, while the HSA algorithm gives positive trade-off values over all scenarios. +The frequency scaling factors selected by the EDP are most of the time higher than those selected by the HSA algorithm as shown in Figure \ref{fig:three_methods}. +The results confirm that higher frequency scaling factors do not always give more energy saving, especially when the overall execution time is drastically increased. Therefore, the HSA method that computes the maximum distance between the energy saving and the performance degradation is an effective method to optimize these two metrics at the same time. + +\begin{figure}[h] + \centering + \includegraphics[scale=0.6]{fig/ch4/compare_scales.eps} + \caption{Comparison of the selected frequency scaling factors by the two algorithms + over the Grid 4*4 platform scenario} + \label{fig:three_methods} +\end{figure} + + + + +\section{The Experimental Results over Grid'5000} +\label{ch4:8} +The performance of algorithm ~(\ref{HSA-asyn}) was evaluated by + executing the iterative multi-splitting method on the Grid'5000 textbed \cite{ref21}. + This testbed is a large-scale platform that consists of ten sites distributed +all over metropolitan France and Luxembourg. Moreover, some sites are equipped with power measurement tools that capture the power consumption for each node on those sites. Same method for computing the dynamic power consumption described in section \ref{ch3:4} is used. +Table \ref{table:grid5000} presents the characteristics of the selected clusters which are located on four different sites. +\begin{table}[!t] + \caption{CPUs characteristics of the selected clusters} + % title of Table + \centering + \begin{tabular}{|*{7}{c|}} + \hline + Cluster & CPU & Max Freq. & Min Freq. & Diff. Freq. & Site & Dynamic power \\ + Name & model & GHz & GHz & GHz & & of one core \\ + \hline + Taurus & Intel & 2.3 & 1.2 & 0.1 & Lyon & \np[W]{35} \\ + & E5-2630 & & & & & \\ + \hline + Graphene & Intel & 2.53 & 1.2 & 0.133 & Nancy & \np[W]{23} \\ + & X3440 & & & & & \\ + \hline + Parapide & Inte & 2.93 & 1.6 & 0.133 & Rennes & \np[W]{23} \\ + & X5570 & & & & & \\ + \hline + StRemi & AMD & 1.7 & 0.8 & 0.2 & Reims & \np[W]{6} \\ + &6164 HE & & & & & \\ + \hline + \end{tabular} + \label{table:grid5000} +\end{table} +The dynamic power of each core with maximum frequency is computed as the difference between the measured power of the core, only when it is computing at maximum frequency, and the measured power of that core when it is idle as in \ref{eq:pdyn}. The CPUs' constructors do not specify the amount of static power their CPUs consume. Therefore, the static power consumption is assumed to be equal to \np[\%]{20} of the dynamic power consumption. +The experiments were conducted on problems of size $N=400^3$ and $N=500^3$ over 4 distributed clusters described in Table \ref{table:grid5000}. Each cluster is composed of 8 homogeneous nodes. + + +Algorithm~\ref{HSA-asyn} was applied synchronously and asynchronously to both synchronous and asynchronous MS applications. +Figures \ref{fig:time-compare} and \ref{fig:energy-compare} show the energy consumption and the execution time of the multi-splitting application with and without the application of the HSA algorithm respectively. +The asynchronous MS consumes more energy than the synchronous one. +Also, it can be noticed that both the asynchronous and synchronous MS with synchronous application of the HSA algorithm consume less energy than the other versions of the application. Synchronously applying the HSA algorithm allows them to scale down the CPUs' frequencies at the beginning of the second iteration. Thus, the consumption of dynamic energy by the application is reduced from the second iteration until the end of the application. On the contrary, with the asynchronous application of the HSA algorithm, the new frequencies cannot be computed at the end of the first iteration and consequently cannot be applied at the beginning of the second iteration. Indeed, since the performance information gathered during the first iteration is not sent synchronously at the end of the first iteration, fast nodes might execute many iterations before receiving the performance information, computing the new frequencies based on this information and applying the new computed frequencies. Therefore, many iterations might be computed by CPUs running on their highest frequency and consuming more dynamic energy than the scaled down processors. +Moreover, the execution time of the asynchronous MS version is lower than the execution time of the synchronous MS version because there is no idle time in the asynchronous version and the communications are overlapped by computations. Since the consumption of static energy is proportional to the execution time, the asynchronous MS version consumes less static energy than the synchronous version. + +\begin{figure}[!t] + \centering + \includegraphics[width=.8\textwidth]{fig/ch4/time-compare.eps} + \caption{ Comparing the execution time} + \label{fig:time-compare} + \end{figure} + +\begin{figure}[!t] + \centering + \includegraphics[width=.8\textwidth]{fig/ch4/energy-compare.eps} + \caption{ Comparing the energy consumption} + \label{fig:energy-compare} + \end{figure} + + +\begin{table}[] +\centering +\begin{tabular}{|l|l|l|l|l|} +\hline +Size & Method &\begin{tabular}[c]{@{}l@{}}Energy\\ saving \%\end{tabular} & \begin{tabular}[c]{@{}l@{}}Perf. \\ degra.\%\end{tabular} & Distance \\ \hline +\multirow{4}{*}{400} & Sync MS with Sync DVFS & 23.16 & 4.12 & 19.04 \\ \cline{2-5} + & Sync MS with Async DVFS & 18.36 & 2.59 & 15.77 \\ \cline{2-5} + & Async MS with Sync DVFS & 26.93 & -21.48 & 48.41 \\ \cline{2-5} + & Async MS with Async DVFS & 14.9 & -26.41 & 41.31 \\ \hline +\multirow{4}{*}{500} & Sync MS with Sync DVFS & 24.57 & 3.15 & 21.42 \\ \cline{2-5} + & Sync MS with Async DVFS & 19.97 & 0.60 & 19.37 \\ \cline{2-5} + & Async MS with Sync DVFS & 20.69 & -10.95 & 31.64 \\ \cline{2-5} + & Async MS with Async DVFS & 9.06 & -18.22 & 27.28 \\ \hline +\end{tabular} +\caption{The experimental results of HSA algorithm} +\label{table:exper} +\end{table} + +Table \ref{table:exper} shows that there are positive and negative performance +degradation percentages. A negative value means that the new execution time of a given version of the application is less than the execution time of the synchronous MS without DVFS. + Therefore, the version with the smallest negative performance degradation percentage has actually the best speed up when compared to the other versions. + The energy consumption and performance tradeoffs between these four versions can be computed as in the optimization Function + (\ref{eq:max-grid}). The asynchronous MS applying synchronously the HSA algorithm gives the best distance which is equal to $48.41\%$. + This version saves up to $26.93\%$ of energy and even reduces the execution time of the application by + $21.48\%$. This overall improvement is due to combining asynchronous computing and the synchronous application of the HSA algorithm. + + + + +Finally, this section shows that the obtained results over Grid'5000 are comparable to +simulation results of section \ref{ch4:7:2}, where the asynchronous MS applying synchronously the HSA algorithm is the best version in both of them. Moreover, results of Grid'5000 are better +than simulation ones because its computing clusters are more heterogeneous in term of the computing power and network characteristics. For example, the StRemi cluster has smaller computing power compared to others three clusters of Grid'5000 platform. +As a result, The increase in the idle times forces the proposed algorithm to select a big scaling factors and thus more energy saving. + + + + +\subsection{Comparing the HSA algorithm to the energy and delay product method} +\label{res-comp} + +The EDP algorithm, described in section \ref{ch4:7:5}, was applied synchronously and asynchronously to both the synchronous and asynchronous MS application of size $N=400^3$. The experiments were conducted over 4 distributed clusters, described in Table \ref{table:grid5000}, and 8 homogeneous nodes were used from each cluster. +Table \ref{table:comapre} presents the results of energy saving, performance degradation and distance percentages when applying the EDP method on four different MS versions. +Figure \ref{fig:compare} compares the distance percentages, computed as the difference between energy saving and performance degradation percentages, of the EDP and HSA +algorithms. This comparison shows that the proposed HSA algorithm gives better energy reduction and performance trade-off than the EDP method. The results of EDP method over Grid'5000 are better than those for EDP obtained by the simulation according to the increase in the heterogeneity between the computing clusters of Grid'5000 as mentioned before. + +\begin{table} +\centering +\caption{The EDP algorithm results over the Grid'5000} +\label{table:comapre} +\begin{tabular}{|l|l|l|l|} +\hline +Method name & Energy saving \% & Perf. degra.\% & Distance \% \\ \hline +Sync MS with Sync DVFS & 21.83 & 12.78 & 9.05 \\ \hline +Sync MS with Async DVFS & 18.26 & 7.68 & 10.58 \\ \hline +Async MS with Sync DVFS & 24.95 & -12.24 & 37.19 \\ \hline +Async MS with Async DVFS & 10.32 & -17.04 & 27.36 \\ \hline +\end{tabular} +\end{table} + +\begin{figure}[!h] + \centering + \includegraphics[scale=0.65]{fig/ch4/compare.eps} + \caption{Comparing the trade-off percentages of HSA and EDP methods over the Grid'5000} + \label{fig:compare} +\end{figure} + + + +\section{Conclusions} + \label{ch4:9} + +This chapter presents a new online frequency selection algorithm for asynchronous iterative +applications running over a grid. It selects the best vector of frequencies that maximizes +the distance between the predicted energy consumption and the predicted execution time. +The algorithm uses new +energy and performance models to predict the energy consumption and the execution time of asynchronous or hybrid message passing iterative applications running over grids. +The proposed algorithm was evaluated twice over the SimGrid simulator and Grid'5000 testbed while running a multi-splitting (MS) application that solves 3D problems. +The experiments were executed over different + grid scenarios composed of different numbers of clusters and different numbers of nodes per cluster. + The HSA algorithm was applied synchronously and asynchronously on a synchronous and an asynchronous version of the MS application. Both the simulation and real experiment results show that applying synchronous HSA algorithm on an asynchronous MS application gives the best tradeoff between energy consumption reduction and performance compared to other scenarios. +In the simulation results, this scenario saves on average the energy consumption by 22\% and reduces the execution time of the application by 5.72\%. This version optimizes both of the dynamic energy consumption by applying synchronously the HSA algorithm at the end of the first iteration and the static energy consumption by using asynchronous communications between nodes from different clusters which are overlapped by computations. The HSA algorithm was also evaluated over three power scenarios. As expected, the algorithm selects different vectors of frequencies for each power scenario. The highest energy consumption reduction was achieved in the power scenario with the highest dynamic power and the lowest performance degradation was obtained in the power scenario with the highest static power. +The proposed algorithm was compared to another method that +uses the well known energy and delay product as an objective function. +The comparison results showed that the proposed algorithm outperforms the latter +by selecting a vector of frequencies that gives a better trade-off between the energy +consumption reduction and the performance. + +The experiments conducted over Grid'5000 were showed that applying the synchronous HSA algorithm on an asynchronous MS application saves the energy consumption by 26.93\% and reduces the execution time of the application by 21.48\%. On the other hand, these results are better than simulation ones, according to the increase in the heterogeneity level between the clusters of Grid'5000 compared to the simulated grid platform. \ No newline at end of file diff --git a/Thesis.tex b/Thesis.tex index d402442..3f4a3ae 100644 --- a/Thesis.tex +++ b/Thesis.tex @@ -36,7 +36,7 @@ %\addcontentsline{toc}{chapter}{List of Abbreviations} %% tr -\include{ACRONYMS} +%\include{ACRONYMS} \include{Dedication} @@ -70,7 +70,7 @@ \setlength{\parindent}{0cm} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Publications \include{PUBLICATIONS} diff --git a/fig/ch3/eng_con-eps-converted-to.pdf b/fig/ch3/eng_con-eps-converted-to.pdf index 638625214a896e9d898eab1fd73db6575df2351f..0aad3152158f492450fec30a095c1a62b0f034cb 100644 GIT binary patch delta 5577 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 B5j_9^ diff --git a/fig/ch3/eng_con.eps b/fig/ch3/eng_con.eps index 814faa1..6600740 100644 --- a/fig/ch3/eng_con.eps +++ b/fig/ch3/eng_con.eps @@ -1,6 +1,6 @@ %!PS-Adobe-2.0 %%Creator: gnuplot 4.6 patchlevel 6 -%%CreationDate: Thu Oct 22 17:46:42 2015 +%%CreationDate: Tue May 24 10:35:14 2016 %%DocumentFonts: (atend) %%BoundingBox: 50 50 554 410 %%Orientation: Portrait @@ -506,7 +506,7 @@ SDict begin [ /Author (afanfakh) % /Producer (gnuplot) % /Keywords () - /CreationDate (Thu Oct 22 17:46:42 2015) + /CreationDate (Tue May 24 10:35:14 2016) /DOCINFO pdfmark end } ifelse @@ -534,294 +534,246 @@ stroke ] -50.0 MRshow 1.000 UL LTb -803 414 M +803 427 M 31 0 V 4007 0 R -31 0 V -803 477 M +803 502 M 31 0 V 4007 0 R -31 0 V -803 539 M +803 576 M 31 0 V 4007 0 R -31 0 V -803 601 M +803 651 M 31 0 V 4007 0 R -31 0 V -803 664 M +803 726 M 63 0 V 3975 0 R -63 0 V stroke -737 664 M +737 726 M [ [(Helvetica) 150.0 0.0 true true 0 ( 300000)] ] -50.0 MRshow 1.000 UL LTb -803 726 M +803 801 M 31 0 V 4007 0 R -31 0 V -803 788 M +803 875 M 31 0 V 4007 0 R -31 0 V -803 851 M +803 950 M 31 0 V 4007 0 R -31 0 V -803 913 M +803 1025 M 31 0 V 4007 0 R -31 0 V -803 975 M +803 1100 M 63 0 V 3975 0 R -63 0 V stroke -737 975 M +737 1100 M [ [(Helvetica) 150.0 0.0 true true 0 ( 600000)] ] -50.0 MRshow 1.000 UL LTb -803 1038 M +803 1175 M 31 0 V 4007 0 R -31 0 V -803 1100 M +803 1249 M 31 0 V 4007 0 R -31 0 V -803 1162 M +803 1324 M 31 0 V 4007 0 R -31 0 V -803 1224 M +803 1399 M 31 0 V 4007 0 R -31 0 V -803 1287 M +803 1474 M 63 0 V 3975 0 R -63 0 V stroke -737 1287 M +737 1474 M [ [(Helvetica) 150.0 0.0 true true 0 ( 900000)] ] -50.0 MRshow 1.000 UL LTb -803 1349 M +803 1549 M 31 0 V 4007 0 R -31 0 V -803 1411 M +803 1623 M 31 0 V 4007 0 R -31 0 V -803 1474 M +803 1698 M 31 0 V 4007 0 R -31 0 V -803 1536 M +803 1773 M 31 0 V 4007 0 R -31 0 V -803 1598 M +803 1848 M 63 0 V 3975 0 R -63 0 V stroke -737 1598 M +737 1848 M [ [(Helvetica) 150.0 0.0 true true 0 ( 1.2e+06)] ] -50.0 MRshow 1.000 UL LTb -803 1661 M +803 1922 M 31 0 V 4007 0 R -31 0 V -803 1723 M +803 1997 M 31 0 V 4007 0 R -31 0 V -803 1785 M +803 2072 M 31 0 V 4007 0 R -31 0 V -803 1848 M +803 2147 M 31 0 V 4007 0 R -31 0 V -803 1910 M +803 2222 M 63 0 V 3975 0 R -63 0 V stroke -737 1910 M +737 2222 M [ [(Helvetica) 150.0 0.0 true true 0 ( 1.5e+06)] ] -50.0 MRshow 1.000 UL LTb -803 1972 M +803 2296 M 31 0 V 4007 0 R -31 0 V -803 2035 M +803 2371 M 31 0 V 4007 0 R -31 0 V -803 2097 M +803 2446 M 31 0 V 4007 0 R -31 0 V -803 2159 M +803 2521 M 31 0 V 4007 0 R -31 0 V -803 2222 M +803 2596 M 63 0 V 3975 0 R -63 0 V stroke -737 2222 M +737 2596 M [ [(Helvetica) 150.0 0.0 true true 0 ( 1.8e+06)] ] -50.0 MRshow 1.000 UL LTb -803 2284 M +803 2670 M 31 0 V 4007 0 R -31 0 V -803 2346 M +803 2745 M 31 0 V 4007 0 R -31 0 V -803 2409 M +803 2820 M 31 0 V 4007 0 R -31 0 V -803 2471 M +803 2895 M 31 0 V 4007 0 R -31 0 V -803 2533 M +803 2969 M 63 0 V 3975 0 R -63 0 V stroke -737 2533 M +737 2969 M [ [(Helvetica) 150.0 0.0 true true 0 ( 2.1e+06)] ] -50.0 MRshow 1.000 UL LTb -803 2596 M +803 3044 M 31 0 V 4007 0 R -31 0 V -803 2658 M +803 3119 M 31 0 V 4007 0 R -31 0 V -803 2720 M +803 3194 M 31 0 V 4007 0 R -31 0 V -803 2782 M +803 3269 M 31 0 V 4007 0 R -31 0 V -803 2845 M +803 3343 M 63 0 V 3975 0 R -63 0 V stroke -737 2845 M +737 3343 M [ [(Helvetica) 150.0 0.0 true true 0 ( 2.4e+06)] ] -50.0 MRshow 1.000 UL LTb -803 2907 M +803 3418 M 31 0 V 4007 0 R -31 0 V -803 2969 M -31 0 V -4007 0 R --31 0 V -803 3032 M -31 0 V -4007 0 R --31 0 V -803 3094 M -31 0 V -4007 0 R --31 0 V -803 3156 M -63 0 V -3975 0 R --63 0 V -stroke -737 3156 M -[ [(Helvetica) 150.0 0.0 true true 0 ( 2.7e+06)] -] -50.0 MRshow -1.000 UL -LTb -803 3219 M -31 0 V -4007 0 R --31 0 V -803 3281 M -31 0 V -4007 0 R --31 0 V -803 3343 M -31 0 V -4007 0 R --31 0 V -803 3406 M -31 0 V -4007 0 R --31 0 V -803 3468 M -63 0 V -3975 0 R --63 0 V -stroke -737 3468 M -[ [(Helvetica) 150.0 0.0 true true 0 ( 3e+06)] -] -50.0 MRshow -1.000 UL -LTb -803 352 M +1308 352 M 0 63 V 0 3053 R 0 -63 V stroke -803 242 M +1466 242 M [ [(Helvetica) 150.0 0.0 true true 0 (CG)] -] -50.0 MCshow +] -50.0 MRshow 1.000 UL LTb -1476 352 M +1813 352 M 0 63 V 0 3053 R 0 -63 V stroke -1476 242 M +1971 242 M [ [(Helvetica) 150.0 0.0 true true 0 (MG)] -] -50.0 MCshow +] -50.0 MRshow 1.000 UL LTb -2149 352 M +2317 352 M 0 63 V 0 3053 R 0 -63 V stroke -2149 242 M +2475 242 M [ [(Helvetica) 150.0 0.0 true true 0 (EP)] -] -50.0 MCshow +] -50.0 MRshow 1.000 UL LTb 2822 352 M @@ -829,39 +781,39 @@ LTb 0 3053 R 0 -63 V stroke -2822 242 M +2980 242 M [ [(Helvetica) 150.0 0.0 true true 0 (LU)] -] -50.0 MCshow +] -50.0 MRshow 1.000 UL LTb -3495 352 M +3327 352 M 0 63 V 0 3053 R 0 -63 V stroke -3495 242 M +3485 242 M [ [(Helvetica) 150.0 0.0 true true 0 (BT)] -] -50.0 MCshow +] -50.0 MRshow 1.000 UL LTb -4168 352 M +3832 352 M 0 63 V 0 3053 R 0 -63 V stroke -4168 242 M +3990 242 M [ [(Helvetica) 150.0 0.0 true true 0 (SP)] -] -50.0 MCshow +] -50.0 MRshow 1.000 UL LTb -4841 352 M +4336 352 M 0 63 V 0 3053 R 0 -63 V stroke -4841 242 M +4494 242 M [ [(Helvetica) 150.0 0.0 true true 0 (FT)] -] -50.0 MCshow +] -50.0 MRshow 1.000 UL LTb 1.000 UL @@ -888,58 +840,38 @@ LTb 1.000 UL LTb % Begin plot #1 -1.000 UP 1.000 UL LT0 0.10 0.10 0.44 C LCb setrgbcolor -2767 3298 M +2666 3277 M [ [(Helvetica) 140.0 0.0 true true 0 (One core per node scenario)] ] -46.7 MRshow LT0 -0.10 0.10 0.44 C 2833 3298 M -327 0 V -803 768 M -1476 427 L -673 92 V -673 625 V -3495 610 L -673 1288 V -4841 705 L -803 768 Pls -1476 427 Pls -2149 519 Pls -2822 1144 Pls -3495 610 Pls -4168 1898 Pls -4841 705 Pls -2996 3298 Pls +0.10 0.10 0.44 C 1.000 2732 3244 327 66 BoxColFill +0.10 0.10 0.44 C 1.000 1257 352 102 500 BoxColFill +0.10 0.10 0.44 C 1.000 1762 352 102 91 BoxColFill +0.10 0.10 0.44 C 1.000 2267 352 102 202 BoxColFill +0.10 0.10 0.44 C 1.000 2772 352 101 952 BoxColFill +0.10 0.10 0.44 C 1.000 3276 352 102 310 BoxColFill +0.10 0.10 0.44 C 1.000 3781 352 102 1856 BoxColFill +0.10 0.10 0.44 C 1.000 4286 352 102 425 BoxColFill % End plot #1 % Begin plot #2 -1.000 UP 1.000 UL LT1 -1.00 0.00 0.00 C LCb setrgbcolor -2767 3166 M +0.94 0.50 0.50 C LCb setrgbcolor +2666 3145 M [ [(Helvetica) 140.0 0.0 true true 0 (Multicores per node scenario)] ] -46.7 MRshow LT1 -1.00 0.00 0.00 C 2833 3166 M -327 0 V -803 1231 M -1476 494 L -673 48 V -673 355 V -3495 718 L -673 2118 V -4841 631 L -803 1231 Crs -1476 494 Crs -2149 542 Crs -2822 897 Crs -3495 718 Crs -4168 2836 Crs -4841 631 Crs -2996 3166 Crs +0.94 0.50 0.50 C 1.000 2732 3112 327 66 BoxColFill +0.94 0.50 0.50 C 1.000 1383 352 102 1056 BoxColFill +0.94 0.50 0.50 C 1.000 1888 352 102 172 BoxColFill +0.94 0.50 0.50 C 1.000 2393 352 102 229 BoxColFill +0.94 0.50 0.50 C 1.000 2898 352 102 654 BoxColFill +0.94 0.50 0.50 C 1.000 3402 352 102 440 BoxColFill +0.94 0.50 0.50 C 1.000 3907 352 102 2982 BoxColFill +0.94 0.50 0.50 C 1.000 4412 352 102 336 BoxColFill % End plot #2 1.000 UL LTb diff --git a/fig/ch3/eng_con_scenarios-eps-converted-to.pdf b/fig/ch3/eng_con_scenarios-eps-converted-to.pdf index ff5a6903d3a5b01535b8b7386de4ca5fbeee89ef..3ba0f31fdc3272e7cd17aa8707451965aa429717 100644 GIT binary patch delta 10506 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 H9QgkL-+sV_ delta 2595 zcma)3c{tQ-15Jbx6+)uhD3Q!CzuzooCdR&nT&}Xz$XF&aQ8l`UQ-h>L<(T3ftl75mZLK;I z!SPUB^$!ixYp{3NVUCiR(2cF7y|4da%84%$+v_wOE01`kEdi_ScN-k(8<4_zGeT8P zbcKCgqWG*6?{GXEOdj0dezFFj1By`^D$x zZz%&Yrw7BeeR)Ty4`GZ!Cfk7Y@Wy;C2Cw|RL)VrzUF4(QW2U+`r$WsN;S1kR+CDpLCDYHL1#1T1Eg@c?e{0BFP zzxAhGt)M)RR{dAc4zz3^Ikgbql~W*>&9pSSyWwrJ4384X{&-i!@e-HfF!-7b#;$tN zwxy@}sZeQI(W0xbmJ2LJA2MDcnlvrK)wNnGUlkNOND|!R9Sat9J|q*G zssr<)31eaT56g_W4fd=N_!wu>9l1kv~@hBWTf~t5dHZ zm#+-Ec7CpPowzr}00K{0YjViHEIl?j*_kwGP_3`8uXp`~Ue(xFMtJl`E?kb3bWWYn z6}(K>SmaeTFJElnNEv$)VGRq$M8i{3b(1q+=G&;umZ7TTdEpR`d3AmQ11a1^J_b8M z7-i?>zVIwVUa;etT}w%ZG!-;GdvmcZfY%Ub(R-Xy>VdZQfGjK839nsGSs=l?iv{^+ zrQO-Nd>xBi_LvqJ@E7XTYtt<28n7eL#3kG9xg~4z96jqK%JA~;^ktC8*0ofehTFJa zGQ6`zzb&yeBhQD~S=pW0{4EFzKFpbh~it5gA9Eq zo5&T*PXZImd?U}-FA60xHyNsM(=S^(D?tKgG49knwxxKL?bASm-rnrJO_g;sAM++M zWHSVGp-s<&jAl|!(LkgF>9F%`jgj{TRoP2f&gdf&CL!qiXG_9Di>r;MHHmrp={%bu z2FqAPV2T(D4Oy^&)IK@VA3e@Di}Z_K_C+5HK6G~Pxp{x_jyo}(ujI=$BLW?(juK3& zA-2tHQQfvNk&bqR^6e|xlY-!$>mIlAS)*<*S$V#HZ}5I1rpt}28I3sjCD`O5t&tn- zQOC=4Xzskez=}E4n;yp5k*ENpTg48U6gqS( zb@8QwnvMxXHt#`DiW}DBTo15XU(VCy=JS$5UCF!B|A zpnuQwL$#{uT@I^PGn(mpx387-7efTzRBwA>o7qZGh_P;Sp5m3&VIvNP8QK?9|F)i8 zuhpCW?1(E((cYiSQ;3YDmAX;Sz-G1En872LqBd9re^{}nyiH){$M$vK73e1aF`mOt z;S05>`3{+=m@c%N1G6aGQjZO-ohllu) QWw2N*AhU0urK6S1Kl_e+Z2$lO diff --git a/fig/ch3/eng_con_scenarios.eps b/fig/ch3/eng_con_scenarios.eps index 7feac40..346571b 100644 --- a/fig/ch3/eng_con_scenarios.eps +++ b/fig/ch3/eng_con_scenarios.eps @@ -1,6 +1,6 @@ %!PS-Adobe-2.0 %%Creator: gnuplot 4.6 patchlevel 6 -%%CreationDate: Thu Oct 22 12:39:18 2015 +%%CreationDate: Tue May 24 10:13:23 2016 %%DocumentFonts: (atend) %%BoundingBox: 50 50 554 410 %%Orientation: Portrait @@ -506,7 +506,7 @@ SDict begin [ /Author (afanfakh) % /Producer (gnuplot) % /Keywords () - /CreationDate (Thu Oct 22 12:39:18 2015) + /CreationDate (Tue May 24 10:13:23 2016) /DOCINFO pdfmark end } ifelse @@ -746,32 +746,32 @@ LTb 31 0 V 4007 0 R -31 0 V -803 352 M +1308 352 M 0 63 V 0 3053 R 0 -63 V stroke -803 242 M +1308 242 M [ [(Helvetica) 150.0 0.0 true true 0 (CG)] ] -50.0 MCshow 1.000 UL LTb -1476 352 M +1813 352 M 0 63 V 0 3053 R 0 -63 V stroke -1476 242 M +1813 242 M [ [(Helvetica) 150.0 0.0 true true 0 (MG)] ] -50.0 MCshow 1.000 UL LTb -2149 352 M +2317 352 M 0 63 V 0 3053 R 0 -63 V stroke -2149 242 M +2317 242 M [ [(Helvetica) 150.0 0.0 true true 0 (EP)] ] -50.0 MCshow 1.000 UL @@ -786,32 +786,32 @@ stroke ] -50.0 MCshow 1.000 UL LTb -3495 352 M +3327 352 M 0 63 V 0 3053 R 0 -63 V stroke -3495 242 M +3327 242 M [ [(Helvetica) 150.0 0.0 true true 0 (BT)] ] -50.0 MCshow 1.000 UL LTb -4168 352 M +3832 352 M 0 63 V 0 3053 R 0 -63 V stroke -4168 242 M +3832 242 M [ [(Helvetica) 150.0 0.0 true true 0 (SP)] ] -50.0 MCshow 1.000 UL LTb -4841 352 M +4336 352 M 0 63 V 0 3053 R 0 -63 V stroke -4841 242 M +4336 242 M [ [(Helvetica) 150.0 0.0 true true 0 (FT)] ] -50.0 MCshow 1.000 UL @@ -840,112 +840,72 @@ LTb 1.000 UL LTb % Begin plot #1 -1.000 UP 1.000 UL LT0 0.10 0.10 0.44 C LCb setrgbcolor -2228 3277 M -[ [(Helvetica) 140.0 0.0 true true 0 (One site/ 16 nodes)] +2262 3277 M +[ [(Helvetica) 140.0 0.0 true true 0 (One site / 16 nodes)] ] -46.7 MRshow LT0 -0.10 0.10 0.44 C 2294 3277 M -327 0 V -803 804 M -1476 430 L -673 152 V -673 1594 V -673 -817 V -673 683 V -4841 731 L -803 804 Pls -1476 430 Pls -2149 582 Pls -2822 2176 Pls -3495 1359 Pls -4168 2042 Pls -4841 731 Pls -2457 3277 Pls +0.10 0.10 0.44 C 2328 3244 327 66 40 45 2 PatternFill +0.10 0.10 0.44 C 1190 352 68 453 40 45 2 PatternFill +0.10 0.10 0.44 C 1695 352 68 79 40 45 2 PatternFill +0.10 0.10 0.44 C 2199 352 69 231 40 45 2 PatternFill +0.10 0.10 0.44 C 2704 352 69 1825 40 45 2 PatternFill +0.10 0.10 0.44 C 3209 352 68 1008 40 45 2 PatternFill +0.10 0.10 0.44 C 3714 352 68 1691 40 45 2 PatternFill +0.10 0.10 0.44 C 4218 352 69 380 40 45 2 PatternFill % End plot #1 % Begin plot #2 -1.000 UP 1.000 UL LT1 -1.00 0.00 0.00 C LCb setrgbcolor -2228 3145 M -[ [(Helvetica) 140.0 0.0 true true 0 (One site/ 32 nodes)] +0.10 0.10 0.44 C LCb setrgbcolor +2262 3145 M +[ [(Helvetica) 140.0 0.0 true true 0 (One site / 32 nodes)] ] -46.7 MRshow LT1 -1.00 0.00 0.00 C 2294 3145 M -327 0 V -803 851 M -1476 442 L -673 111 V -673 750 V -3495 661 L -673 1546 V -4841 776 L -803 851 Crs -1476 442 Crs -2149 553 Crs -2822 1303 Crs -3495 661 Crs -4168 2207 Crs -4841 776 Crs -2457 3145 Crs +0.10 0.10 0.44 C 1.000 2328 3112 327 66 BoxColFill +0.10 0.10 0.44 C 1.000 1274 352 68 500 BoxColFill +0.10 0.10 0.44 C 1.000 1779 352 68 91 BoxColFill +0.10 0.10 0.44 C 1.000 2284 352 68 202 BoxColFill +0.10 0.10 0.44 C 1.000 2788 352 69 952 BoxColFill +0.10 0.10 0.44 C 1.000 3293 352 68 310 BoxColFill +0.10 0.10 0.44 C 1.000 3798 352 68 1856 BoxColFill +0.10 0.10 0.44 C 1.000 4303 352 68 425 BoxColFill % End plot #2 % Begin plot #3 -1.000 UP 1.000 UL -LT2 +LT0 0.00 0.39 0.00 C LCb setrgbcolor -2228 3013 M -[ [(Helvetica) 140.0 0.0 true true 0 (Two sites/ 16 nodes)] +2262 3013 M +[ [(Helvetica) 140.0 0.0 true true 0 (Two sites / 16 nodes)] ] -46.7 MRshow -LT2 -0.00 0.39 0.00 C 2294 3013 M -327 0 V -803 1202 M -1476 475 L -673 78 V -673 1763 V -673 -909 V -673 1111 V -4841 1228 L -803 1202 Star -1476 475 Star -2149 553 Star -2822 2316 Star -3495 1407 Star -4168 2518 Star -4841 1228 Star -2457 3013 Star +LT0 +0.00 0.39 0.00 C 2328 2980 327 66 80 -45 1 PatternFill +0.00 0.39 0.00 C 1358 352 69 851 80 -45 1 PatternFill +0.00 0.39 0.00 C 1863 352 68 124 80 -45 1 PatternFill +0.00 0.39 0.00 C 2368 352 68 202 80 -45 1 PatternFill +0.00 0.39 0.00 C 2872 352 69 1965 80 -45 1 PatternFill +0.00 0.39 0.00 C 3377 352 69 1056 80 -45 1 PatternFill +0.00 0.39 0.00 C 3882 352 68 2167 80 -45 1 PatternFill +0.00 0.39 0.00 C 4387 352 68 877 80 -45 1 PatternFill % End plot #3 % Begin plot #4 -1.000 UP 1.000 UL LT3 -0.72 0.53 0.04 C LCb setrgbcolor -2228 2881 M -[ [(Helvetica) 140.0 0.0 true true 0 (Two sites/ 32 nodes)] +0.94 0.50 0.50 C LCb setrgbcolor +2262 2881 M +[ [(Helvetica) 140.0 0.0 true true 0 (Two sites / 32 nodes)] ] -46.7 MRshow LT3 -0.72 0.53 0.04 C 2294 2881 M -327 0 V -803 1704 M -1476 504 L -673 45 V -673 1278 V -673 -69 V -673 1532 V -4841 1258 L -803 1704 Box -1476 504 Box -2149 549 Box -2822 1827 Box -3495 1758 Box -4168 3290 Box -4841 1258 Box -2457 2881 Box +0.94 0.50 0.50 C 1.000 2328 2848 327 66 BoxColFill +0.94 0.50 0.50 C 1.000 1442 352 69 1353 BoxColFill +0.94 0.50 0.50 C 1.000 1947 352 68 153 BoxColFill +0.94 0.50 0.50 C 1.000 2452 352 68 198 BoxColFill +0.94 0.50 0.50 C 1.000 2957 352 68 1476 BoxColFill +0.94 0.50 0.50 C 1.000 3461 352 69 1407 BoxColFill +0.94 0.50 0.50 C 1.000 3966 352 68 2939 BoxColFill +0.94 0.50 0.50 C 1.000 4471 352 68 907 BoxColFill % End plot #4 1.000 UL LTb diff --git a/fig/ch3/time-eps-converted-to.pdf b/fig/ch3/time-eps-converted-to.pdf index 6fabefc023bee0fec4f5552146f65934938ce383..0ec4f2edea78ecb09689aa5b0615f58bfd435090 100644 GIT binary patch delta 4784 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 delta 5258 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%0A9-;kHyj-+-+S$NCoLt?3Zg zF28vnzep$Pb?U>RXldoVD4nqpwn!3XF6(D?@VT<=%CQw1Hw68w+4I9#p9!xuu6t}e zJiLPzD82u^_j||28?45!-I%m4=8xyp^b)c}GhU-7Evv(rYta}Hc(m zCD4nFU7}Bc+1XDjWn~C?vO)S&jAWYI(lrGM0=sxh=>~778!tPbEFE~}%=y0RRlenP zFo(1A8x?HV73z@Ire<7z{8oi}2<9w$G+sR$51h<95K;%;VQEyuL&6$`$SR1xWMFS< z$7(V9?BAEgJ*!iE*gklO7h+fIlw(@T)c(~@9-VPV{tmE|^}Z=em{rPiZTW2F@dgDk zjN$0r6m-}H$G_!FNetHhUH9D7!eUwSi}twQ;-qhdp2)_}0#&{(=2fffFS=FvYnM7r zB|tG=OL)5Vue>}}@1vvDd+x5K2`zk;TzH+Z(g(r6Q7zj9U@t9<(X-MGdm-kFTf#R5 zpU3)NV}kHie8c1msjUvN#}+WzzTG#*JC`=1wIvy-}DOnHL?|zu_4F~F1=doP(Hg%q~5)aE`Lx(2L^Uv2X1yVyo za28;uG_-N-H}hZ7#U;~DBW&()fbyww_Jr9~Vb&9)oEx&DWJ`<@FiNS&@dknlOuP4J zhcZ1#+o$C(e{f%}gkUv6W%%n!V#{3l!$2O_Hc$8&ry^-0KKAMNXT>HqJ}sF{(Llk+ z8TEA|%C~b0*4=f%e<^F&bq_nKF%Rieupj0RhR-bcSs(>(HMq9uhf+=t-LrP$4H<~g zFoR@QS{^R~2odC`Hq~=y_v`(kL{p_b^K$>Gvm{tC2@})V(Q)s2waSdp2k;dlYfMHk z&tl9Z`P}4@z67Yo-tvL>=53ynMPMP+8A2jVuFzINbB3~xqGyrz{!n}c`f;fQ!VxeMQZSi zyGaM*ZgD((1||0cTXmpK!MfAmvca>HTwe*=P>rtG+9+$v`O^~1jc?K0<-p~T|EjEM zN2<4>?m&K;>45`LN(5)su$7zsjQ9@4lKNJ2FZ&p4SxMus^`D6Lqu126@T+Z)Z|&kBW&upUQ0h(faQksEGnP^7Cj(+(oZ}s^86W0p$0YT&?=)3> z`ME-Sj$!;*#yKz)-zZpQ6n7jYy(@DRrtMp&&Gg1s#9$b`kpnrDr_u~mr#h^fxaDfX zcYkhNBBu7PiLZBTFG_fp`2ckn8Zh|o2C0!WZV>k+kZxMWt0cOgrG=0Q87svL=u9CYhvW1d*;C*q-ibW&Y=f| zN^*!wic7-9;?5aE{xi>yNuq8kduJGIQ}jO!r{U}`mX^Z4i`uMJ0>a) zhyMc;L&D-du<$U5iT}exR00vV&BCJxg-JmFp+iFc>5qi{1A~f-i~YM+3<;5l(_xi1 z6<0!|plDGsguD`50tHi)MD1vEqgp$L(c{(l*!q_VQ473;#azQAGt diff --git a/fig/ch3/time.eps b/fig/ch3/time.eps index 99cea89..4a2c77a 100644 --- a/fig/ch3/time.eps +++ b/fig/ch3/time.eps @@ -1,6 +1,6 @@ %!PS-Adobe-2.0 %%Creator: gnuplot 4.6 patchlevel 6 -%%CreationDate: Thu Oct 22 17:45:34 2015 +%%CreationDate: Tue May 24 10:34:34 2016 %%DocumentFonts: (atend) %%BoundingBox: 50 50 554 410 %%Orientation: Portrait @@ -506,7 +506,7 @@ SDict begin [ /Author (afanfakh) % /Producer (gnuplot) % /Keywords () - /CreationDate (Thu Oct 22 17:45:34 2015) + /CreationDate (Tue May 24 10:34:34 2016) /DOCINFO pdfmark end } ifelse @@ -534,227 +534,175 @@ stroke ] -50.0 MRshow 1.000 UL LTb -605 421 M +605 441 M 31 0 V 4205 0 R -31 0 V -605 490 M +605 530 M 31 0 V 4205 0 R -31 0 V -605 560 M +605 619 M 31 0 V 4205 0 R -31 0 V -605 629 M +605 708 M 31 0 V 4205 0 R -31 0 V -605 698 M +605 797 M 63 0 V 4173 0 R -63 0 V stroke -539 698 M +539 797 M [ [(Helvetica) 150.0 0.0 true true 0 ( 500)] ] -50.0 MRshow 1.000 UL LTb -605 767 M +605 886 M 31 0 V 4205 0 R -31 0 V -605 837 M +605 975 M 31 0 V 4205 0 R -31 0 V -605 906 M +605 1064 M 31 0 V 4205 0 R -31 0 V -605 975 M +605 1153 M 31 0 V 4205 0 R -31 0 V -605 1044 M +605 1242 M 63 0 V 4173 0 R -63 0 V stroke -539 1044 M +539 1242 M [ [(Helvetica) 150.0 0.0 true true 0 ( 1000)] ] -50.0 MRshow 1.000 UL LTb -605 1114 M +605 1331 M 31 0 V 4205 0 R -31 0 V -605 1183 M +605 1420 M 31 0 V 4205 0 R -31 0 V -605 1252 M +605 1509 M 31 0 V 4205 0 R -31 0 V -605 1321 M +605 1598 M 31 0 V 4205 0 R -31 0 V -605 1391 M +605 1687 M 63 0 V 4173 0 R -63 0 V stroke -539 1391 M +539 1687 M [ [(Helvetica) 150.0 0.0 true true 0 ( 1500)] ] -50.0 MRshow 1.000 UL LTb -605 1460 M +605 1776 M 31 0 V 4205 0 R -31 0 V -605 1529 M +605 1865 M 31 0 V 4205 0 R -31 0 V -605 1598 M +605 1955 M 31 0 V 4205 0 R -31 0 V -605 1668 M +605 2044 M 31 0 V 4205 0 R -31 0 V -605 1737 M +605 2133 M 63 0 V 4173 0 R -63 0 V stroke -539 1737 M +539 2133 M [ [(Helvetica) 150.0 0.0 true true 0 ( 2000)] ] -50.0 MRshow 1.000 UL LTb -605 1806 M +605 2222 M 31 0 V 4205 0 R -31 0 V -605 1875 M +605 2311 M 31 0 V 4205 0 R -31 0 V -605 1945 M +605 2400 M 31 0 V 4205 0 R -31 0 V -605 2014 M +605 2489 M 31 0 V 4205 0 R -31 0 V -605 2083 M +605 2578 M 63 0 V 4173 0 R -63 0 V stroke -539 2083 M +539 2578 M [ [(Helvetica) 150.0 0.0 true true 0 ( 2500)] ] -50.0 MRshow 1.000 UL LTb -605 2152 M -31 0 V -4205 0 R --31 0 V -605 2222 M -31 0 V -4205 0 R --31 0 V -605 2291 M -31 0 V -4205 0 R --31 0 V -605 2360 M -31 0 V -4205 0 R --31 0 V -605 2429 M -63 0 V -4173 0 R --63 0 V -stroke -539 2429 M -[ [(Helvetica) 150.0 0.0 true true 0 ( 3000)] -] -50.0 MRshow -1.000 UL -LTb -605 2499 M -31 0 V -4205 0 R --31 0 V -605 2568 M +605 2667 M 31 0 V 4205 0 R -31 0 V -605 2637 M +605 2756 M 31 0 V 4205 0 R -31 0 V -605 2706 M -31 0 V -4205 0 R --31 0 V -605 2776 M -63 0 V -4173 0 R --63 0 V -stroke -539 2776 M -[ [(Helvetica) 150.0 0.0 true true 0 ( 3500)] -] -50.0 MRshow -1.000 UL -LTb 605 2845 M 31 0 V 4205 0 R -31 0 V -605 2914 M +605 2934 M 31 0 V 4205 0 R -31 0 V -605 2983 M -31 0 V -4205 0 R --31 0 V -605 3053 M -31 0 V -4205 0 R --31 0 V -605 3122 M +605 3023 M 63 0 V 4173 0 R -63 0 V stroke -539 3122 M -[ [(Helvetica) 150.0 0.0 true true 0 ( 4000)] +539 3023 M +[ [(Helvetica) 150.0 0.0 true true 0 ( 3000)] ] -50.0 MRshow 1.000 UL LTb -605 3191 M +605 3112 M 31 0 V 4205 0 R -31 0 V -605 3260 M +605 3201 M 31 0 V 4205 0 R -31 0 V -605 3330 M +605 3290 M 31 0 V 4205 0 R -31 0 V -605 3399 M +605 3379 M 31 0 V 4205 0 R -31 0 V @@ -764,38 +712,38 @@ LTb -63 0 V stroke 539 3468 M -[ [(Helvetica) 150.0 0.0 true true 0 ( 4500)] +[ [(Helvetica) 150.0 0.0 true true 0 ( 3500)] ] -50.0 MRshow 1.000 UL LTb -605 352 M +1135 352 M 0 63 V 0 3053 R 0 -63 V stroke -605 242 M +1293 242 M [ [(Helvetica) 150.0 0.0 true true 0 (CG)] -] -50.0 MCshow +] -50.0 MRshow 1.000 UL LTb -1311 352 M +1664 352 M 0 63 V 0 3053 R 0 -63 V stroke -1311 242 M +1822 242 M [ [(Helvetica) 150.0 0.0 true true 0 (MG)] -] -50.0 MCshow +] -50.0 MRshow 1.000 UL LTb -2017 352 M +2194 352 M 0 63 V 0 3053 R 0 -63 V stroke -2017 242 M +2352 242 M [ [(Helvetica) 150.0 0.0 true true 0 (EP)] -] -50.0 MCshow +] -50.0 MRshow 1.000 UL LTb 2723 352 M @@ -803,39 +751,39 @@ LTb 0 3053 R 0 -63 V stroke -2723 242 M +2881 242 M [ [(Helvetica) 150.0 0.0 true true 0 (LU)] -] -50.0 MCshow +] -50.0 MRshow 1.000 UL LTb -3429 352 M +3253 352 M 0 63 V 0 3053 R 0 -63 V stroke -3429 242 M +3411 242 M [ [(Helvetica) 150.0 0.0 true true 0 (BT)] -] -50.0 MCshow +] -50.0 MRshow 1.000 UL LTb -4135 352 M +3782 352 M 0 63 V 0 3053 R 0 -63 V stroke -4135 242 M +3940 242 M [ [(Helvetica) 150.0 0.0 true true 0 (SP)] -] -50.0 MCshow +] -50.0 MRshow 1.000 UL LTb -4841 352 M +4312 352 M 0 63 V 0 3053 R 0 -63 V stroke -4841 242 M +4470 242 M [ [(Helvetica) 150.0 0.0 true true 0 (FT)] -] -50.0 MCshow +] -50.0 MRshow 1.000 UL LTb 1.000 UL @@ -862,58 +810,38 @@ LTb 1.000 UL LTb % Begin plot #1 -1.000 UP 1.000 UL LT0 0.10 0.10 0.44 C LCb setrgbcolor -2546 3264 M +2476 3313 M [ [(Helvetica) 140.0 0.0 true true 0 (One core per node scenario)] ] -46.7 MRshow LT0 -0.10 0.10 0.44 C 2612 3264 M -327 0 V -605 1208 M -1311 445 L -706 78 V -706 595 V -3429 907 L -706 930 V -706 52 V -605 1208 Pls -1311 445 Pls -2017 523 Pls -2723 1118 Pls -3429 907 Pls -4135 1837 Pls -4841 1889 Pls -2775 3264 Pls +0.10 0.10 0.44 C 1.000 2542 3280 327 66 BoxColFill +0.10 0.10 0.44 C 1.000 1082 352 106 1102 BoxColFill +0.10 0.10 0.44 C 1.000 1611 352 107 121 BoxColFill +0.10 0.10 0.44 C 1.000 2141 352 106 221 BoxColFill +0.10 0.10 0.44 C 1.000 2670 352 107 986 BoxColFill +0.10 0.10 0.44 C 1.000 3200 352 106 715 BoxColFill +0.10 0.10 0.44 C 1.000 3729 352 107 1911 BoxColFill +0.10 0.10 0.44 C 1.000 4259 352 106 1978 BoxColFill % End plot #1 % Begin plot #2 -1.000 UP 1.000 UL LT1 -1.00 0.00 0.00 C LCb setrgbcolor -2546 3132 M +0.94 0.50 0.50 C LCb setrgbcolor +2476 3181 M [ [(Helvetica) 140.0 0.0 true true 0 (Multicores per node scenario)] ] -46.7 MRshow LT1 -1.00 0.00 0.00 C 2612 3132 M -327 0 V -605 2089 M -1311 592 L -706 30 V -706 951 V -706 -482 V -706 1385 V -706 -120 V -605 2089 Crs -1311 592 Crs -2017 622 Crs -2723 1573 Crs -3429 1091 Crs -4135 2476 Crs -4841 2356 Crs -2775 3132 Crs +0.94 0.50 0.50 C 1.000 2542 3148 327 66 BoxColFill +0.94 0.50 0.50 C 1.000 1214 352 107 2235 BoxColFill +0.94 0.50 0.50 C 1.000 1743 352 107 310 BoxColFill +0.94 0.50 0.50 C 1.000 2273 352 107 349 BoxColFill +0.94 0.50 0.50 C 1.000 2802 352 107 1570 BoxColFill +0.94 0.50 0.50 C 1.000 3332 352 107 952 BoxColFill +0.94 0.50 0.50 C 1.000 3861 352 107 2732 BoxColFill +0.94 0.50 0.50 C 1.000 4391 352 107 2578 BoxColFill % End plot #2 1.000 UL LTb diff --git a/fig/ch3/time_scenarios-eps-converted-to.pdf b/fig/ch3/time_scenarios-eps-converted-to.pdf index e51998a7b971241d4cf04f3ceada14120948c7f1..8e9bcbcf13e26994b618a0be7f72e3c1c9ddf8f6 100644 GIT binary patch delta 12667 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 diff --git a/fig/ch3/time_scenarios.eps b/fig/ch3/time_scenarios.eps index a9b8da9..7db1743 100644 --- a/fig/ch3/time_scenarios.eps +++ b/fig/ch3/time_scenarios.eps @@ -1,6 +1,6 @@ %!PS-Adobe-2.0 %%Creator: gnuplot 4.6 patchlevel 6 -%%CreationDate: Thu Oct 22 12:39:30 2015 +%%CreationDate: Tue May 24 10:16:31 2016 %%DocumentFonts: (atend) %%BoundingBox: 50 50 554 410 %%Orientation: Portrait @@ -506,7 +506,7 @@ SDict begin [ /Author (afanfakh) % /Producer (gnuplot) % /Keywords () - /CreationDate (Thu Oct 22 12:39:30 2015) + /CreationDate (Tue May 24 10:16:31 2016) /DOCINFO pdfmark end } ifelse @@ -716,32 +716,32 @@ stroke ] -50.0 MRshow 1.000 UL LTb -605 352 M +1135 352 M 0 63 V 0 3053 R 0 -63 V stroke -605 242 M +1135 242 M [ [(Helvetica) 150.0 0.0 true true 0 (CG)] ] -50.0 MCshow 1.000 UL LTb -1311 352 M +1664 352 M 0 63 V 0 3053 R 0 -63 V stroke -1311 242 M +1664 242 M [ [(Helvetica) 150.0 0.0 true true 0 (MG)] ] -50.0 MCshow 1.000 UL LTb -2017 352 M +2194 352 M 0 63 V 0 3053 R 0 -63 V stroke -2017 242 M +2194 242 M [ [(Helvetica) 150.0 0.0 true true 0 (EP)] ] -50.0 MCshow 1.000 UL @@ -756,32 +756,32 @@ stroke ] -50.0 MCshow 1.000 UL LTb -3429 352 M +3253 352 M 0 63 V 0 3053 R 0 -63 V stroke -3429 242 M +3253 242 M [ [(Helvetica) 150.0 0.0 true true 0 (BT)] ] -50.0 MCshow 1.000 UL LTb -4135 352 M +3782 352 M 0 63 V 0 3053 R 0 -63 V stroke -4135 242 M +3782 242 M [ [(Helvetica) 150.0 0.0 true true 0 (SP)] ] -50.0 MCshow 1.000 UL LTb -4841 352 M +4312 352 M 0 63 V 0 3053 R 0 -63 V stroke -4841 242 M +4312 242 M [ [(Helvetica) 150.0 0.0 true true 0 (FT)] ] -50.0 MCshow 1.000 UL @@ -810,112 +810,72 @@ LTb 1.000 UL LTb % Begin plot #1 -1.000 UP 1.000 UL LT0 0.10 0.10 0.44 C LCb setrgbcolor -2123 3268 M -[ [(Helvetica) 140.0 0.0 true true 0 (One site/ 16 nodes)] +2158 3268 M +[ [(Helvetica) 140.0 0.0 true true 0 (One site / 16 nodes)] ] -46.7 MRshow LT0 -0.10 0.10 0.44 C 2189 3268 M -327 0 V -605 1101 M -1311 464 L -706 162 V -706 975 V -706 -161 V -706 672 V -706 79 V -605 1101 Pls -1311 464 Pls -2017 626 Pls -2723 1601 Pls -3429 1440 Pls -4135 2112 Pls -4841 2191 Pls -2352 3268 Pls +0.10 0.10 0.44 C 2224 3235 327 66 40 45 2 PatternFill +0.10 0.10 0.44 C 1011 352 72 750 40 45 2 PatternFill +0.10 0.10 0.44 C 1540 352 72 113 40 45 2 PatternFill +0.10 0.10 0.44 C 2070 352 72 275 40 45 2 PatternFill +0.10 0.10 0.44 C 2599 352 72 1250 40 45 2 PatternFill +0.10 0.10 0.44 C 3129 352 72 1089 40 45 2 PatternFill +0.10 0.10 0.44 C 3658 352 72 1761 40 45 2 PatternFill +0.10 0.10 0.44 C 4188 352 72 1840 40 45 2 PatternFill % End plot #1 % Begin plot #2 -1.000 UP 1.000 UL LT1 -1.00 0.00 0.00 C LCb setrgbcolor -2123 3136 M -[ [(Helvetica) 140.0 0.0 true true 0 (One site/ 32 nodes)] +0.10 0.10 0.44 C LCb setrgbcolor +2158 3136 M +[ [(Helvetica) 140.0 0.0 true true 0 (One site / 32 nodes)] ] -46.7 MRshow LT1 -1.00 0.00 0.00 C 2189 3136 M -327 0 V -605 902 M -1311 412 L -706 50 V -706 383 V -3429 709 L -706 598 V -706 33 V -605 902 Crs -1311 412 Crs -2017 462 Crs -2723 845 Crs -3429 709 Crs -4135 1307 Crs -4841 1340 Crs -2352 3136 Crs +0.10 0.10 0.44 C 1.000 2224 3103 327 66 BoxColFill +0.10 0.10 0.44 C 1.000 1099 352 72 551 BoxColFill +0.10 0.10 0.44 C 1.000 1629 352 71 61 BoxColFill +0.10 0.10 0.44 C 1.000 2158 352 72 111 BoxColFill +0.10 0.10 0.44 C 1.000 2688 352 71 494 BoxColFill +0.10 0.10 0.44 C 1.000 3217 352 72 358 BoxColFill +0.10 0.10 0.44 C 1.000 3747 352 71 956 BoxColFill +0.10 0.10 0.44 C 1.000 4276 352 72 989 BoxColFill % End plot #2 % Begin plot #3 -1.000 UP 1.000 UL -LT2 +LT0 0.00 0.39 0.00 C LCb setrgbcolor -2123 3004 M -[ [(Helvetica) 140.0 0.0 true true 0 (Two sites/ 16 nodes)] +2158 3004 M +[ [(Helvetica) 140.0 0.0 true true 0 (Two sites / 16 nodes)] ] -46.7 MRshow -LT2 -0.00 0.39 0.00 C 2189 3004 M -327 0 V -605 2263 M -1311 584 L -706 25 V -706 1112 V -706 613 V -706 291 V -706 343 V -605 2263 Star -1311 584 Star -2017 609 Star -2723 1721 Star -3429 2334 Star -4135 2625 Star -4841 2968 Star -2352 3004 Star +LT0 +0.00 0.39 0.00 C 2224 2971 327 66 80 -45 1 PatternFill +0.00 0.39 0.00 C 1187 352 72 1912 80 -45 1 PatternFill +0.00 0.39 0.00 C 1717 352 72 233 80 -45 1 PatternFill +0.00 0.39 0.00 C 2246 352 72 258 80 -45 1 PatternFill +0.00 0.39 0.00 C 2776 352 72 1370 80 -45 1 PatternFill +0.00 0.39 0.00 C 3305 352 72 1983 80 -45 1 PatternFill +0.00 0.39 0.00 C 3835 352 72 2274 80 -45 1 PatternFill +0.00 0.39 0.00 C 4364 352 72 2617 80 -45 1 PatternFill % End plot #3 % Begin plot #4 -1.000 UP 1.000 UL LT3 -0.72 0.53 0.04 C LCb setrgbcolor -2123 2872 M -[ [(Helvetica) 140.0 0.0 true true 0 (Two sites/ 32 nodes)] +0.94 0.50 0.50 C LCb setrgbcolor +2158 2872 M +[ [(Helvetica) 140.0 0.0 true true 0 (Two sites / 32 nodes)] ] -46.7 MRshow LT3 -0.72 0.53 0.04 C 2189 2872 M -327 0 V -605 2203 M -1311 512 L -706 -41 V -706 576 V -706 390 V -706 448 V -706 161 V -605 2203 Box -1311 512 Box -2017 471 Box -2723 1047 Box -3429 1437 Box -4135 1885 Box -4841 2046 Box -2352 2872 Box +0.94 0.50 0.50 C 1.000 2224 2839 327 66 BoxColFill +0.94 0.50 0.50 C 1.000 1276 352 71 1852 BoxColFill +0.94 0.50 0.50 C 1.000 1805 352 72 161 BoxColFill +0.94 0.50 0.50 C 1.000 2335 352 71 120 BoxColFill +0.94 0.50 0.50 C 1.000 2864 352 72 696 BoxColFill +0.94 0.50 0.50 C 1.000 3394 352 71 1086 BoxColFill +0.94 0.50 0.50 C 1.000 3923 352 72 1534 BoxColFill +0.94 0.50 0.50 C 1.000 4453 352 71 1695 BoxColFill % End plot #4 1.000 UL LTb -- 2.39.5