[ 
https://issues.apache.org/jira/browse/RNG-86?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16984577#comment-16984577
 ] 

Alex Herbert commented on RNG-86:
---------------------------------

I had some compute time to spare so ran all the generators that did not fail at 
4TB output for the full PractRand duration of 32TB to see what would happen:
{noformat}
RNG                     PractRand       ∩     
ISAAC                   -                     
SPLIT_MIX_64            -                     
MWC_256                 -                     
KISS                    -                     
XO_RO_SHI_RO_64_SS      -                     
XO_SHI_RO_128_SS        -                     
XO_RO_SHI_RO_128_SS     -                     
XO_SHI_RO_256_SS        -                     
XO_SHI_RO_512_SS        -                     
PCG_XSH_RR_32           -                     
PCG_XSH_RS_32           42              4 TiB 
PCG_RXS_M_XS_64         -                     
PCG_MCG_XSH_RR_32       45              32 TiB
MSWS                    -                     
SFC_32                  -                     
SFC_64                  -                     
JSF_32                  -                     
JSF_64                  -                     
XO_SHI_RO_128_PP        -                     
XO_RO_SHI_RO_128_PP     -                     
XO_SHI_RO_256_PP        -                     
XO_SHI_RO_512_PP        -                     
XO_RO_SHI_RO_1024_PP    -                     
XO_RO_SHI_RO_1024_SS    - 
{noformat}
h2. RNG testing

Most of the generators are fine with this amount of amount. This is 2^45 bytes 
or 2^43 integers or 2^42 longs.

The only generators that are not OK with this are some of the PCG ones. Here 
are their results for the 3 runs to only 4TB of output:
{noformat}
PCG_XSH_RR_32           -,-,-                  
PCG_XSH_RS_32           41,-,-                 
PCG_RXS_M_XS_64         -,-,-                  
PCG_MCG_XSH_RR_32       -,-,-                  
PCG_MCG_XSH_RS_32       40,41,41        2 TiB  
PCG_XSH_RR_32_OS        -,-,-                  
PCG_XSH_RS_32_OS        -,-,-                  
PCG_RXS_M_XS_64_OS      -,-,-  
{noformat}
These show that the RS output transformation is weaker than RR. This is 
expected as described by the author of PCG.

The PCG_MCG_XSH_RR_32 generator fails at 32TB. This generator has an underlying 
64-bit Lehmer-style MCG generator with no increment and a period of 2^62. The 
equivalent PCG generator using an LCG with an increment and a period of 2^64 
did not fail (PCG_XSH_RR_32).
h2. Run times

The total run time of the tests was 84 days 08:54:26.27. Each was running 
PractRand multi-threaded which gives an approximate 3x speed up. So single 
threaded this would be around 2/3 of a year. This does not count the thread 
used for Java to generate the output. In real terms it took about 3 weeks on 
two workstations with a total of 40 cores.

I don't think there is a need to run this much testing on new generators added 
to the library. The current threshold of passing 4TB of PractRand is good 
enough to spot all the weak generators in the library. Any new generators 
should continue to be tested at that level with 3 runs of PractRand. This takes 
approximately the same amount of time as 5 runs of BigCrush. However note that 
to achieve similar run-times PractRand uses double the number of cores as the 
stress test application reserves 3 cores per PractRand test process as opposed 
to 1 for a BigCrush test process; 1 core is reserved for the java RNG:
{noformat}
PractRand = 1 + 3
BigCrush = 1 + 1
{noformat}

> PractRand
> ---------
>
>                 Key: RNG-86
>                 URL: https://issues.apache.org/jira/browse/RNG-86
>             Project: Commons RNG
>          Issue Type: Wish
>          Components: examples
>            Reporter: Gilles Sadowski
>            Assignee: Alex Herbert
>            Priority: Minor
>             Fix For: 1.3
>
>
> Integrate another test suite to the {{RandomStressTester}} application:
>  [http://pracrand.sourceforge.net/]
> The library also contains many RNG implementations (C++).
> FTR: https://markmail.org/message/74zmora4jrhwb5hu



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to