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

Private GIT Repository
ajout du fichier revision + quelques modifs dans le .Tex
authorcouturie <raphael.couturier@univ-fcomte.Fr>
Wed, 24 Jun 2015 20:12:57 +0000 (22:12 +0200)
committercouturie <raphael.couturier@univ-fcomte.Fr>
Wed, 24 Jun 2015 20:12:57 +0000 (22:12 +0200)
Revision.tex [new file with mode: 0644]
mabase.bib
prng_gpu.tex

diff --git a/Revision.tex b/Revision.tex
new file mode 100644 (file)
index 0000000..4356cf2
--- /dev/null
@@ -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} 
index b1d62d491431db0b7f6d23b388e46139eff0d895..77cfe94086cfba7ce728c32183f0f42bca7afb26 100644 (file)
@@ -1426,11 +1426,11 @@ note = {To appear},
 
 @MISC{Nist10,
   author = {E. Barker and A. Roginsky},
 
 @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},
        of Cryptographic Algorithms and Key Sizes},
-  year = {2010},
+  year = {2011},
   owner = {christophe},
   owner = {christophe},
-  timestamp = {2010.08.18}
+  timestamp = {January 2011}
 }
 
 @ARTICLE{BarniBF03,
 }
 
 @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",
   title =      "{ISAAC}",
   booktitle =  "IWFSE: International Workshop on Fast Software
                 Encryption, LNCS",
+                volume =       "1039",
+  pages =      "41--49",
   year =       "1996",
 }
 
   year =       "1996",
 }
 
index 8d4f21bc587cdb03dc563cf63bd271e9027d5ca7..27702e86deb5c8a719f4556331f233075bfe5a68 100644 (file)
@@ -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}
 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]\;
   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\;
 
     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
 }
 \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}
 }
 
 \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]\;
   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]\;
     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\;
 
     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}
 }
 \end{small}
 \caption{main kernel for the BBS based PRNG GPU}