X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba-papers.git/blobdiff_plain/6339a902510bd80d7ea9f38395b8831f0bf6308a..fa5df18b7f86cce629e14c464336e940c0a8e65d:/loba-besteffort/loba-besteffort.tex

diff --git a/loba-besteffort/loba-besteffort.tex b/loba-besteffort/loba-besteffort.tex
index 78524f7..c4c9d59 100644
--- a/loba-besteffort/loba-besteffort.tex
+++ b/loba-besteffort/loba-besteffort.tex
@@ -90,7 +90,7 @@
 Load  balancing algorithms  are  widely used  in  parallel and  distributed
 applications to achieve high performances in terms of response time, throughput and resources usage. They play an important role and arise in various fields ranging from parallel and distributed 
 computing systems to wireless sensor networks (WSN). 
-The objective of load balancing is to orchestrate the distribution of the global workload so that 
+The objective of load balancing is to orchestrate the distribution of the global load so that 
 the load difference between the computational resources of the network is 
 minimized as low as possible. Unfortunately, this problem is known to be {\bf NP-hard} in its 
 general forms and heuristics are required to achieve sub-optimal solutions but in 
@@ -98,7 +98,7 @@ polynomial time complexity.
 
 In this paper, we focus on asynchronous load balancing of non negative real numbers of {\it divisible loads}
 in homogeneous distributed systems. Loads can be divided in arbitrary {\it fine-grain} parallel parts size 
-that can be processed independently of each other. This model of divisible loads arise in 
+that can be processed independently of each other. This model of divisible loads arises in 
 a wide range of real-world applications. Common examples among many, include signal processing, 
 feature extraction and edge detection in image processing, records search in a huge databases, 
 average consensus in WSN, pattern search in Big data and so on. % c'est pout toi raphael ;-)
@@ -129,7 +129,7 @@ This algorithm has been borrowed and adapted in many works. For instance, in~\ci
 %version working with integer load.  This work was later generalized by
 %the same authors in \cite{cedo+cortes+ripoll+al.2007.convergence}.
 %\FIXME{Rajouter des choses ici.  Lesquelles ?}
-Although  Bertsekas  and Tsitsiklis'  describe  the necessary conditions to
+Although  Bertsekas  and Tsitsiklis  describe  the necessary conditions to
 ensure the algorithm's convergence,  there is no indication or any strategy to really implement
 the load distribution. %In other word, a node  can send some amount of its load to one or   many  of   its  neighbors   while  all   the  convergence   conditions  are followed. 
 Consequently,  we propose a  new strategy called  \besteffort{}
@@ -141,9 +141,9 @@ amount of  load.  Moreover, %when real-world asynchronous  applications are cons
 most of the times, it is simpler to dissociate load information messages
 from  data  migration  messages.  Former  ones  allow  a  node to  inform  its
 neighbors about its  current load. These messages are in fact very small and can be sent 
-often and very quickly.  For example, if a computing iteration takes  a significant times
+often very quickly.  For example, if a computing iteration takes  a significant time
 (ranging from seconds to minutes), it is possible to send a new load information
-message to each involved neighbor at each iteration. Then the load is sent, but the reception may take time when the amount of load is huge and when communication links are slow.  Depending on the application, it may have
+message to each involved neighbor at each iteration. Then, the load is sent, but the reception may take time when the amount of load is huge and when communication links are slow.  Depending on the application, it may have
 sense or not  that nodes try to balance  a part of their load  at each computing
 iteration. But the time to transfer a load message from a node to another one is
 often much more longer that the  time to transfer a load information message. So,
@@ -168,7 +168,7 @@ The main contributions and novelties of our work are summarized in the following
 \item Unlike earlier works, we use a new concept of virtual loads transfers which allows nodes to predict the future loads they will receive in the subsequent iterations. 
 This leads to a noticeable speedup of the global convergence time of the load balancing process.  
 
-\item We use SimGrid simulator which is known to be able to characterize and model realistic models of computation and communication in different types of platforms. We show that taking into account both loads transfers' costs and network contention is essential and has a real impact on the quality of the load balancing performances. 
+\item We use SimGrid simulator which is known to be able to characterize and modelize realistic models of computation and communication in different types of platforms. We show that taking into account both loads transfers' costs and network contention is essential and has a real impact on the quality of the load balancing performances. 
 
 %\item We improve the straightforward network's diameter bound of the global equilibrium threshold in the network. % not sure, it depends on the remaining time before the paper submission ...
 \end{itemize}
@@ -192,7 +192,7 @@ Bertsekas and Tsitsiklis' asynchronous load balancing algorithm. %Moreover, we
 Section~\ref{sec.besteffort} presents the best effort strategy which provides
 efficient local loads equilibrium. %This strategy will be compared with the one presented in Section~\ref{sec.other}.  
 In Section~\ref{sec.virtual-load}, the clairvoyant virtual load scheme is proposed to speedup the convergence time of the load balancing process.
-We provide in Section~\ref{sec.simulations}, a comprehensive set of numerical results that exhibit the usefulness of our proposals when we deal with realistic models of computation and communication. Finally, we give some concluding remarks in Section~\ref{conclusions-remarks}.
+We provide in Section~\ref{sec.simulations}, a comprehensive set of numerical results that exhibit the usefulness of our proposal when we deal with realistic models of computation and communication. Finally, we give some concluding remarks in Section~\ref{conclusions-remarks}.
 
 
 \section{Related works}
@@ -289,7 +289,7 @@ other back and forth, without reaching equilibrium.
 
 \medskip
 Nevertheless,  we  think that  this  condition may  lead  to  deadlocks in  some
-cases. For example, if we consider a linear chain graph network of only three processors and that processor $1$
+cases. For example, consider a linear chain graph network of only three processors and that processor $1$
 is linked to processor $2$ which is  also linked to processor $3$, but processors $1$ and $3$ are not neighbors. 
 %(i.e. a simple chain which 3 processors). 
 
@@ -302,7 +302,7 @@ is linked to processor $2$ which is  also linked to processor $3$, but processor
 \end{align*}
 %{\bf RAPH, pourquoi il y a $x_3^2$?. Sinon il faudra reformuler la suite, c'est mal dit}
 
-Owing to the algorithm's specification, processor $2$ can either sends 
+Owing to the algorithm's specification, processor $2$ can either send 
 load to processor $1$ or processor
 $3$.  If it sends load to processor $1$, it will not satisfy condition
 \eqref{eq.ping-pong} because after that sending it will be less loaded than
@@ -310,7 +310,7 @@ $x_3^2(t)$.  So we consider that the \emph{ping-pong} condition is probably too
 strong. %Currently, we did not try to make another convergence proof without this condition or with a weaker condition.
 
 \smallskip  
-Nevertheless, we conjecture that a weaker condition may exist since we
+Despite this, we conjecture that a weaker condition may exist since we
 have never seen any scenario that is not leading to convergence, even with
 load-balancing strategies that are not exactly fulfilling the authors' own conditions. %se two conditions.
 
@@ -320,7 +320,7 @@ load-balancing strategies that are not exactly fulfilling the authors' own condi
 
 \smallskip
 
-Although this approach is interesting, several practical
+Even though this approach is interesting, several practical
 questions arise when dealing with realistic models of 
 computation and communication. As reported above, the 
 algorithm's description is too succinct and no details are 
@@ -352,7 +352,7 @@ and then we present some variants of this basic strategy.
 
 \subsection{Basic strategy}
 The description of our algorithm will be given from the point of view a processor~$i$.
-The principle of the \besteffort{} strategy is that each processor,
+The principle of the \besteffort{} strategy is that each processor
 that detects it has more load than some of its neighbors, sends some load to the
 most of its less loaded neighbors, doing its best to reach the equilibrium
 between the involved neighbors and itself.
@@ -371,7 +371,7 @@ at each iteration of the load balancing process, processor~$i$
   \item the mean of the loads of the selected neighbors and processor i.
   \end{itemize}
   Let $S_i(t)$ be the set of the selected neighbors, and
-  $\bar{x}(t)$ be the mean of the loads between the selected neighbors and processor $i$ is given as follows:
+  $\bar{x}(t)$ be the mean of the loads between the selected neighbors and processor $i$ which is given as follows:
   \begin{equation*}
     \bar{x}(t) = \frac{1}{\abs{S_i(t)} + 1}
       \left( x_i(t) + \sum_{j\in S_i(t)} x^i_j(t) \right)
@@ -410,7 +410,7 @@ at each iteration of the load balancing process, processor~$i$
 With the aforementioned basic strategy, each node does its best to reach the
 equilibrium with its neighbors. However, one question should be outlined here:
 How can we handle the case where two (or more) node initiators that may send 
-concurrently some amount of loads to the the same less loaded neighbor? Indeed,  
+concurrently some amount of load to the the same less loaded neighbor? Indeed,  
 %since each node may take the same kind of decision at the same time, 
 there is a risk that a node will receive load from
 several of its neighbors, and then is temporary going off the equilibrium state.
@@ -542,7 +542,7 @@ actual source code that was used for the experiments%
   framework~\cite{casanova+giersch+legrand+al.2014.simgrid}.  For the
   experiments, we used a pre-release of SimGrid 3.7 (Git commit
   67d62fca5bdee96f590c942b50021cdde5ce0c07, available from
-  \url{https://gforge.inria.fr/scm/?group_id=12})}, and which is
+  \url{https://github.com/simgrid/simgrid})}, and which is
 available at
 \url{http://info.iut-bm.univ-fcomte.fr/staff/giersch/software/loba.tar.gz}.
 
@@ -553,8 +553,8 @@ control channel, or on the data channel.  Its behavior is sketched by
 Algorithm~\ref{algo.recv}.  When a message is received, it is pushed in a buffer
 of received messages, to be later consumed by one of the other threads.  There
 are two such buffers, one for the control messages, and one for the data
-messages.  The buffers are implemented with a lock-free FIFO
-\cite{sutter.2008.writing} to avoid contention between the threads.
+messages.
+The buffers are implemented with first-in, first-out queues (FIFO).
 
 \begin{algorithm}
   \caption{Receiving thread}
@@ -728,7 +728,7 @@ nodes: 16, 64, 256, and 1024 nodes is built in a similar way.
 
 The distributed processes of the application were then logically organized along
 three possible typologies: a line, a torus or an hypercube.  Tests were divided into two groups on the basis of the initial distribution of the global load: i) 
-Tests were performed with the total load initially on only one node%(at one end for the line topology)
+tests were performed with the total load initially on only one node%(at one end for the line topology)
 , ii) and other tests for which the load was initially randomly distributed across all the
 participating nodes of the platform.  The total amount of load was fixed to a number of load
 units equal to 1000 times the number of node.  The average load is then of 1000
@@ -856,13 +856,11 @@ The main results for our simulations on grid platforms are presented in Figures~
 %
 The results in Figure~\ref{fig.results1} are when the load to balance is
 initially on only one node, while the results in Figure~\ref{fig.resultsN} are
-when the load to balance is initially randomly distributed over all nodes.
-
+when the load to balance is initially randomly distributed over all nodes. 
 On both figures, the CCR is $10/1$ on the left
 column, and $1/10$ on the right column.  %With a computation/communication cost
 %ratio of $1/1$ the results are just between these two extrema, and definitely
 %don not give additional information, so we chose not to show them here.
-
 On each of Figures~\ref{fig.results1} and~\ref{fig.resultsN}, the results
 are given for the process topology being, from top to bottom, a line, a torus or
 an hypercube.
@@ -882,7 +880,7 @@ allocated time.
 \subsubsection{The \besteffort{} and  \makhoul{} strategies without virtual load}
 
 The {\it simple} ({\it plain}) version of each strategy is defined as the load balancing 
-algorithm without virtual load's transfers. For each algorithm, we compare the simple 
+algorithm without virtual load's transfers. For each strategy, we compare the simple 
 version (without virtual load) and the improved one (with virtual load). 
 Each algorithm is evaluated in terms of achieved idle time and convergence time. 
 
@@ -933,7 +931,7 @@ communication are slow (on the left part of Figure ~\ref{fig.results1}).
 
 \smallskip 
 When the load to balance is initially randomly distributed over all nodes, we can see from Figure \ref{fig.resultsN} that the effect of virtual load is not significant for the line topology structure. However, for both torus and hypercube structures with CCR = 1/10 (on the left of the figure), the performance of virtual load transfers is significantly better. This is explained by the fact 
-that for small CCR values,  high communication costs plays quite a significant role. However, the impact of
+that for small CCR values,  high communication costs plays quite a significant role. Moreover, the impact of
 communication becomes less important as the CCR values increases, since larger CCR values result in smaller communication times. We also tested the impact of CCR values on the performance of each algorithm in terms of idle times. From Figures~\ref{fig.results1} and ~\ref{fig.resultsN} we can find that our virtual load scheme achieves 
 a really good  average idle times, which is quite close to both its own simple version and its direct competitor {\it Bertsekas and Tsitsiklis} algorithm.  As expected, for coarse grain applications (CCR =10/1), idle times are close to 0 since processors are inactive the most of times compared to fine grain applications. 
 
@@ -944,7 +942,7 @@ convergence time achieved by the compared strategies. This is because, upon load
 
 \smallskip 
 Unlike {\it Betsekas and Tsistlikis} algorithm, our approach is not really sensitive when 
-we deal with realistic models of computation and communication. This is due to two main features: i) the use of "virtual load" transfers winch allows nodes to predict the load they receive in the subsequent iterations steps, ii) and the greedy neighbors selection adopted by our algorithm at each time step in the load balancing process. The involved neighbors are selected in such a way that load difference between the computational resources is minimized as low as possible. 
+we deal with realistic models of computation and communication. This is due to two main features: i) the use of "virtual load" transfers which allows nodes to predict the load they receive in the subsequent iterations steps, ii) and the greedy neighbors selection adopted by our algorithm at each time step in the load balancing process. The involved neighbors are selected in such a way that load difference between the computational resources is minimized as low as possible. 
 
 \smallskip 
 Comparing the results of the extended version (with virtual load) to the results of the simple one, we observe in Figs.~\ref{fig.results1} and ~\ref{fig.resultsN} that the improved version gives the best performances. It always improves both convergence and idle times significantly in all figures. This is because, with virtual load transfers, the algorithm seeks greedily to ensure a certain degree of load balancing for processors by taking into account the information about the predictive loads not received yet. Consequently, this leads to optimize the final convergence time of the load balancing process. Similarly, the extended version achieves much better results than the simple one when considering larger platforms, as shown in Figs.~\ref{fig.results1} and ~\ref{fig.resultsN}.
