From: couturie Date: Wed, 24 Jun 2015 20:12:57 +0000 (+0200) Subject: ajout du fichier revision + quelques modifs dans le .Tex X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/prng_gpu.git/commitdiff_plain/a667a8b779e2f4966a3e5f889469183475b1ae9d?ds=sidebyside;hp=cae68b58b70de455ef66b7312c8625f25e83a37f ajout du fichier revision + quelques modifs dans le .Tex --- diff --git a/Revision.tex b/Revision.tex new file mode 100644 index 0000000..4356cf2 --- /dev/null +++ b/Revision.tex @@ -0,0 +1,120 @@ +\documentclass[a4paper]{article} + + + +\title{Efficient and Cryptographically Secure Generation of Chaotic Pseudorandom Numbers on GPU} +\author{} +\date{} + +\makeindex + +\begin{document} +\maketitle + +First of all, we would thank the reviewers for the detailled comments and suggestions for our paper. + + +\section*{Reviewer \#1:} +\begin{enumerate} +\item ``In my view, this is an outstanding paper that reports on outstanding work. The detail provided is extensive, well +thought out, and supports the authors' research thoroughly. In particular, I found the equations and algorithms to be understandable +(albeit on the upper edge of my understanding... I'm a compiler optimization guy by training) and in keeping with the highly technical + nature of PRNGs and the topic of RNGs in general. I'd suggest that the direction of future work be carefully planned based on +technological trends. GPUs are becoming more and more the standard technology for parallel processing as they are widely available, + cost effective and can get the job done. So, certainly including more work on larger scale GPU clusters would be well advised in addition + to the other parallel frameworks mentioned. + +Any specific comments I might make would only be minor quibbles with wording, and in this case it would simply be matters of writing + style. It wouldn't hurt the paper to have it gone over once by an editor who hasn't seen it previously to perhaps catch any slight + wording changes that might improve the overall style... but this paper is so strong anyway that if that didn't happen it wouldn't hurt either. + +One minor piece that I didn't find addressed in the paper is the issue of how the seed is acquired. Isn't it always important for the + seed to be sufficiently random and unpredictable, and if so, perhaps a mention about how important the seed is to the strength of a + RNG and any cryptographic technique should be added? + +Excellent excellent work!'' + +\medskip +In practice the seed are generated using ISAAC which is a cryptographic PRNG. So the security of our seed lies on the security of ISAAC. We think that this is enough to consider that our seeds are sufficiently secure. + +\end{enumerate} + + +\section*{Reviewer \#2:} +\begin{enumerate} +\item ``The paper "Efficient and Cryptographically Secure Generation of Chaotic Pseudorandom Numbers on GPU" presents a new +pseudo number generator comparing favorably with the CURAND library provided by NVIDIA. The need for high quality +number generation is ubiquitous in computer simulations based on stochastic methods and in cryptographic security. +It justifies the importance of the paper for readers of the journal. +The nice feature of the article is combined topological considerations on the notion of chaos with practical +implementation of a working algorithm and its tests. Large parts of the paper are recapitulation of an earlier +work and may seem redundant for a specialist in the field, however an average reader may need it as a review +on what has been done. The paper is quite clearly written in an understandable English so I recommend to publish +it in principle as is. However there is one point that I would optionally recommend the authors to adrees. + +In the paper I do not find information on the period of the resultant chaotic iteration pseudonumber + generator compared to the periods of input generators. It would be nice if it turned out that, among other +features their procedure to combine a few weaker but fast generators into a much stronger and also fast one, yielded a much +longer period of the resultant generator compared to any of the input generators.'' + +\medskip +We have added the following text in Section 4.2:\\ +Obviously, when $S$ is periodic of period $p$, then $x$ is periodic too of +period either $p$ or $2p$, depending of the fact that, after $p$ iterations, +the state of the system may or not be the same than before these iterations. +\end{enumerate} + + + + +\section*{Reviewer \#4:} +\begin{enumerate} +\item ``Comments to Authors + +This paper describes the mathematical basis for pseudorandom number generators PRNG and implements a GPU accelerated version +for execution and measurements on two Nvidia based GPGPU systems. +The paper is very well written and has only a few minor spelling mistakes, although some grammar formulations could be +reworked by a native speaker.'' + +\medskip +The paper has been reread by a native speaker + +\item ``The mathematical introductions are short and concise, enabling a reader to gather all relevant knowledge directly from this publication. + This always raises the question of novelty of the paper, as new aspects are arising only at a later stage in the paper itself +(i.e. the parallelisation part). Nevertheless, I find the introduction necessary to this extent. +While working through the paper a few minor questions arised: +- page 7, Algorithm 3: is the increment of i in the while loop implicit, or where is it incremented?'' + +In fact this is implicit with the while + +\item ``In Algorithm 5 and 6 threadIdx is written sometimes as threadId'' + + We have uniformized that + + \item ``Page 19, Algorithm 6: there are 8 random numbers and their corresponding 8 states. You state that only a few of them are used, which is reflected in the algorithm itself. Are always the same ones used, or do you also rotate there?'' + + In practice, 8 BBS random number are used but for each of them only the fourth last bits are used. So we used $8 \times 4=32$ bits. If we chose a bigger number of BBS, the computation is slower. That is why we have used 8 BBS which seems to be a good trade-off. + + \item ``In the references starting on page 21, some references need a bit more work. Probably BibTeX did some magic there and needs + to be tweaked manually. Example Ref [7] nist needs to be NIST.'' + + We have corrected that. + + \item ``Another nice aspect to consider in future might be different accelerator-based systems such as Intel Xeon Phi cards and speed measurements + using such cards. As supercomputers tend to get more and more heterogeneous (Tianhe-2, Stampede) using other accelerators than GPGPUs, + a Xeon Phi solution might be very beneficial for the community.'' + + Thank you for this remark, we have added that in the future work. + + + \item ``With the strong mathematical focus, the authors could also think about submitting this paper to a different, more +mathematically oriented journal, as the focus on supercomputers and supercomputing capabilities is not as strong in this paper. +Nevertheless, I recommend the paper for publication.'' + +In fact there are different part in this paper, we have chosen the Journal of Supercomputing because for previous submussions this journal has a wide audience and it is of really good quality. +\end{enumerate} + + + + +\end{document} diff --git a/mabase.bib b/mabase.bib index b1d62d4..77cfe94 100644 --- a/mabase.bib +++ b/mabase.bib @@ -1426,11 +1426,11 @@ note = {To appear}, @MISC{Nist10, author = {E. Barker and A. Roginsky}, - title = {DRAFT NIST Special Publication 800-131 Recommendation for the Transitioning + title = {{NIST} Special Publication 800-131{A} - Recommendation for the Transitioning of Cryptographic Algorithms and Key Sizes}, - year = {2010}, + year = {2011}, owner = {christophe}, - timestamp = {2010.08.18} + timestamp = {January 2011} } @ARTICLE{BarniBF03, @@ -4368,6 +4368,8 @@ booktitle = "Proceedings of the {ACM}/{SIGDA} 17th International title = "{ISAAC}", booktitle = "IWFSE: International Workshop on Fast Software Encryption, LNCS", + volume = "1039", + pages = "41--49", year = "1996", } diff --git a/prng_gpu.tex b/prng_gpu.tex index 8d4f21b..27702e8 100644 --- a/prng_gpu.tex +++ b/prng_gpu.tex @@ -1544,20 +1544,20 @@ NumThreads: Number of threads\; array\_comb1, array\_comb2: Arrays containing combinations of size combination\_size\;} \KwOut{NewNb: array containing random numbers in global memory} -\If{threadId is concerned} { - retrieve data from InternalVarXorLikeArray[threadId] in local variables including shared memory and x\; +\If{threadIdx is concerned} { + retrieve data from InternalVarXorLikeArray[threadIdx] in local variables including shared memory and x\; offset = threadIdx\%combination\_size\; o1 = threadIdx-offset+array\_comb1[offset]\; o2 = threadIdx-offset+array\_comb2[offset]\; \For{i=1 to n} { t=xor-like()\; t=t\textasciicircum shmem[o1]\textasciicircum shmem[o2]\; - shared\_mem[threadId]=t\; + shared\_mem[threadIdx]=t\; x = x\textasciicircum t\; - store the new PRNG in NewNb[NumThreads*threadId+i]\; + store the new PRNG in NewNb[NumThreads*threadIdx+i]\; } - store internal variables in InternalVarXorLikeArray[threadId]\; + store internal variables in InternalVarXorLikeArray[threadIdx]\; } \end{small} \caption{Main kernel for the chaotic iterations based PRNG GPU efficient @@ -1947,8 +1947,8 @@ array\_shift[4]=\{0,1,3,7\}\; } \KwOut{NewNb: array containing random numbers in global memory} -\If{threadId is concerned} { - retrieve data from InternalVarBBSArray[threadId] in local variables including shared memory and x\; +\If{threadIdx is concerned} { + retrieve data from InternalVarBBSArray[threadIdx] in local variables including shared memory and x\; we consider that bbs1 ... bbs8 represent the internal states of the 8 BBS numbers\; offset = threadIdx\%combination\_size\; o1 = threadIdx-offset+array\_comb[bbs1\&7][offset]\; @@ -1967,12 +1967,12 @@ array\_shift[4]=\{0,1,3,7\}\; t$<<$=shift\; t|=BBS2(bbs2)\&array\_shift[shift]\; t=t\textasciicircum shmem[o1]\textasciicircum shmem[o2]\; - shared\_mem[threadId]=t\; + shared\_mem[threadIdx]=t\; x = x\textasciicircum t\; - store the new PRNG in NewNb[NumThreads*threadId+i]\; + store the new PRNG in NewNb[NumThreads*threadIdx+i]\; } - store internal variables in InternalVarXorLikeArray[threadId] using a rotation\; + store internal variables in InternalVarXorLikeArray[threadIdx] using a rotation\; } \end{small} \caption{main kernel for the BBS based PRNG GPU}