From: Kahina Date: Tue, 3 Nov 2015 15:17:59 +0000 (+0100) Subject: Merge branch 'master' of ssh://info.iut-bm.univ-fcomte.fr/kahina_paper1 X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/kahina_paper1.git/commitdiff_plain/3e1cdef27e58da4fdb1b615513405842dba4d023?ds=sidebyside;hp=-c Merge branch 'master' of ssh://info.iut-bm.univ-fcomte.fr/kahina_paper1 --- 3e1cdef27e58da4fdb1b615513405842dba4d023 diff --combined paper.tex index 357094d,bf88e9c..f99f515 --- a/paper.tex +++ b/paper.tex @@@ -627,17 -627,18 +627,18 @@@ The last kernel checks the convergence of $Z^{(k)}$, according to formula Eq.~\ref{eq:Aberth-Conv-Cond}. We used the functions of the CUBLAS Library (CUDA Basic Linear Algebra Subroutines) to implement this kernel. The kernel terminates its computations when all the roots have - converged. Many important remarks should be noticed. First, as blocks - of threads are scheduled automatically by the GPU, we have absolutely - no control on the order of the blocks. Consequently, our algorithm is - executed more or less in an asynchronous iterations way, where blocks - of roots are updated in a non deterministic way. As the Durand-Kerner - method has been proved to convergence with asynchronous iterations, we - think it is similar with the Ehrlich-Aberth method, but we did not try - to prove this in that paper. Another consequence of that, is that - several executions of our algorithm with the same polynomials do no - give necessarily the same result with the same number of iterations - (even if the variation is not very significant). + converged. It should be noticed that, as blocks of threads are + scheduled automatically by the GPU, we have absolutely no control on + the order of the blocks. Consequently, our algorithm is executed more + or less in an asynchronous iteration model, where blocks of roots are + updated in a non deterministic way. As the Durand-Kerner method has + been proved to converge with asynchronous iterations, we think it is + similar with the Ehrlich-Aberth method, but we did not try to prove + this in that paper. Another consequence of that, is that several + executions of our algorithm with the same polynomial do no give + necessarily the same result (but roots have the same accuracy) and the + same number of iterations (even if the variation is not very + significant). @@@ -647,14 -648,14 +648,14 @@@ \section{Experimental study} \label{sec6} %\subsection{Definition of the used polynomials } - We study two categories of polynomials : the sparse polynomials and the full polynomials. - \paragraph{A sparse polynomial}:is a polynomial for which only some coefficients are not null. We use in the following polynomial for which the roots are distributed on 2 distinct circles : + We study two categories of polynomials: sparse polynomials and the full polynomials.\\ + {\it A sparse polynomial} is a polynomial for which only some + coefficients are not null. In this paper, we consider sparse polynomials for which the roots are distributed on 2 distinct circles: \begin{equation} \forall \alpha_{1} \alpha_{2} \in C,\forall n_{1},n_{2} \in N^{*}; P(z)= (z^{n_{1}}-\alpha_{1})(z^{n_{2}}-\alpha_{2}) - \end{equation} - - - \paragraph{A full polynomial}:is in contrast, a polynomial for which all the coefficients are not null. the second form used to obtain a full polynomial is: + \end{equation}\noindent + {\it A full polynomial} is, in contrast, a polynomial for which + all the coefficients are not null. A full polynomial is defined by: %%\begin{equation} %%\forall \alpha_{i} \in C,\forall n_{i}\in N^{*}; P(z)= \sum^{n}_{i=1}(z^{n^{i}}.a_{i}) %%\end{equation} @@@ -662,37 -663,47 +663,47 @@@ \begin{equation} {\Large \forall a_{i} \in C, i\in N; p(x)=\sum^{n}_{i=0} a_{i}.x^{i}} \end{equation} - With this form, we can have until \textit{n} non zero terms whereas the sparse ones have just two non zero terms. + %With this form, we can have until \textit{n} non zero terms whereas the sparse ones have just two non zero terms. %\subsection{The study condition} - The our experiences results concern two parameters which are - the polynomial degree and the execution time of our program - to converge on the solution. The polynomial degree allows us - to validate that our algorithm is powerful with high degree - polynomials. The execution time remains the - element-key which justifies our work of parallelization. - For our tests we used a CPU Intel(R) Xeon(R) CPU - E5620@2.40GHz and a GPU K40 (with 6 Go of ram). + %Two parameters are studied are + %the polynomial degree and the execution time of our program + %to converge on the solution. The polynomial degree allows us + %to validate that our algorithm is powerful with high degree + %polynomials. The execution time remains the + %element-key which justifies our work of parallelization. + For our tests, a CPU Intel(R) Xeon(R) CPU + E5620@2.40GHz and a GPU K40 (with 6 Go of ram) is used. %\subsection{Comparative study} - In this section, we discuss the performance Ehrlich-Aberth method of root finding polynomials implemented on CPUs and on GPUs. + %First, performances of the Ehrlich-Aberth method of root finding polynomials + %implemented on CPUs and on GPUs are studied. - We performed a set of experiments on the sequential and the parallel algorithms, for both sparse and full polynomials and different sizes. We took into account the execution time, the polynomial size and the number of threads per block performed by sum or each experiment on CPUs and on GPUs. + We performed a set of experiments on the sequential and the parallel algorithms, for both sparse and full polynomials and different sizes. We took into account the execution times, the polynomial size and the number of threads per block performed by sum or each experiment on CPUs and on GPUs. - All experimental results obtained from the simulations are made in double precision data, for a convergence tolerance of the methods set to $10^{-7}$. Since we were more interested in the comparison of the performance behaviors of Ehrlich-Aberth and Durand-Kerner methods on CPUs versus on GPUs. The initialization values of the vector solution of the Ehrlich-Aberth method are given in section 2.2. - \subsection{The execution time in seconds of Ehrlich-Aberth algorithm on CPU OpenMP (1 core, 4 cores) vs. on a Tesla GPU} + All experimental results obtained from the simulations are made in + double precision data, the convergence threshold of the methods is set + to $10^{-7}$. + %Since we were more interested in the comparison of the + %performance behaviors of Ehrlich-Aberth and Durand-Kerner methods on + %CPUs versus on GPUs. + The initialization values of the vector solution + of the methods are given in section 2.2. + \subsection{Comparison of execution times of the Ehrlich-Aberth method + on a CPU with OpenMP (1 core and 4 cores) vs. on a Tesla GPU} \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{figures/openMP-GPU} - \caption{The execution time in seconds of Ehrlich-Aberth algorithm on CPU OpenMP (1 core, 4 cores) vs. on a Tesla GPU} + \caption{Comparison of execution times of the Ehrlich-Aberth method + on a CPU with OpenMP (1 core, 4 cores) and on a Tesla GPU} \label{fig:01} \end{figure} - Figure 1 %%show a comparison of execution time between the parallel and sequential version of the Ehrlich-Aberth algorithm with sparse polynomial exceed 100000, - We report respectively the execution time of the Ehrlich-Aberth method implemented initially on one core of the Quad-Core Xeon E5620 CPU than on four cores of the same machine with \textit{OpenMP} platform and the execution time of the same method implemented on one Nvidia Tesla K40c GPU, with sparse polynomial degrees ranging from 100,000 to 1,000,000. We can see that the method implemented on the GPU are faster than those implemented on the CPU (4 cores). This is due to the GPU ability to compute the data-parallel functions faster than its CPU counterpart. However, the execution time for the CPU(4 cores) implementation exceed 5,000 s for 250,000 degrees polynomials, in counterpart the GPU implementation for the same polynomials not reach 100 s, more than again, with an execution time under to 2500 s CPU (4 cores) implementation can resolve polynomials degrees of only 200,000, whereas GPU implementation can resolve polynomials more than 1,000,000 degrees. We can also notice that the GPU implementation are almost 47 faster then those implementation on the CPU(4 cores). However the CPU(4 cores) implementation are almost 4 faster then his implementation on CPU (1 core). Furthermore, we verify that the number of iterations and the convergence precision is the same for the both CPU and GPU implementation. %This reduction of time allows us to compute roots of polynomial of more important degree at the same time than with a CPU. + %%Figure 1 %%show a comparison of execution time between the parallel and sequential version of the Ehrlich-Aberth algorithm with sparse polynomial exceed 100000, + In Figure~\ref{fig:01}, we report respectively the execution time of the Ehrlich-Aberth method implemented initially on one core of the Quad-Core Xeon E5620 CPU than on four cores of the same machine with \textit{OpenMP} platform and the execution time of the same method implemented on one Nvidia Tesla K40c GPU, with sparse polynomial degrees ranging from 100,000 to 1,000,000. We can see that the method implemented on the GPU are faster than those implemented on the CPU (4 cores). This is due to the GPU ability to compute the data-parallel functions faster than its CPU counterpart. However, the execution time for the CPU(4 cores) implementation exceed 5,000 s for 250,000 degrees polynomials, in counterpart the GPU implementation for the same polynomials not reach 100 s, more than again, with an execution time under to 2500 s CPU (4 cores) implementation can resolve polynomials degrees of only 200,000, whereas GPU implementation can resolve polynomials more than 1,000,000 degrees. We can also notice that the GPU implementation are almost 47 faster then those implementation on the CPU(4 cores). However the CPU(4 cores) implementation are almost 4 faster then his implementation on CPU (1 core). Furthermore, we verify that the number of iterations and the convergence precision is the same for the both CPU and GPU implementation. %This reduction of time allows us to compute roots of polynomial of more important degree at the same time than with a CPU. %We notice that the convergence precision is a round $10^{-7}$ for the both implementation on CPU and GPU. Consequently, we can conclude that Ehrlich-Aberth on GPU are faster and accurately then CPU implementation. @@@ -744,9 -755,9 +755,9 @@@ This figure show the execution time of \label{fig:05} \end{figure} -%\subsubsection{The execution time of Ehrlich-Aberth algorithm on OpenMP(1 core, 4 cores) vs. on a Tesla GPU} +This figure show the evaluation of the number of iteration according to degree of polynomial from both EA and DK algorithms, we can see that the iteration number of DK is of order 100 while EA is of order 10. Indeed the computing of derivative of P (the polynomial to resolve) in the iterative function(Eq.~\ref{Eq:Hi}) executed by EA, offers him a possibility to converge more quickly. In counterpart the DK operator(Eq.~\ref{DK}) need low operation, consequently low execution time per iteration,but it need lot of iteration to converge. -\section{Conclusion and perspective} + \section{Conclusion and perspective} \label{sec7} In this paper we have presented the parallel implementation Ehrlich-Aberth method on GPU and on CPU (openMP) for the problem of finding roots polynomial. Moreover, we have improved the classical Ehrlich-Aberth method witch suffer of overflow problems, the exp.log solution applying to the iterative function to resolve high degree polynomial.