RNGTest: Test a few RNGs with SmallCrush
This example runs RNGTest to subject a few selected random number generators to TestU01's SmallCrush battery.
Control file
# vim: filetype=sh: # This is a comment # Keywords are case-sensitive title "Example RNG test suite" smallcrush # mkl_mcg59 # seed 213 # uniform_method standard # gaussian_method icdf # end # mkl_mcg31 seed 0 end mkl_mrg32k3a seed 2 end rngsse_gm55 seed 0 seqlen long end rngsse_mrg32k3a seed 0 end end
Example run on 8 CPUs
./charmrun +p8 Main/rngtest -v -c ../../tmp/rngtest.q
Output
Running on 8 processors: Main/rngtest -v -c ../../tmp/rngtest.q charmrun> /usr/bin/setarch x86_64 -R mpirun -np 8 Main/rngtest -v -c ../../tmp/rngtest.q Charm++> Running on MPI version: 3.0 Charm++> level of thread support used: MPI_THREAD_SINGLE (desired: MPI_THREAD_SINGLE) Charm++> Running in non-SMP mode: numPes 8 Converse/Charm++ Commit ID: 1a4f4bc CharmLB> Load balancer assumes all CPUs are same. Charm++> Running on 1 unique compute nodes (8-way SMP). Charm++> cpu topology info is gathered in 0.002 seconds. ,::,` `. .;;;'';;;: ;;# ;;;@+ +;;; ;;;;;, ;;;;. ;;;;;, ;;;; ;;;; `;;;;;;: ;;; :;;@` :;;' .;;;@, ,;@, ,;;;@: .;;;' .;+;. ;;;@#:';;; ;;;;' ;;;# ;;;: ;;;' ;: ;;;' ;;;;; ;# ;;;@ ;;; ;+;;' .;;+ ;;;# ;;;' ;: ;;;' ;#;;;` ;# ;;@ `;;+ .;#;;;. ;;;# :;;' ;;;' ;: ;;;' ;# ;;; ;# ;;;@ ;;; ;# ;;;+ ;;;# .;;; ;;;' ;: ;;;' ;# ,;;; ;# ;;;# ;;;: ;@ ;;; ;;;# .;;' ;;;' ;: ;;;' ;# ;;;; ;# ;;;' ;;;+ ;', ;;;@ ;;;+ ,;;+ ;;;' ;: ;;;' ;# ;;;' ;# ;;;' ;;;' ;':::;;;; `;;; ;;;@ ;;;' ;: ;;;' ;# ;;;';# ;;;@ ;;;:,;+++++;;;' ;;;; ;;;@ ;;;# .;. ;;;' ;# ;;;;# `;;+ ;;# ;# ;;;' .;;; :;;@ ,;;+ ;+ ;;;' ;# ;;;# ;;; ;;;@ ;@ ;;;. ';;; ;;;@, ;;;;``.;;@ ;;;' ;+ .;;# ;;; :;;@ ;;; ;;;+ :;;;;;;;+@` ';;;;;'@ ;;;;;, ;;;; ;;+ +;;;;;;#@ ;;;;. .;;;;;; .;;#@' `#@@@: ;::::; ;:::: ;@ '@@@+ ;:::; ;:::::: :;;;;;;. __________ _______ __________________ .;@+@';;;;;;' \______ \\ \ / _____\__ _______ ______/ |_ ` '#''@` | _// | \/ \ ___ | |_/ __ \ / ___\ __\ | | / | \ \_\ \| |\ ___/ \___ \ | | |____|_ \____|__ /\______ /|____| \___ /____ >|__| \/ \/ \/ \/ \/ < ENVIRONMENT > ------ o ------ * Build environment: -------------------- Hostname : karman Executable : rngtest Version : 0.1 Release : LA-CC-XX-XXX Revision : 497a86fd7840c2f77a787e373c95ac2428f0dc2a CMake build type : Debug Asserts : on (turn off: CMAKE_BUILD_TYPE=RELEASE) Exception trace : on (turn off: CMAKE_BUILD_TYPE=RELEASE) MPI C++ wrapper : /opt/openmpi/1.8/clang/system/bin/mpicxx Underlying C++ compiler : /usr/bin/clang++-3.5 Build date : Fri Jan 30 07:01:00 MST 2015 * Run-time environment: ----------------------- Date, time : Mon Feb 2 16:01:55 2015 Work directory : /home/jbakosi/code/quinoa/build/clang Executable (rel. to work dir) : Main/rngtest Command line arguments : '-v -c ../../tmp/rngtest.q' Output : verbose (quiet: omit -v) Control file : ../../tmp/rngtest.q Parsed control file : success < FACTORY > ---- o ---- * Registered batteries: ----------------------- SmallCrush Crush BigCrush < PROBLEM > ---- o ---- * Title: Example RNG test suite ------------------------------- * RNG battery: SmallCrush (10 tests, 15 stats) ---------------------------------------------- Birthday Spacings Simplified Poker Gap Collision Hamming Independence Weight Distribution Coupon Collector Maximum-of-t Maximum-of-t Anderson-Darling Random Walk 1 Stat H Random Walk 1 Stat M Random Walk 1 Stat J Random Walk 1 Stat R Random Walk 1 Stat C Matrix Rank * RNGs tested (4): ------------------ < MKL MCG311 > seed : 0 uniform method : standard Gaussian method : Box-Muller < MKL MRG32K3A > seed : 2 uniform method : standard Gaussian method : Box-Muller < RNGSSE GM55 > seed : 0 sequence length : long < RNGSSE MRG32K3A > seed : 0 < SMALLCRUSH > ------ o ------ * Statistics computed (60 stats from 40 tests): ----------------------------------------------- Legend: [done/total/failed] Test, RNG : p-value (eps means a value < 1.0e-300) (eps1 means a value < 1.0e-15) [1/40/1] Birthday Spacings, MKL MCG311 : fail, p-value = eps [2/40/2] Collision, MKL MCG311 : fail, p-value = 8.95103e-06 [3/40/2] Matrix Rank, MKL MCG311 : pass [4/40/0] Birthday Spacings, MKL MRG32K3A : pass [5/40/2] Simplified Poker, MKL MCG311 : pass [6/40/2] Maximum-of-t, MKL MCG311 : pass [6/40/2] Maximum-of-t Anderson-Darling : pass [7/40/2] Hamming Independence, MKL MCG311 : pass [8/40/0] Maximum-of-t, MKL MRG32K3A : pass [8/40/0] Maximum-of-t Anderson-Darling : pass [9/40/0] Collision, MKL MRG32K3A : pass [10/40/2] Coupon Collector, MKL MCG311 : pass [11/40/2] Gap, MKL MCG311 : pass [12/40/2] Weight Distribution, MKL MCG311 : pass [13/40/0] Weight Distribution, MKL MRG32K3A : pass [14/40/0] Random Walk 1 Stat H, RNGSSE GM55 : pass [14/40/0] Random Walk 1 Stat M : pass [14/40/0] Random Walk 1 Stat J : pass [14/40/0] Random Walk 1 Stat R : pass [14/40/0] Random Walk 1 Stat C : pass [15/40/2] Random Walk 1 Stat H, MKL MCG311 : pass [15/40/2] Random Walk 1 Stat M : pass [15/40/2] Random Walk 1 Stat J : pass [15/40/2] Random Walk 1 Stat R : pass [15/40/2] Random Walk 1 Stat C : pass [16/40/0] Gap, MKL MRG32K3A : pass [17/40/0] Random Walk 1 Stat H, MKL MRG32K3A : pass [17/40/0] Random Walk 1 Stat M : pass [17/40/0] Random Walk 1 Stat J : pass [17/40/0] Random Walk 1 Stat R : pass [17/40/0] Random Walk 1 Stat C : pass [18/40/0] Birthday Spacings, RNGSSE GM55 : pass [19/40/0] Coupon Collector, MKL MRG32K3A : pass [20/40/0] Simplified Poker, MKL MRG32K3A : pass [21/40/0] Matrix Rank, MKL MRG32K3A : pass [22/40/0] Simplified Poker, RNGSSE MRG32K3A : pass [23/40/0] Collision, RNGSSE GM55 : pass [24/40/0] Hamming Independence, MKL MRG32K3A : pass [25/40/0] Weight Distribution, RNGSSE MRG32K3A : pass [26/40/0] Coupon Collector, RNGSSE GM55 : pass [27/40/0] Weight Distribution, RNGSSE GM55 : pass [28/40/0] Maximum-of-t, RNGSSE GM55 : pass [28/40/0] Maximum-of-t Anderson-Darling : pass [29/40/0] Simplified Poker, RNGSSE GM55 : pass [30/40/0] Gap, RNGSSE GM55 : pass [31/40/0] Hamming Independence, RNGSSE GM55 : pass [32/40/0] Collision, RNGSSE MRG32K3A : pass [33/40/0] Matrix Rank, RNGSSE MRG32K3A : pass [34/40/0] Coupon Collector, RNGSSE MRG32K3A : pass [35/40/0] Gap, RNGSSE MRG32K3A : pass [36/40/0] Matrix Rank, RNGSSE GM55 : pass [37/40/0] Random Walk 1 Stat H, RNGSSE MRG32K3A : pass [37/40/0] Random Walk 1 Stat M : pass [37/40/0] Random Walk 1 Stat J : pass [37/40/0] Random Walk 1 Stat R : pass [37/40/0] Random Walk 1 Stat C : pass [38/40/0] Maximum-of-t, RNGSSE MRG32K3A : pass [38/40/0] Maximum-of-t Anderson-Darling : pass [39/40/0] Hamming Independence, RNGSSE MRG32K3A : pass [40/40/0] Birthday Spacings, RNGSSE MRG32K3A : pass * Failed statistics (2/60): --------------------------- The following tests gave p-values outside [0.001, 0.999] List groupped by RNG, in the order given in the input file Legend: Test, RNG : p-value (eps means a value < 1.0e-300) (eps1 means a value < 1.0e-15) Birthday Spacings, MKL MCG311 : fail, p-value = eps Collision : fail, p-value = 8.95103e-06 * Generator cost: ----------------- Measured times in seconds in increasing order (low is good) MKL MCG311 : 51.0734 (1x) MKL MRG32K3A : 51.9438 (1.02x) RNGSSE MRG32K3A : 62.3795 (1.22x) RNGSSE GM55 : 92.9222 (1.82x) * Generator quality: -------------------- Number of failed tests in increasing order (low is good) MKL MRG32K3A : 0 RNGSSE GM55 : 0 RNGSSE MRG32K3A : 0 MKL MCG311 : 2 * Timers (h:m:s): ----------------- Migration of global-scope data : 0:0:0 Total runtime : 0:0:40 [Partition 0][Node 0] End of program