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

Private GIT Repository
this is the commit 06.09.15
authorKahina Guidouche <guidouche@slayer.iut-bm.univ-fcomte.fr>
Sun, 6 Sep 2015 16:50:24 +0000 (18:50 +0200)
committerKahina Guidouche <guidouche@slayer.iut-bm.univ-fcomte.fr>
Sun, 6 Sep 2015 16:50:24 +0000 (18:50 +0200)
Root.tex

index 2ee2c28e0c2d2e7ad23bd0c641a5c20d38d19c93..5134838f63ac685684c5b3041500d947f2b9bef9 100644 (file)
--- a/Root.tex
+++ b/Root.tex
@@ -11,8 +11,9 @@ we consider a polynomial of degree \textit{n} having coefficients
 in the complex \textit{C} and zeros $\alpha\r
 _{i},\textit{i=1,...,n}$. \\\r
 \begin{center}\r
-     {\Large$p(x)=\sum{a_{i}x^{i}}=a_{n}\prod(x-\alpha_{i}),\r
-a_{0}a_{n}\neq0,$}\r
+\begin{equation}\r
+     {\Large p(x)=\sum{a_{i}x^{i}}=a_{n}\prod(x-\alpha_{i}),a_{0} a_{n}\neq 0}\r
+\end{equation}\r
 \end{center}\r
 \r
  the root finding problem consist to find\r
@@ -48,24 +49,26 @@ Muller s method, and several methods for simultaneous
 approximation of all the roots, starting with the Durand-Kerner\r
 method:\r
 \begin{center}\r
-\r
-$  Z_{i}=Z_{i}-\frac{P(Z_{i})}{\prod_{i\neq j}(z_{i}-z_{j})} $\r
+\begin{equation} Z_{i}=Z_{i}-\frac{P(Z_{i})}{\prod_{i\neq j}(z_{i}-z_{j})}\r
+\end{equation}\r
 \end{center}\r
 \r
-This formula is mentioned for the first time from Weiestrass [12]\r
-as part of the fundamental theorem of Algebra and is rediscovered\r
-from Ilieff~\cite{Ilief50} [2], Docev [3], Durand [4], Kerner [5].\r
-Another method discovered from Borsch-Supan [6] and also described\r
-and brought in the following form from Ehrlich [7] and\r
+This formula is mentioned for the first time from\r
+Weiestrass~\cite{Weierstrass03} as part of the fundamental theorem\r
+of Algebra and is rediscovered from Ilieff~\cite{Ilie50},\r
+Docev~\cite{Docev62}, Durand~\cite{Durand60},\r
+Kerner~\cite{Kerner66}. Another method discovered from\r
+Borsch-Supan~\cite{ Borch-Supan63} and also described and brought\r
+in the following form from Ehrlich~\cite{Ehrlich67} and\r
 Aberth~\cite{Aberth73}.\r
 \begin{center}\r
-\r
-$  Z_{i}=Z_{i}-\frac{1}{{\frac {P'(Z_{i})}\r
-{P(Z_{i})}}-{\sum_{i\neq j}(z_{i}-z_{j})}} $\r
+\begin{equation}\r
+ Z_{i}=Z_{i}-\frac{1}{{\frac {P'(Z_{i})} {P(Z_{i})}}-{\sum_{i\neq j}(z_{i}-z_{j})}}\r
+\end{equation}\r
 \end{center}\r
 \r
-Aberth, Ehrlich and Farmer-Loizou [10] have proved that the above\r
-method has cubic order of convergence for simple roots.\r
+Aberth, Ehrlich and Farmer-Loizou~\cite{Loizon83} have proved that\r
+the above method has cubic order of convergence for simple roots.\r
 \r
 \r
 Iterative methods raise several problem when implemented e.g.\r
@@ -76,37 +79,38 @@ parallelization of these algorithms will improve the convergence
 time.\r
 \r
 Many authors have treated the problem of parallelization of\r
-simultaneous methods. Freeman [13] has tested the DK method, EA\r
-method and another method of the fourth order proposed from Farmer\r
-and Loizou [10],on a 8- processor linear chain, for polynomial of\r
-degree up to 8. The third method often diverges, but the first two\r
-methods have speed-up 5.5 (speed-up=(Time on one processor)/(Time\r
-on p processors)). Later Freeman and Bane [14] consider\r
-asynchronous algorithms, in which each processor continues to\r
-update its approximations even although the latest values of other\r
-$z_i((k))$ have not received from the other processors, in\r
-difference with the synchronous version where it would wait. in\r
-[15]proposed two methods of parallelization for architecture with\r
-shared memory and distributed memory,it able to compute the root\r
-of polynomial degree  10000 on 430 s with only 8 pc and 2\r
-communications per iteration. Compare to the sequential it take\r
-3300 s to obtain the same results.\r
+simultaneous methods. Freeman~\cite{Freeman89} has tested the DK\r
+method, EA method and another method of the fourth order proposed\r
+from Farmer and Loizou~\cite{Loizon83},on a 8- processor linear\r
+chain, for polynomial of degree up to 8. The third method often\r
+diverges, but the first two methods have speed-up 5.5\r
+(speed-up=(Time on one processor)/(Time on p processors)). Later\r
+Freeman and Bane~\cite{Freemanall90}  consider asynchronous\r
+algorithms, in which each processor continues to update its\r
+approximations even although the latest values of other $z_i((k))$\r
+have not received from the other processors, in difference with\r
+the synchronous version where it would wait.\r
+in~\cite{Raphaelall01}proposed two methods of parallelization for\r
+architecture with shared memory and distributed memory,it able to\r
+compute the root of polynomial degree  10000 on 430 s with only 8\r
+pc and 2 communications per iteration. Compare to the sequential\r
+it take 3300 s to obtain the same results.\r
 \r
 After this few works discuses this problem until the apparition of\r
-the Compute Unified Device Architecture (CUDA) [19],a parallel\r
-computing platform and a programming model invented by NVIDIA. the\r
-computing ability of GPU has exceeded the counterpart of CPU. It\r
-is a waste of resource to be just a graphics card for GPU.  CUDA\r
-adopts a totally new computing architecture to use the hardware\r
-resources provided by GPU in order to offer a stronger computing\r
-ability to the massive data computing.\r
-\r
-\r
-Indeed [16]proposed the implementation of the Durand-Kerner method\r
-on GPU (Graphics Processing Unit). The main result prove that a\r
-parallel implementation is 10 times as fast as the sequential\r
-implementation on a single CPU for high degree polynomials that is\r
-greater than about 48000.\r
+the Compute Unified Device Architecture (CUDA)~\cite{CUDA10},a\r
+parallel computing platform and a programming model invented by\r
+NVIDIA. the computing ability of GPU has exceeded the counterpart\r
+of CPU. It is a waste of resource to be just a graphics card for\r
+GPU.  CUDA adopts a totally new computing architecture to use the\r
+hardware resources provided by GPU in order to offer a stronger\r
+computing ability to the massive data computing.\r
+\r
+\r
+Indeed,~\cite{Kahinall14}proposed the implementation of the\r
+Durand-Kerner method on GPU (Graphics Processing Unit). The main\r
+result prove that a parallel implementation is 10 times as fast as\r
+the sequential implementation on a single CPU for high degree\r
+polynomials that is greater than about 48000.\r
 \paragraph{}\r
 The mean part of our work is to implement the Aberth method on GPU\r
 and compare it with the Durand Kerner\r
@@ -115,18 +119,28 @@ implementation.................To be continued..................
 \r
 \section{Aberth method and difficulties}\r
 A cubically convergent iteration method for finding zeros of\r
-polynomials was proposed by O.Aberth[?].The Aberth method is a\r
-purely algebraic derivation.To illustrate the derivation, we let\r
-$w_{i}(z)$ be the product of linear factor $ w_{i}(z)=\prod_{j=1,j\r
-\neq i}^{n} (z-x_{j})$\r
+polynomials was proposed by O.Aberth~\cite{Aberth73}.The Aberth\r
+method is a purely algebraic derivation.To illustrate the\r
+derivation, we let $w_{i}(z)$ be the product of linear factor $\r
+w_{i}(z)=\prod_{j=1,j \neq i}^{n} (z-x_{j})$\r
 \r
 and rational function $R_{i}(z)$ be the correction term of\r
-Weistrass method (?)\r
-$$R_{i}(z)=\dfrac{p(z)}{w_{i}(Z)} , i=1,2,...,n. $$\r
+Weistrass method~\cite{Weierstrass03}:\r
+\r
+\begin{equation}\r
+R_{i}(z)=\dfrac{p(z)}{w_{i}(Z)} , i=1,2,...,n.\r
+\end{equation}\r
 \r
 Differentiating the rational function $R_{i}(z)$ and applying the\r
 Newton method, we have\r
-$$\dfrac{R_{i}(z)}{R_{i}^{'}(z)}= \dfrac{p(z)}{p^{'}(z)-p(z)\dfrac{w_{i}(z)}{w_{i}^{'}(z)}}= \dfrac{p(z)}{p^{'}(z)-p(z) \sum _{j=1,j \neq i}^{n}\dfrac{1}{z-x_{i}}}, i=1,2,...,n $$\r
+\r
+\begin{equation}\r
+\dfrac{R_{i}(z)}{R_{i}^{'}(z)}=\r
+\dfrac{p(z)}{p^{'}(z)-p(z)\dfrac{w_{i}(z)}{w_{i}^{'}(z)}}=\r
+\dfrac{p(z)}{p^{'}(z)-p(z) \sum _{j=1,j \neq\r
+i}^{n}\dfrac{1}{z-x_{i}}}, i=1,2,...,n\r
+\end{equation}\r
+\r
 Substituting $x_{j}$ for z we obtain the Aberth iteration method\r
 \r
 Let present the means stages of Aberth's method.\r
@@ -134,7 +148,10 @@ Let present the means stages of Aberth's method.
 \subsection{Polynomials Initialization}\r
  The initialization of polynomial P(z) with complex coefficients\r
  are given by:\r
- $$ p(z)=\sum{a_{i}z^{n-i}}. where a_{n} \neq 0,a_{0}=1, a_{i}\subset C $$\r
+\r
+\begin{equation}\r
+  p(z)=\sum{a_{i}z^{n-i}}. where a_{n} \neq 0,a_{0}=1, a_{i}\subset C\r
+\end{equation}\r
 \r
 \r
 \subsection{Vector $Z^{0)}$ Initialization}\r
@@ -142,26 +159,39 @@ Let present the means stages of Aberth's method.
 The choice of the initial points $z^{(0)}_{i} , i = 1, . . . , n,$\r
 from which starting the iteration  (2) or (3), is rather delicate\r
 since the number of steps needed by the iterative method to reach\r
-a given approximation strongly depends on it. In [1] the Aberth\r
-iteration is started by selecting n equispaced points on a circle\r
-of center 0 and radius r, where r is an upper bound to the moduli\r
-of the zeros. After[18]  performs this choice by selecting complex\r
-numbers along different circles and relies on the result of [19].\r
-\r
-$$\sigma_{0}=\frac{u+v}{2};u=\frac{\sum_{i=1}^{n}u_{i}}{n.max_{i=1}^{n}u_{i}}; v=\frac{\sum_{i=0}^{n-1}v_{i}}{n.min_{i=0}^{n-1}v_{i}};u_{i}=2.|a_{i}|^{\frac{1}{i}}; v_{i}=\frac{|\frac{a_{n}}{a_{i}}|^{\frac{1}{n-i}}}{2} $$\r
+a given approximation strongly depends on it.\r
+In~\cite{Aberth73}the Aberth iteration is started by selecting n\r
+equispaced points on a circle of center 0 and radius r, where r is\r
+an upper bound to the moduli of the zeros. After,~\cite{Bini96}\r
+performs this choice by selecting complex numbers along different\r
+circles and relies on the result of~\cite{Ostrowski41}.\r
+\r
+\begin{equation}\r
+\sigma_{0}=\frac{u+v}{2};u=\frac{\sum_{i=1}^{n}u_{i}}{n.max_{i=1}^{n}u_{i}};\r
+v=\frac{\sum_{i=0}^{n-1}v_{i}}{n.min_{i=0}^{n-1}v_{i}};u_{i}=2.|a_{i}|^{\frac{1}{i}};\r
+v_{i}=\frac{|\frac{a_{n}}{a_{i}}|^{\frac{1}{n-i}}}{2}\r
+\end{equation}\r
 \r
 \subsection{Iterative Function Hi}\r
 The operator used with Aberth's method is corresponding to the\r
 following equation which will enable the convergence towards\r
 polynomial solutions, provided all the roots are distinct.\r
 \r
-$$ H_{i}(z)=z_{i}-\frac{1}{\frac{P^{'}(z_{i})}{P(z_{i})}-\sum_{j\neq i}{\frac{1}{z_{i}-z_{j}}}} $$\r
+\begin{equation}\r
+H_{i}(z)=z_{i}-\frac{1}{\frac{P^{'}(z_{i})}{P(z_{i})}-\sum_{j\neq\r
+i}{\frac{1}{z_{i}-z_{j}}}}\r
+\end{equation}\r
 \r
 \subsection{Convergence condition}\r
 determines the success of the termination. It consists in stopping\r
 the iterative function $H_{i}(z)$ when the are stable,the method\r
 converge sufficiently:\r
-$$  \forall i \in [1,n]; \frac{z_{i}^{(k)}-z_{i}^{(k-1)}}{z_{i}^{(k)}}< \xi$$\r
+\r
+\begin{equation}\r
+\forall i \in\r
+[1,n];\frac{z_{i}^{(k)}-z_{i}^{(k-1)}}{z_{i}^{(k)}}<\xi\r
+\end{equation}\r
+\r
 \r
 \section{Difficulties and amelioration}\r
 the Aberth method implementation suffer of overflow problems. This\r
@@ -171,40 +201,169 @@ point $\xi$ where $|\xi| > 1$.Indeed the limited number in the
 mantissa of floating takings the computation of P(z) wrong when z\r
 is large. for example $(10^{50}) +1+ (- 10_{50})$ will give result\r
 0 instead of 1 in reality.consequently we can't compute the roots\r
-for large polynomial's degree. This problem was discuss in [17]\r
-for the Durand-Kerner method, the authors propose to use the\r
-logratihm and the exponential of a complex:\r
-\r
-$$ \forall(x,y)\in R^{*2}; \ln (x+i.y)=\ln(x^{2}+y^{2}) 2+i.\arcsin(y\sqrt{x^{2}+y^{2}})_{\left] -\pi, \pi\right[ } $$\r
-$$ \forall(x,y)\in R^{*2}; \exp(x+i.y)= \exp(x).\exp(i.y)$$\r
-$$                                       =\exp(x).\cos(y)+i.\exp(x).\sin(y)$$\r
-\r
+for large polynomial's degree. This problem was discuss in\r
+~\cite{Karimall98} for the Durand-Kerner method, the authors\r
+propose to use the logratihm and the exponential of a complex:\r
+\r
+\begin{equation}\r
+ \forall(x,y)\in R^{*2}; \ln (x+i.y)=\ln(x^{2}+y^{2})\r
+2+i.\arcsin(y\sqrt{x^{2}+y^{2}})_{\left] -\pi, \pi\right[ }\r
+\end{equation}\r
+%%\begin{equation}\r
+\begin{align}\r
+ \forall(x,y)\in R^{*2}; \exp(x+i.y)&= \exp(x).\exp(i.y)\\\r
+                                    &=\exp(x).\cos(y)+i.\exp(x).\sin(y)\r
+\end{align}\r
+%%\end{equation}\r
 \r
 The application of logarithm can replace any multiplications and\r
 divisions with additions and subtractions; consequently it\r
 manipulates lower absolute values and can be compute the roots for\r
-large polynomial's degree exceed 1000[17].\r
+large polynomial's degree exceed~\cite{Karimall98}.\r
 \r
 Applying this solution for the Aberth method we obtain the\r
 iteration function with logarithm:\r
 %%$$ \exp \bigl(  \ln(p(z)_{k})-ln(\ln(p(z)_{k}^{'}))- \ln(1- \exp(\ln(p(z)_{k})-ln(\ln(p(z)_{k}^{'})+\ln\sum_{i\neq j}^{n}\frac{1}{z_{k}-z_{j}})$$\r
+\begin{equation}\r
+H_{i}(z)=z_{i}^{k}-\exp \left(\ln \left(\r
+p(z_{k})\right)-\ln\left(p(z_{k}^{'})\right)- \ln\r
+\left(1-Q(z_{k})\right)\right)\r
+\end{equation}\r
+where:\r
 \r
-$$ H_{i}(z)=z_{i}^{k}-\exp \left(\ln \left( p(z_{k})\right)-\ln\left(p(z_{k}^{'})\right)- \ln\left(1- \exp\left( \ln (p(z_{k}))-\ln(p(z_{k}^{'}))+\ln \left( \sum_{k\neq j}^{n}\frac{1}{z_{k}-z_{j}}\right)\right) \right) \right)$$\r
-\r
+\begin{equation}\r
+Q(z_{k})=\exp\left( \ln (p(z_{k}))-\ln(p(z_{k}^{'}))+\ln \left(\r
+\sum_{k\neq j}^{n}\frac{1}{z_{k}-z_{j}}\right)\right)\r
+\end{equation}\r
 \r
 \r
 this solution is applying when it is necessary\r
 \r
 \section{The implementation of simultaneous methods in a parallel computer}\r
+    The main problem of the simultaneous methods is that the necessary\r
+time needed for the convergence is increased with the increasing\r
+of the degree of the polynomial. The parallelization of these\r
+algorithms will improve the convergence time. Researchers usually\r
+adopt one of the two following approaches to parallelize root\r
+finding algorithms. One approach is to reduce the total number of\r
+iterations as implemented by Miranker\r
+~\cite{Mirankar68,Mirankar71}, Schedler~\cite{Schedler72} and\r
+Winogard~\cite{Winogard72}. Another approach is to reduce the\r
+computation time per iteration, as reported\r
+in~\cite{Benall68,Jana06,Janall99,Riceall06}. There are many\r
+schemes for simultaneous approximations of all roots of a given\r
+polynomial. Several works on different methods and issues of root\r
+finding have been reported in~\cite{Azad07,Gemignani07,Kalantari08\r
+,Skachek08,Zhancall08,Zhuall08}. However, Durand-Kerner and\r
+Ehrlich methods are the most practical choices among\r
+them~\cite{Bini04}. These two methods have been extensively\r
+studied for parallelization due to their following advantages. The\r
+computation involved in these methods has some inherent\r
+parallelism that can be suitably exploited by SIMD machines.\r
+Moreover, they have fast rate of convergence (quadratic for the\r
+Durand-Kerner method and cubic for the Ehrlich). Various parallel\r
+algorithms reported for these methods can be found\r
+in~\cite{Cosnard90, Freeman89,Freemanall90,,Jana99,Janall99}.\r
+Freeman and Bane~\cite{Freemanall90} presented two parallel\r
+algorithms on a local memory MIMD computer with the compute-to\r
+communication time ratio O(n). However, their algorithms require\r
+each processor to communicate its current approximation to all\r
+other processors at the end of each iteration. Therefore they\r
+cause a high degree of memory conflict. Recently the author\r
+in~\cite{Mirankar71} proposed two versions of parallel algorithm\r
+for the Durand-Kerner method, and Aberth method on an on model of\r
+Optoelectronic Transpose Interconnection System (OTIS).The\r
+algorithms are mapped on an OTIS-2D torus using N processors. This\r
+solution need N processors to compute N roots, that it is not\r
+practical (is not suitable to compute large polynomial's degrees).\r
+Until then, the related works are not able to compute the root of\r
+the large polynomial's degrees (higher then 1000) and with small\r
+time.\r
 \r
-\r
+    Finding polynomial roots rapidly and accurately it is our\r
+objective, with the apparition of the CUDA(Compute Unified Device\r
+Architecture), finding the roots of polynomials becomes rewarding\r
+and very interesting, CUDA adopts a totally new computing\r
+architecture to use the hardware resources provided by GPU in\r
+order to offer a stronger computing ability to the massive data\r
+computing.in~\cite{Kahinall14} we proposed the first implantation\r
+of the root finding polynomials method on GPU (Graphics Processing\r
+Unit),which is the Durand-Kerner method. The main result prove\r
+that a parallel implementation is 10 times as fast as the\r
+sequential implementation on a single CPU for high degree\r
+polynomials that is greater than about 48000. Indeed, in this\r
+paper we present a parallel implementation of Aberth's method on\r
+GPU, more details are discussed in the following of this paper.\r
+\r
+\section {A parallel implementation of Aberth's method}\r
+\subsection{Background on the GPU architecture}\r
+A GPU is viewed as an accelerator for the data-parallel and\r
+intensive arithmetic computations. It draws its computing power\r
+from the parallel nature of its hardware and software\r
+architectures. A GPU is composed of hundreds of Streaming\r
+Processors (SPs) organized in several blocks called Streaming\r
+Multiprocessors (SMs). It also has a memory hierarchy. It has a\r
+private read-write local memory per SP, fast shared memory and\r
+read-only constant and texture caches per SM and a read-write\r
+global memory shared by all its SPs~\cite{NVIDIA10}\r
+\r
+    On a CPU equipped with a GPU, all the data-parallel and intensive\r
+functions of an application running on the CPU are off-loaded onto\r
+the GPU in order to accelerate their computations. A similar\r
+data-parallel function is executed on a GPU as a kernel by\r
+thousands or even millions of parallel threads, grouped together\r
+as a grid of thread blocks. Therefore, each SM of the GPU executes\r
+one or more thread blocks in SIMD fashion (Single  Instruction,\r
+Multiple Data) and in turn each SP of a GPU SM runs one or more\r
+threads within a block in SIMT fashion (Single Instruction,\r
+Multiple threads). Indeed at any given clock cycle, the threads\r
+execute the same instruction of a kernel, but each of them\r
+operates on different data.\r
+ GPUs only work on data filled in their\r
+global memories and the final results of their kernel executions\r
+must be communicated to their CPUs. Hence, the data must be\r
+transferred in and out of the GPU. However, the speed of memory\r
+copy between the GPU and the CPU is slower than the memory\r
+bandwidths of the GPU memories and, thus, it dramatically affects\r
+the performances of GPU computations. Accordingly, it is necessary\r
+to limit data transfers between the GPU and its CPU during the\r
+computations.\r
+\subsection{Background on the CUDA Programming Model}\r
+\r
+The CUDA programming model is similar in style to a single program\r
+multiple-data (SPMD) softwaremodel. The GPU is treated as a\r
+coprocessor that executes data-parallel kernel functions. CUDA\r
+provides three key abstractions, a hierarchy of thread groups,\r
+shared memories, and barrier synchronization. Threads have a three\r
+level hierarchy. A grid is a set of thread blocks that execute a\r
+kernel function. Each grid consists of blocks of threads. Each\r
+block is composed of hundreds of threads. Threads within one block\r
+can share data using shared memory and can be synchronized at a\r
+barrier. All threads within a block are executed concurrently on a\r
+multithreaded architecture.The programmer specifies the number of\r
+threads per block, and the number of blocks per grid. A thread in\r
+the CUDA programming language is much lighter weight than a thread\r
+in traditional operating systems. A thread in CUDA typically\r
+processes one data element at a time. The CUDA programming model\r
+has two shared read-write memory spaces, the shared memory space\r
+and the global memory space. The shared memory is local to a block\r
+and the global memory space is accessible by all blocks. CUDA also\r
+provides two read-only memory spaces, the constant space and the\r
+texture space, which reside in external DRAM, and are accessed via\r
+read-only caches\r
+\r
+\subsection{A parallel implementation of the Aberth's method }\r
+\subsection{A CUDA implementation of the Aberth's method }\r
+\subsection{A GPU implementation of the Aberth's method }\r
+\subsubsection{the  step to parallelize}\r
+\subsubsection{the kernel corresponding }\r
+\subsubsection{Comparison between sequential algorithm and GPU algorithm }\r
 \bibliographystyle{plain}\r
 \bibliography{biblio}\r
 %% \begin{thebibliography}{2}\r
 \r
 %% \bibitem [1] {1} O. Aberth, Iteration Methods for Finding\r
 \r
-\r
 %% all Zeros of a Polynomial Simultaneously, Math. Comput. 27, 122\r
 %% (1973) 339\96344.\r
 \r
@@ -245,17 +404,9 @@ this solution is applying when it is necessary
 %% jede ganze rationale function einer veranderlichen dagestellt\r
 %% werden kann als ein product aus linearen functionen derselben\r
 %% veranderlichen, Ges. Werke 3, 251-269.\r
-%% \bibitem [13] {13} Freeman, T. L. (1989), Calculating polynomial zeros on a\r
-%% local memory parallel computer, Parallel Computing 12, 351-358.\r
 \r
-%% \bibitem [14] {14} Freeman, T. L., Brankin, R. K. (1990), Asynchronous\r
-%% polynomial zero-finding algorithms, Parallel Computing 17,\r
-%% 673-681.\r
 \r
-%% \bibitem [15] {15} Raphaël,C. François,S. (2001), Extraction de racines dans des\r
-%% polynômes creux de degré élevé. RSRCP (Réseaux et Systèmes\r
-%% Répartis, Calculateurs Parallèles), Numéro thématique :\r
-%% Algorithmes itératifs parallèles et distribués, 13(1):67--81.\r
+%%\r
 \r
 %% \bibitem [16]{16} Kahina, G. Raphaël, C. Abderrahmane, S. A\r
 %% parallel implementation of the Durand-Kerner algorithm for\r
@@ -272,5 +423,67 @@ this solution is applying when it is necessary
 %%200.\r
 %% \bibitem [19] {19} A. Ostrowski, On a Theorem by J.L. Walsh Concerning the Moduli of Roots of Algebraic Equations,\r
 %%Bull. A.M.S., 47 (1941) 742\96746.\r
+\r
+%%\bibitem [20] {20} Mirankar WL (1968) Parallel methods for\r
+%%approximating the roots of a function. IBM Res Dev 297\96 301 30.\r
+%%\bibitem [21] {21} Mirankar WL (1971) A survey of parallelism in\r
+%%numerical analysis. SIAM Rev 524\96547\r
+\r
+%ù\bibitem [22] {22}Bini DA, Gemignani L (2004) Inverse power and\r
+%%Durand\96Kerner iterations for univariate polynomial root-finding.\r
+%%Comput Math Appl 47:447\96459\r
+\r
+%%\bibitem [23] {23}Ben-Or M, Feig E, Kozzen D, Tiwary P (1968) A fast parallel\r
+%algorithm for determining all roots of a polynomial with real\r
+%%roots. In: Proc of ACM, pp 340\96349\r
+\r
+%%\bibitem [24] {24}Zhanc X, Wan M, Yi Z (2008) A constrained learning algorithm for\r
+%%finding multiple real roots of polynomial. In: Proc of the 2008\r
+%%intl symposium on computational intelligence and design, pp 38\9641\r
+\r
+%%\bibitem [25] {25}Kalantari B (2008) Polynomial root finding and polynomiography.\r
+%%World Scientific, New Jersey\r
+\r
+%%\bibitem [27] {27} Gemignani L (2007) Structured matrix methods for polynomial root\r
+%%finding. In: Proc of the 2007 Intl symposium on symbolic and\r
+%%algebraic computation, pp 175\96180 Skachek V, Roth RM (2008)\r
+\r
+%%\bibitem [28] {28}Probabilistic algorithm for finding roots of linearized\r
+%%polynomials. Design, codes and cryptography. Kluwer, Norwell\r
+\r
+%%\bibitem [29] {29}Schedler GS (1967) Parallel numerical methods for the solution of\r
+%%equations. Commun ACM 286\96 290 Ben-Or M, Feig E, Kozzen D, Tiwary\r
+\r
+%%\bibitem [30] {30}P (1968) A fast parallel algorithm for determining all roots of a\r
+%%polynomial with real roots. In: Proc of ACM, pp 340\96349\r
+\r
+%%\bibitem [31] {31}Rice TA, Jamieson LH (1989) A highly parallel algorithm for root\r
+%%extraction. IEEE Trans Comp 38(3):443\96449 20. Jana PK (2006)\r
+\r
+%%\bibitem [32] {32}Winogard S (1972) Parallel iteration methods in complexity of\r
+%%computer communications. Plenum, New York\r
+\r
+%ù\bibitem [33] {33} Cosnard M, Fraigniaud P (1990) Finding the roots of a polynomial\r
+%%on an MIMD multicomputer. Parallel Comput 15:75\9685\r
+\r
+%%\bibitem [41] {41} Jana PK (1999) Finding polynomial zeroes on a Multi-mesh of trees\r
+%%(MMT). In: Proc of the 2nd int conference on information\r
+%%technology, Bhubaneswar, December 20\9622, pp 202\96206\r
+\r
+%%\bibitem [42] {42}Zhu W, Zeng Z, Lin D (2008) An adaptive algorithm finding\r
+%%multiple roots of polynomials. Lect Notes Comput Sci 5262:674\96681\r
+\r
+\r
+\r
+%%\bibitem [43] {43}Polynomial interpolation and polynomial root finding on OTIS-Mesh.\r
+%%Parallel Comput 32:301\96312\r
+\r
+%%\bibitem [44] {44}Jana PK, Sinha BP, Datta Gupta R (1999) Efficient parallel\r
+%%algorithms for finding polynomial zeroes. In: Proc of the 6th int\r
+%%conference on advance computing, CDAC, Pune University Campus,\r
+%%India, December 14\9616, pp 189\96196\r
+\r
+\r
+\r
 %% \end{thebibliography}\r
 \end{document}\r