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

Private GIT Repository
f0482538e2238b6131a940654e744d204d24049b
[prng_gpu.git] / prng_gpu.tex
1 \documentclass{article}
2 \usepackage[utf8]{inputenc}
3 \usepackage[T1]{fontenc}
4 \usepackage{fullpage}
5 \usepackage{fancybox}
6 \usepackage{amsmath}
7 \usepackage{moreverb}
8 \usepackage{commath}
9
10 \title{Efficient generation of pseudo random numbers based on chaotic iterations on GPU}
11 \begin{document}
12 \maketitle
13
14 \begin{abstract}
15 This is the abstract
16 \end{abstract}
17
18 \section{Introduction}
19
20 Interet des itérations chaotiques pour générer des nombre alea\\
21 Interet de générer des nombres alea sur GPU
22 ...
23
24 \section{Chaotic iterations}
25
26 Présentation des itérations chaotiques
27
28 \section{Efficient prng based on chaotic iterations}
29
30 On parle du séquentiel avec des nombres 64 bits\\
31
32 Faire le lien avec le paragraphe précédent (je considère que la stratégie s'appelle $S^i$\\
33
34 In  order to  implement efficiently  a PRNG  based on  chaotic iterations  it is
35 possible to improve  previous works [ref]. One solution  consists in considering
36 that the  strategy used $S^i$  contains all the  bits for which the  negation is
37 achieved out. Then instead of applying  the negation on these bits we can simply
38 apply the  xor operator between  the current number  and the strategy  $S^i$. In
39 order to obtain the strategy we also use a classical PRNG.
40
41 \begin{figure}[htbp]
42 \begin{center}
43 \fbox{
44 \begin{minipage}{14cm}
45 unsigned int CIprng() \{\\
46   static unsigned int x = 123123123;\\
47   unsigned long t1 = xorshift();\\
48   unsigned long t2 = xor128();\\
49   unsigned long t3 = xorwow();\\
50   x = x\textasciicircum (unsigned int)t1;\\
51   x = x\textasciicircum (unsigned int)(t2$>>$32);\\
52   x = x\textasciicircum (unsigned int)(t3$>>$32);\\
53   x = x\textasciicircum (unsigned int)t2;\\
54   x = x\textasciicircum (unsigned int)(t1$>>$32);\\
55   x = x\textasciicircum (unsigned int)t3;\\
56   return x;\\
57 \}
58 \end{minipage}
59 }
60 \end{center}
61 \caption{sequential Chaotic Iteration PRNG}
62 \label{algo:seqCIprng}
63 \end{figure}
64
65 In Figure~\ref{algo:seqCIprng}  a sequential  version of our  chaotic iterations
66 based PRNG  is presented.  This version  uses three classical 64  bits PRNG: the
67 \texttt{xorshift},  the \texttt{xor128}  and the  \texttt{xorwow}.   These three
68 PRNGs  are presented  in~\cite{Marsaglia2003}.   As each  PRNG  used works  with
69 64-bits and as  our PRNG works with 32 bits, the  use of \texttt{(unsigned int)}
70 selects the 32 least  significant bits whereas \texttt{(unsigned int)(t3$>>$32)}
71 selects the 32  most significants bits of the  variable \texttt{t}. This version
72 sucesses   the   BigCrush   of    the   TestU01   battery   [P.   L’ecuyer   and
73   R. Simard. Testu01].
74
75 \section{Efficient prng based on chaotic iterations on GPU}
76
77 On parle du passage du sequentiel au GPU
78
79 \section{Experiments}
80
81 On passe le BigCrush\\
82 On donne des temps de générations sur GPU/CPU\\
83 On donne des temps de générations de nombre sur GPU puis on rappatrie sur CPU / CPU ? bof bof, on verra
84
85 \section{Lyapunov}
86
87 \section{Conclusion}
88 \bibliographystyle{plain}
89 \bibliography{mabase}
90 \end{document}