X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/book_gpu.git/blobdiff_plain/ccff43db77ed9a71b6d9fc52aaf03585104713ce..792ee6b79f613b0db1390fd8b8ec1fe31160f105:/BookGPU/Chapters/chapter18/ch18.tex diff --git a/BookGPU/Chapters/chapter18/ch18.tex b/BookGPU/Chapters/chapter18/ch18.tex index 71d2b84..d161c76 100755 --- a/BookGPU/Chapters/chapter18/ch18.tex +++ b/BookGPU/Chapters/chapter18/ch18.tex @@ -247,26 +247,7 @@ satisfies the Devaney's definition of chaos. -\lstset{language=C,caption={C code of the sequential PRNG based on chaotic iterations},label={algo:seqCIPRNG}} -\begin{small} -\begin{lstlisting} - -unsigned int CIPRNG() { - static unsigned int x = 123123123; - unsigned long t1 = xorshift(); - unsigned long t2 = xor128(); - unsigned long t3 = xorwow(); - x = x^(unsigned int)t1; - x = x^(unsigned int)(t2>>32); - x = x^(unsigned int)(t3>>32); - x = x^(unsigned int)t2; - x = x^(unsigned int)(t1>>32); - x = x^(unsigned int)t3; - return x; -} -\end{lstlisting} -\end{small} - +\lstinputlisting[label=algo:seqCIPRNG,caption={C code of the sequential PRNG based on chaotic iterations}]{Chapters/chapter18/code2.cu} In Listing~\ref{algo:seqCIPRNG} a sequential version of the proposed PRNG based @@ -298,8 +279,7 @@ 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, etc.) and so, the better the performances on GPU are. Obviously, having these requirements in mind, it is possible to build -a program similar to the one presented in Listing -\ref{algo:seqCIPRNG}, which computes pseudorandom numbers on GPU. To +a program similar to the one presented in Listing~\ref{algo:seqCIPRNG}, which computes pseudorandom numbers on GPU. To do so, we must first recall that in the CUDA~\cite{Nvid10} environment, threads have a local identifier called \texttt{ThreadIdx}, which is relative to the block containing @@ -337,7 +317,7 @@ NumThreads: number of threads\;} \If{threadIdx is concerned by the computation} { retrieve data from InternalVarXorLikeArray[threadIdx] in local variables\; \For{i=1 to n} { - compute a new PRNG as in Listing\ref{algo:seqCIPRNG}\; + compute a new PRNG as in Listing~\ref{algo:seqCIPRNG}\; store the new PRNG in NewNb[NumThreads*threadIdx+i]\; } store internal variables in InternalVarXorLikeArray[threadIdx]\;