]> AND Private Git Repository - kahina_paper1.git/commitdiff
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
Merge branch 'master' of ssh://info.iut-bm.univ-fcomte.fr/kahina_paper1
authorKahina <kahina@kahina-VPCEH3K1E.(none)>
Mon, 2 Nov 2015 19:26:42 +0000 (20:26 +0100)
committerKahina <kahina@kahina-VPCEH3K1E.(none)>
Mon, 2 Nov 2015 19:26:42 +0000 (20:26 +0100)
1  2 
paper.tex

diff --combined paper.tex
index 4213238dc15bba747cab568e22b4b4baecab2c2e,cf8c1800f2a6e410e16d9a3bcb95ba580ac548f4..43bbf1e887b8de02804ffa041ca2ba26c8c13005
+++ b/paper.tex
@@@ -393,7 -393,7 +393,7 @@@ There are many schemes for the simultan
  polynomial. Several works on different methods and issues of root
  finding have been reported in~\cite{Azad07, Gemignani07, Kalantari08, Skachek08, Zhancall08, Zhuall08}. However, Durand-Kerner and Ehrlich-Aberth methods are the most practical choices among
  them~\cite{Bini04}. These two methods have been extensively
- studied for parallelization due to their intrinsics, i.e. the
+ studied for parallelization due to their intrinsics parallelism, i.e. the
  computations involved in both methods has some inherent
  parallelism that can be suitably exploited by SIMD machines.
  Moreover, they have fast rate of convergence (quadratic for the
@@@ -412,21 -412,26 +412,26 @@@ Optoelectronic Transpose Interconnectio
  algorithms are mapped on an OTIS-2D torus using N processors. This
  solution needs N processors to compute N roots, which is not
  practical for solving polynomials with large degrees.
- Until very recently, the literature doen not mention implementations able to compute the roots of
- large degree polynomials (higher then 1000) and within small or at least tractable times. Finding polynomial roots rapidly and accurately is the main objective of our work. 
+ %Until very recently, the literature did not mention implementations
+ %able to compute the roots of large degree polynomials (higher then
+ %1000) and within small or at least tractable times.
+ Finding polynomial roots rapidly and accurately is the main objective of our work. 
  With the advent of CUDA (Compute Unified Device
  Architecture), finding the roots of polynomials receives a new attention because of the new possibilities to solve higher degree polynomials in less time. 
  In~\cite{Kahinall14} we already proposed the first implementation
  of a root finding method on GPUs, that of the Durand-Kerner method. The main result showed
  that a parallel CUDA implementation is 10 times as fast as the
  sequential implementation on a single CPU for high degree
- polynomials of 48000. In this paper we present a parallel implementation of Ehlisch-Aberth method on
- GPUs, which details are discussed in the sequel.
+ polynomials of 48000.
+ %In this paper we present a parallel implementation of Ehrlich-Aberth
+ %method on GPUs for sparse and full polynomials with high degree (up
+ %to $1,000,000$).
  
  
  \section {A CUDA parallel Ehrlich-Aberth method}
  In the following, we describe the parallel implementation of Ehrlich-Aberth method on GPU 
- for solving high degree polynomials. First, the hardware and software of the GPUs are presented. Then, a CUDA parallel Ehrlich-Aberth method are presented.
+ for solving high degree polynomials (up to $1,000,000$). First, the hardware and software of the GPUs are presented. Then, the CUDA parallel Ehrlich-Aberth method is presented.
  
  \subsection{Background on the GPU architecture}
  A GPU is viewed as an accelerator for the data-parallel and
@@@ -493,37 -498,32 +498,37 @@@ read-only caches
  
  \subsection{A sequential Ehrlich-Aberth algorithm}
  The main steps of Ehrlich-Aberth method are shown in Algorithm.~\ref{alg1-seq} :
 -  
 +%\LinesNumbered  
  \begin{algorithm}[H]
  \label{alg1-seq}
 -%\LinesNumbered
 +
  \caption{A sequential algorithm to find roots with the Ehrlich-Aberth method}
  
 -\KwIn{$Z^{0}$(Initial root's vector),$\varepsilon$ (error tolerance threshold),P(Polynomial to solve)}
 -\KwOut {Z(The solution root's vector)}
 +\KwIn{$Z^{0}$(Initial root's vector),$\varepsilon$ (error tolerance threshold), P(Polynomial to solve),$\Delta z_{max}$ (maximum value of stop condition),k (number of iteration),n(Polynomial's degrees)}
 +\KwOut {Z (The solution root's vector),ZPrec (the previous solution root's vector)}
  
  \BlankLine
  
  Initialization of the coefficients of the polynomial to solve\;
  Initialization of the solution vector $Z^{0}$\;
 +$\Delta z_{max}=0$\;
 + k=0\;
  
 -\While {$\Delta z_{max}\succ \epsilon$}{
 +\While {$\Delta z_{max} > \varepsilon$}{
   Let $\Delta z_{max}=0$\;
  \For{$j \gets 0 $ \KwTo $n$}{
 -$ZPrec\left[j\right]=Z\left[j\right]$\;
 -$Z\left[j\right]=H\left(j,Z\right)$\;
 +$ZPrec\left[j\right]=Z\left[j\right]$;// save Z at the iteration k.\
 +
 +$Z\left[j\right]=H\left(j,Z\right)$;//update Z with the iterative function.\
  }
 +k=k+1\;
  
  \For{$i \gets 0 $ \KwTo $n-1$}{
 -$c=\frac{\left|Z\left[i\right]-ZPrec\left[i\right]\right|}{Z\left[i\right]}$\;
 +$c= testConverge(\Delta z_{max},ZPrec\left[j\right],Z\left[j\right])$\;
  \If{$c > \Delta z_{max}$ }{
  $\Delta z_{max}$=c\;}
  }
 +
  }
  \end{algorithm}
  
@@@ -560,7 -560,8 +565,7 @@@ Algorithm~\ref{alg2-cuda} shows a sketc
  %\LinesNumbered
  \caption{CUDA Algorithm to find roots with the Ehrlich-Aberth method}
  
 -\KwIn{$Z^{0}$(Initial root's vector),$\varepsilon$ (error
 -tolerance threshold),P(Polynomial to solve)}
 +\KwIn{$Z^{0}$(Initial root's vector),$\varepsilon$ (error tolerance threshold), P(Polynomial to solve), $\Delta z_{max}$ (maximum value of stop condition)}
  
  \KwOut {Z(The solution root's vector)}
  
  Initialization of the coeffcients of the polynomial to solve\;
  Initialization of the solution vector $Z^{0}$\;
  Allocate and copy initial data to the GPU global memory\;
 -
 +k=0\;
  \While {$\Delta z_{max}\succ \epsilon$}{
   Let $\Delta z_{max}=0$\;
 -$ kernel\_save(d\_z^{k-1})$\;
 -$ kernel\_update(d\_z^{k})$\;
 -$kernel\_testConverge(\Delta z_{max},d_z^{k},d_z^{k-1})$\;
 +$ kernel\_save(d\_Z^{k-1})$\;
 +k=k+1\;
 +$ kernel\_update(d\_Z^{k})$\;
 +$kernel\_testConverge(\Delta z_{max},d\_Z^{k},d\_Z^{k-1})$\;
 +
  }
  \end{algorithm}
  ~\\