X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/hpcc2014.git/blobdiff_plain/64cf966afb9c408d8ab199f12a27f45e1c5ed82a..0addef29acd938694a719f449408934f533ce96c:/hpcc.tex?ds=inline diff --git a/hpcc.tex b/hpcc.tex index d4dc19e..7cb74fa 100644 --- a/hpcc.tex +++ b/hpcc.tex @@ -108,7 +108,7 @@ network, etc.) but also a non-negligible CPU execution time. We consider in this parallel algorithms called \texttt{numerical iterative algorithms} executed in a distributed environment. As their name suggests, these algorithm solves a given problem by successive iterations ($X_{n +1} = f(X_{n})$) from an initial value $X_{0}$ to find an approximate value $X^*$ of the solution with a very low residual error. Several well-known methods -demonstrate the convergence of these algorithms \cite{}. +demonstrate the convergence of these algorithms \cite{BT89,Bahi07}. Parallelization of such algorithms generally involved the division of the problem into several \emph{blocks} that will be solved in parallel on multiple processing units. The latter will communicate each intermediate results before a new @@ -119,12 +119,12 @@ instance in the \textit{Asynchronous Iterations - Asynchronous Communications computations do not need to wait for required data. Processors can then perform their iterations with the data present at that time. Even if the number of iterations required before the convergence is generally greater than for the synchronous case, AIAC algorithms can significantly reduce overall execution times by suppressing idle times due to -synchronizations especially in a grid computing context (see \cite{bcvc06:ij} for more details). +synchronizations especially in a grid computing context (see \cite{Bahi07} for more details). Parallel numerical applications (synchronous or asynchronous) may have different configuration and deployment requirements. Quantifying their resource allocation policies and application scheduling algorithms in grid computing environments under varying load, CPU power and network speeds is very costly, very labor intensive and very time -consuming \cite{BuRaCa}. The case of AIAC algorithms is even more problematic since they are very sensible to the +consuming \cite{Calheiros:2011:CTM:1951445.1951450}. The case of AIAC algorithms is even more problematic since they are very sensible to the execution environment context. For instance, variations in the network bandwith (intra and inter- clusters), in the number and the power of nodes, in the number of clusters... can lead to very different number of iterations and so to very different execution times. Then, it appears that the use of simulation tools to explore various platform @@ -160,7 +160,7 @@ carried out will be presented before some concluding remarks and future works. As exposed in the introduction, parallel iterative methods are now widely used in many scientific domains. They can be classified in three main classes depending on how iterations and communications are managed (for more details readers -can refer to \cite{bcvc02:ip}). In the \textit{Synchronous Iterations - Synchronous Communications (SISC)} model data +can refer to \cite{bcvc06:ij}). In the \textit{Synchronous Iterations - Synchronous Communications (SISC)} model data are exchanged at the end of each iteration. All the processors must begin the same iteration at the same time and important idle times on processors are generated. The \textit{Synchronous Iterations - Asynchronous Communications (SIAC)} model can be compared to the previous one except that data required on another processor are sent asynchronously @@ -233,7 +233,7 @@ with little or no modifications. SMPI implements about \np[\%]{80} of the MPI %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Simulation of the multisplitting method} %Décrire le problème (algo) traité ainsi que le processus d'adaptation à SimGrid. -Let $Ax=b$ be a large sparse system of $n$ linear equations in $\mathbb{R}$, where $A$ is a sparse square and nonsingular matrix, $x$ is the solution vector and $b$ is the right-hand side vector. We use a multisplitting method based on the block Jacobi splitting to solve this linear system on a large scale platform composed of $L$ clusters of processors. In this case, we apply a row-by-row splitting without overlapping +Let $Ax=b$ be a large sparse system of $n$ linear equations in $\mathbb{R}$, where $A$ is a sparse square and nonsingular matrix, $x$ is the solution vector and $b$ is the right-hand side vector. We use a multisplitting method based on the block Jacobi splitting to solve this linear system on a large scale platform composed of $L$ clusters of processors~\cite{o1985multi}. In this case, we apply a row-by-row splitting without overlapping \[ \left(\begin{array}{ccc} A_{11} & \cdots & A_{1L} \\ @@ -320,7 +320,20 @@ where $\MI$ is the maximum number of outer iterations and $\epsilon$ is the tole \LZK{Description du processus d'adaptation de l'algo multisplitting à SimGrid} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - +We did not encounter major blocking problems when adapting the multisplitting algorithm previously described to a simulation environment like SIMGRID unless some code +debugging. Indeed, apart from the review of the program sequence for asynchronous exchanges between the six neighbors of each point in a submatrix within a cluster or +between clusters, the algorithm was executed successfully with SMPI and provided identical outputs as those obtained with direct execution under MPI. In synchronous +mode, the execution of the program raised no particular issue but in asynchronous mode, the review of the sequence of MPI\_Isend, MPI\_Irecv and MPI\_waitall instructions +and with the addition of the primitive MPI\_Test was needed to avoid a memory fault due to an infinite loop resulting from the non- convergence of the algorithm. Note here that the use of SMPI +functions optimizer for memory footprint and CPU usage is not recommended knowing that one wants to get real results by simulation. +As mentioned, upon this adaptation, the algorithm is executed as in the real life in the simulated environment after the following minor changes. First, all declared +global variables have been moved to local variables for each subroutine. In fact, global variables generate side effects arising from the concurrent access of +shared memory used by threads simulating each computing units in the Simgrid architecture. Second, the alignment of certain types of variables such as "long int" had +also to be reviewed. Finally, some compilation errors on MPI\_waitall and MPI\_Finalise primitives have been fixed with the latest version of Simgrid. +In total, the initial MPI program running on the simulation environment SMPI gave after a very simple adaptation the same results as those obtained in a real +environment. We have tested in synchronous mode with a simulated platform starting from a modest 2 or 3 clusters grid to a larger configuration like simulating +Grid5000 with more than 1500 hosts with 5000 cores~\cite{bolze2006grid}. Once the code debugging and adaptation were complete, the next section shows our methodology and experimental +results. @@ -566,7 +579,7 @@ mode in a grid architecture. \section*{Acknowledgment} - +This work is partially funded by the Labex ACTION program (contract ANR-11-LABX-01-01). The authors would like to thank\dots{}