X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/prng_gpu.git/blobdiff_plain/45ee2a595e584941a3ec05a013d6682d88c42732..7c04da8823a9d68e733d60060a68207fce376a96:/prng_gpu.tex diff --git a/prng_gpu.tex b/prng_gpu.tex index 3e1aa83..f048253 100644 --- a/prng_gpu.tex +++ b/prng_gpu.tex @@ -1,6 +1,11 @@ \documentclass{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} +\usepackage{fullpage} +\usepackage{fancybox} +\usepackage{amsmath} +\usepackage{moreverb} +\usepackage{commath} \title{Efficient generation of pseudo random numbers based on chaotic iterations on GPU} \begin{document} @@ -22,7 +27,50 @@ Présentation des itérations chaotiques \section{Efficient prng based on chaotic iterations} -On parle du séquentiel avec des nombres 64 bits +On parle du séquentiel avec des nombres 64 bits\\ + +Faire le lien avec le paragraphe précédent (je considère que la stratégie s'appelle $S^i$\\ + +In order to implement efficiently a PRNG based on chaotic iterations it is +possible to improve previous works [ref]. One solution consists in considering +that the strategy used $S^i$ contains all the bits for which the negation is +achieved out. Then instead of applying the negation on these bits we can simply +apply the xor operator between the current number and the strategy $S^i$. In +order to obtain the strategy we also use a classical PRNG. + +\begin{figure}[htbp] +\begin{center} +\fbox{ +\begin{minipage}{14cm} +unsigned int CIprng() \{\\ + static unsigned int x = 123123123;\\ + unsigned long t1 = xorshift();\\ + unsigned long t2 = xor128();\\ + unsigned long t3 = xorwow();\\ + x = x\textasciicircum (unsigned int)t1;\\ + x = x\textasciicircum (unsigned int)(t2$>>$32);\\ + x = x\textasciicircum (unsigned int)(t3$>>$32);\\ + x = x\textasciicircum (unsigned int)t2;\\ + x = x\textasciicircum (unsigned int)(t1$>>$32);\\ + x = x\textasciicircum (unsigned int)t3;\\ + return x;\\ +\} +\end{minipage} +} +\end{center} +\caption{sequential Chaotic Iteration PRNG} +\label{algo:seqCIprng} +\end{figure} + +In Figure~\ref{algo:seqCIprng} a sequential version of our chaotic iterations +based PRNG is presented. This version uses three classical 64 bits PRNG: the +\texttt{xorshift}, the \texttt{xor128} and the \texttt{xorwow}. These three +PRNGs are presented in~\cite{Marsaglia2003}. As each PRNG used works with +64-bits and as our PRNG works with 32 bits, the use of \texttt{(unsigned int)} +selects the 32 least significant bits whereas \texttt{(unsigned int)(t3$>>$32)} +selects the 32 most significants bits of the variable \texttt{t}. This version +sucesses the BigCrush of the TestU01 battery [P. L’ecuyer and + R. Simard. Testu01]. \section{Efficient prng based on chaotic iterations on GPU} @@ -37,5 +85,6 @@ On donne des temps de générations de nombre sur GPU puis on rappatrie sur CPU \section{Lyapunov} \section{Conclusion} - +\bibliographystyle{plain} +\bibliography{mabase} \end{document}