-In order to benefit from computing power of GPU, a program needs to define
-independent blocks of threads which can be computed simultaneously. In general,
-the larger the number of threads is, the more local memory is used and the less
-branching instructions are used (if, while, ...), the better performance is
-obtained on GPU. So with algorithm \ref{algo:seqCIprng} presented in the
-previous section, it is possible to build a similar program which computes PRNG
-on GPU. In the CUDA~\cite{Nvid10} environment, threads have a local
-identificator, called \texttt{ThreadIdx} relative to the block containing them.
-
-
-\subsection{Naive version for GPU}
-
-From the CPU version, it is possible to obtain a quite similar version for GPU.
-The principe consists in assigning the computation of a PRNG as in sequential to
-each thread of the GPU. Of course, it is essential that the three xor-like
-PRNGs used for our computation have different parameters. So we chose them
-randomly with another PRNG. As the initialisation is performed by the CPU, we
-have chosen to use the ISAAC PRNG~\cite{Jenkins96} to initalize all the
-parameters for the GPU version of our PRNG. The implementation of the three
-xor-like PRNGs is straightforward as soon as their parameters have been
-allocated in the GPU memory. Each xor-like PRNGs used works with an internal
-number $x$ which keeps the last generated random numbers. Other internal
-variables are also used by the xor-like PRNGs. More precisely, the
-implementation of the xor128, the xorshift and the xorwow respectively require
-4, 5 and 6 unsigned long as internal variables.
+In order to take benefits from the computing power of GPU, a program needs to have
+independent blocks of threads that can be computed simultaneously. In general,
+the larger the number of threads is, the more local memory is used, and the less
+branching instructions are used (if, while, ...), the better the performances on GPU is.
+Obviously, having these requirements in mind, it is possible to build a program similar to
+the one presented in Algorithm \ref{algo:seqCIprng}, which computes pseudorandom numbers
+on GPU.
+To do so, we must firstly recall that in
+ the CUDA~\cite{Nvid10} environment, threads have a local
+identifier called \texttt{ThreadIdx}, which is relative to the block containing them.
+
+
+\subsection{Naive Version for GPU}
+
+
+It is possible to deduce from the CPU version a quite similar version adapted to GPU.
+The simple principle consists to make each thread of the GPU computing the CPU version of our PRNG.
+Of course, the three xor-like
+PRNGs used in these computations must have different parameters.
+In a given thread, these lasts are
+randomly picked from another PRNGs.
+The initialization stage is performed by the CPU.
+To do it, the ISAAC PRNG~\cite{Jenkins96} is used to set all the
+parameters embedded into each thread.
+
+The implementation of the three
+xor-like PRNGs is straightforward when their parameters have been
+allocated in the GPU memory. Each xor-like works with an internal
+number $x$ that saves the last generated pseudorandom number. Additionally, the
+implementation of the xor128, the xorshift, and the xorwow respectively require
+4, 5, and 6 unsigned long as internal variables.