X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/prng_gpu.git/blobdiff_plain/3e3534bd31a342c01e2f3770836bb62ecd460cfe..a595bc795f31e05fc7fcc8415e1549bdda84b076:/prng_gpu.tex?ds=sidebyside diff --git a/prng_gpu.tex b/prng_gpu.tex index 081ec9c..730b620 100644 --- a/prng_gpu.tex +++ b/prng_gpu.tex @@ -752,7 +752,7 @@ we have chosen to use the ISAAC PRNG 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 number $x$ which keeps -the last generated random numbers. Other internal variables are used by the +the last generated random numbers. Other internal variables are also used by the xor-like PRNGs. More precisely, the implementation of the xor128, the xorshift and the xorwow respectively require 4, 5 and 6 unsigned long as internal variables. @@ -771,10 +771,20 @@ NumThreads: Number of threads\;} store internal variables in InternalVarXorLikeArray[threadId]\; } -\caption{PRNG with chaotic functions} -\label{main kernel for the chaotic iterations based PRNG GPU version} +\caption{main kernel for the chaotic iterations based PRNG GPU version} +\label{algo:gpu_kernel} \end{algorithm} +According to the available memory in the GPU and the number of threads used +simultenaously, the number of random numbers that a thread can generate inside a +kernel is limited, i.e. the variable \texttt{n} in +algorithm~\ref{algo:gpu_kernel}. For example, if $100,000$ threads are used and +if $n=100$\footnote{in fact, we need to add the initial seed (a 32-bits number)} +then the memory required to store internals variables of xor-like +PRNGs\footnote{we multiply this number by $2$ in order to count 32-bits numbers} +and random number of our PRNG is equals to $100,000\times ((4+5+6)\times +2+(1+100))=1,310,000$ 32-bits numbers, i.e. about $52$Mb. + \section{Experiments} On passe le BigCrush\\