From: Raphael Couturier Date: Mon, 14 Nov 2011 08:38:58 +0000 (+0100) Subject: modif X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/prng_gpu.git/commitdiff_plain/559dbc1685c4f30e9ff30ebb4609965f421c697c?ds=inline modif --- diff --git a/prng_gpu.tex b/prng_gpu.tex index d95e87f..5b07118 100644 --- a/prng_gpu.tex +++ b/prng_gpu.tex @@ -44,6 +44,14 @@ Guyeux\thanks{Authors in alphabetic order}} \maketitle \begin{abstract} +In this paper we present a new produce pseudo-random numbers generator (PRNG) on +graphics processing units (GPU). This PRNG is based on chaotic iterations. it +is proven to be chaotic in the Devany's formulation. We propose an efficient +implementation for GPU which succeeds to the {\it BigCrush}, the hardest +batteries of test of TestU01. Experimentations show that this PRNG can generate +about 20 billions of random numbers per second on Tesla C1060 and NVidia GTX280 +cards. + \end{abstract} @@ -63,7 +71,7 @@ Concerning the chaotic properties, Devaney~\cite{Devaney} proposed a common mathematical formulation of chaotic dynamical systems. In a previous work~\cite{bgw09:ip} we have proposed a new familly of chaotic -PRNG based on chaotic iterations (IC). We have proven that these PRNGs are +PRNG based on chaotic iterations. We have proven that these PRNGs are chaotic in the Devaney's sense. In this paper we propose a faster version which is also proven to be chaotic. @@ -75,18 +83,22 @@ also provide an efficient PRNG for GPU respecting based on IC. Such devices allows us to generated almost 20 billions of random numbers per second. In order to establish that our PRNGs are chaotic according to the Devaney's -formulation, we extend what we have proposed in~\cite{guyeux10}. Moreover, we define a new distance to measure the disorder in the chaos and we prove some interesting properties with this distance. +formulation, we extend what we have proposed in~\cite{guyeux10}. Moreover, we +define a new distance to measure the disorder in the chaos and we prove some +interesting properties with this distance. The rest of this paper is organised as follows. In Section~\ref{section:related - works} we review some GPU implementions of PRNG. Section~\ref{section:BASIC RECALLS} gives some basic recalls on Devanay's formation of chaos and -chaotic iterations. In Section~\ref{sec:pseudo-random} the proof of chaos of our -PRNGs is studied. Section~\ref{sec:efficient prng} presents an efficient + works} we review some GPU implementions of PRNG. Section~\ref{section:BASIC + RECALLS} gives some basic recalls on Devanay's formation of chaos and chaotic +iterations. In Section~\ref{sec:pseudo-random} the proof of chaos of our PRNGs +is studied. Section~\ref{sec:efficient prng} presents an efficient implementation of our chaotic PRNG on a CPU. Section~\ref{sec:efficient prng gpu} describes the GPU implementation of our chaotic PRNG. In Section~\ref{sec:experiments} some experimentations are presented. Section~\ref{sec:de la relativité du désordre} describes the relativity of -disorder. In Section~\ref{sec: chaos order topology} the proof that chaotic -iterations can be described by iterations on a real interval is established. Finally, we give a conclusion and some perspectives. +disorder. In Section~\ref{sec: chaos order topology} the proof that chaotic +iterations can be described by iterations on a real interval is +established. Finally, we give a conclusion and some perspectives. @@ -748,29 +760,7 @@ x \oplus S^i&=&1&1&0&1&1&1&0&0&0&1&1&1&0&1&0&1\\ \end{array} $$ -%% \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} + @@ -828,7 +818,7 @@ 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~\ref{Jenkins96} to initalize all the +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