]> AND Private Git Repository - prng_gpu.git/blobdiff - prng_gpu.tex
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
ajout
[prng_gpu.git] / prng_gpu.tex
index c505685702dc3ecf4cead612d0b5e25d6828b7a8..f0482538e2238b6131a940654e744d204d24049b 100644 (file)
@@ -35,7 +35,8 @@ 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
 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$.
+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}
 
 \begin{figure}[htbp]
 \begin{center}
@@ -46,12 +47,12 @@ unsigned int CIprng() \{\\
   unsigned long t1 = xorshift();\\
   unsigned long t2 = xor128();\\
   unsigned long t3 = xorwow();\\
   unsigned long t1 = xorshift();\\
   unsigned long t2 = xor128();\\
   unsigned long t3 = xorwow();\\
-  x = x\^\ (unsigned int)t;\\
-  x = x\^\ (unsigned int)(t2$>>$32);\\
-  x = x\^\ (unsigned int)(t3$>>$32);\\
-  x = x\^\ (unsigned int)t2;\\
-  x = x\^\ (unsigned int)(t$>>$32);\\
-  x = x\^\ (unsigned int)t3;\\
+  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}
   return x;\\
 \}
 \end{minipage}
@@ -61,9 +62,15 @@ unsigned int CIprng() \{\\
 \label{algo:seqCIprng}
 \end{figure}
 
 \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  xorshift, the
-xor128 and the xorwow. These three PRNGs are presented in~\cite{Marsaglia2003}.
+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}
 
 
 \section{Efficient prng based on chaotic iterations on GPU}