Download presentation
Presentation is loading. Please wait.
1
Random Number Testing and RDM
Random numbers are particularly important for the Radioactive Decay Module Sampling decay times is important for a number of use cases: nuclear physics: e.g. looking for rare processes, summing effects Medical physics: very large data sets (current application has 500MBq and simulated for 10's of seconds) → critical is the background (scattering, energy pile-up) and random contribution (events overlapping) Repetition and more significantly granularity are crucial Computation time also has an impact – the RDM can be quite heavy (e.g. beta decay) so the efficiency of the random number generation is correlated RDM mini-workshop 22nd March 2016
2
Random Number Testing Create random numbers in a flat distribution:
Unit test: RNG.flat() Unit test: G4UniformRand() G4UniformRand() inside an application Time distribution of decay window biased particles from RDM Outputs: Measure time for trials Determine time interval between events (granularity) Record created times (1s interval) Sort in increasing times Plot the distribution of time intervals between events (necessary requirement for random event pile-up studies) PRNGs tested: Ranecu Ranlux Ranshi Ranlux64 Mersenne Twist MixMax Geant ref02 RDM mini-workshop 22nd March 2016
3
Times from Trial Test (laptop/ubuntu)
Generator Sequential flat() /s G4UniformRand() Multithreaded Ranecu 11.68 15.19 9.68 15.04 Ranlux 130.62 142.55 95.18 115.59 Ranshi 8.71 7.13 7.4 12.71 Ranlux64 114.58 116.81 128.29 147.53 MTwist 6.91 32.23 21.27 10.79 MixMax 10.26 11.3 7.56 15.09 RDM mini-workshop 22nd March 2016
4
Times from Trial Test (cluster/RHEL)
Generator Sequential flat() /s G4UniformRand() Multithreaded Ranecu 10.51 13.56 10.82 18.08 Ranlux 70.79 76.27 73.82 88.58 Ranshi 5.39 7.98 5.64 11.36 Ranlux64 83.2 88.1 91.01 96.14 MTwist 6.94 10.24 8.0 11.3 MixMax 8.66 12.6 10.56 13.88 RDM mini-workshop 22nd March 2016
5
Application Test Create positrons with a uniform (flat) timing distribution – across 1s Sequential RDM mini-workshop 22nd March 2016
6
ST: 100k G4UniformRand() - Ranecu
RDM mini-workshop 22nd March 2016
7
ST: 100k G4UniformRand() - Ranlux
RDM mini-workshop 22nd March 2016
8
ST: 100k G4UniformRand() - Ranshi
RDM mini-workshop 22nd March 2016
9
ST: 100k G4UniformRand() - Ranlux64
RDM mini-workshop 22nd March 2016
10
ST: 100k G4UniformRand() - MTwist
RDM mini-workshop 22nd March 2016
11
ST: 100k G4UniformRand() - MixMax
RDM mini-workshop 22nd March 2016
12
Application Test Create positrons with a uniform (flat) timing distribution – across 1s Multi threaded (4 threads) RDM mini-workshop 22nd March 2016
13
MT: 100k G4UniformRand() - Ranecu
RDM mini-workshop 22nd March 2016
14
MT: 100k G4UniformRand() - Ranlux
RDM mini-workshop 22nd March 2016
15
MT: 100k G4UniformRand() - Ranshi
RDM mini-workshop 22nd March 2016
16
MT: What's happened to Ranshi
The time is somehow limited to ~ (signed 32-bit) – bit loss? RDM mini-workshop 22nd March 2016
17
MT: 100k G4UniformRand() - Ranlux64
RDM mini-workshop 22nd March 2016
18
MT: 100k G4UniformRand() - MTwist
RDM mini-workshop 22nd March 2016
19
MT: 100k G4UniformRand() - MixMax
Super slow – race condition? RDM mini-workshop 22nd March 2016
20
Profiling? Gprof and kcachegrind both seem to indicate minimal impact/differences between mixmax and ranecu Threadlock hazard blocking mixmax? RDM mini-workshop 22nd March 2016
21
Application Test Create positrons with a uniform (flat) timing distribution – across 1s Multi threaded, but with only ONE thread RDM mini-workshop 22nd March 2016
22
MT1: 100k G4UniformRand() - Ranecu
RDM mini-workshop 22nd March 2016
23
MT1: 100k G4UniformRand() - Ranlux
RDM mini-workshop 22nd March 2016
24
MT1: 100k G4UniformRand() - Ranshi
RDM mini-workshop 22nd March 2016
25
MT1: What's happened to Ranshi?
The time is somehow limited to ~ (signed 32-bit) – bit loss? RDM mini-workshop 22nd March 2016
26
MT1: 100k G4UniformRand() - Ranlux64
RDM mini-workshop 22nd March 2016
27
MT1: 100k G4UniformRand() - MTwist
RDM mini-workshop 22nd March 2016
28
MT1: 100k G4UniformRand() - MixMax
Super slow – race condition? RDM mini-workshop 22nd March 2016
29
Radioactive Decay Time Window
Set decay time window to 1s Record the decay time of 22Na RDM should use G4UniformRand() across the time window and weighted by the half-life Essentially flat for 22Na (>2 year half-life) RDM mini-workshop 22nd March 2016
30
RDM Test Sequential RDM mini-workshop 22nd March 2016
31
ST: 100k RDM (22Na decay) - Ranecu
RDM mini-workshop 22nd March 2016
32
ST: 100k RDM (22Na decay) - Ranlux
RDM mini-workshop 22nd March 2016
33
ST: 100k RDM (22Na decay) - Ranshi
RDM mini-workshop 22nd March 2016
34
ST: 100k RDM (22Na decay) - Ranlux64
RDM mini-workshop 22nd March 2016
35
ST: 100k RDM (22Na decay) - MTwist
RDM mini-workshop 22nd March 2016
36
ST: 100k RDM (22Na decay) - MixMax
RDM mini-workshop 22nd March 2016
37
RDM Test Multi Threaded RDM mini-workshop 22nd March 2016
38
MT: 100k RDM (22Na decay) - Ranecu
RDM mini-workshop 22nd March 2016
39
MT: 100k RDM (22Na decay) - Ranlux
RDM mini-workshop 22nd March 2016
40
MT: 100k RDM (22Na decay) - Ranshi
RDM mini-workshop 22nd March 2016
41
MT: 100k RDM (22Na decay) - Ranlux64
RDM mini-workshop 22nd March 2016
42
MT: 100k RDM (22Na decay) - MTwist
RDM mini-workshop 22nd March 2016
43
MT: 100k RDM (22Na decay) - MixMax
RDM mini-workshop 22nd March 2016
44
RDM Test Multi Threaded, but with only ONE thread RDM mini-workshop
22nd March 2016
45
MT: 100k RDM (22Na decay) - Ranlux64
RDM mini-workshop 22nd March 2016
46
MT1: 100k RDM (22Na decay) - Ranlux64
RDM mini-workshop 22nd March 2016
47
Times from RDM (laptop/ubuntu)
Generator Sequential positron /s 22Na Multithreaded 1 Multithreaded Ranecu 27.8 34.5 48.4 (69.7s) [gprof: 5m17] 32.9 Ranlux 31.1 58.0 37.5 (93.3s) [gprof: 7m10) 38.6 Ranshi 30.7 51.1 18.9 (29.65s) [gprof: 42.7s] 11.8 Ranlux64 31.6 60.1 44.4 (114.6s) [gprof: 7m2s] 55.5 MTwist 26.4 56.5 37.3 (75.7s) [gprof: 7m22s] 30.6 MixMax 28.6 46.2 17m12.3 (62m28.5s) [gprof: 945m28s] 31m57 MT: 22Na similar behaviour, except MixMax – real 43m, user: 54m RDM mini-workshop 22nd March 2016
48
Times from RDM (cluster/RHEL)
Generator Sequential positron /s Single Threaded 22Na Multithreaded 1 Multithreaded Ranecu 46.1 2m34.3 (4m38s) 44.6 Ranlux 40.4 2m26.6 (4m43s) 49.0 Ranshi 40.2 2m21.7 (3m44s) 16.7 Ranlux64 43.2 2m28.5 (4m39s) 49.2 MTwist 38.7 2m27.2 (4m35s) 42.3 MixMax 40.0 3m25.1 (45m11s)!!! 27m30.4 RDM mini-workshop 22nd March 2016
49
RDM Biasing Options For PET: A common use case is to have an activity (Bq) and not be interested in decay time GATE “recommends” modifying the PDG lifetime This (previous external) hack now requires modifying Geant4 source The RDM biasing fixes this, however, needs work – default is flat-branching ratios (feature) and daughters are not decayed (bug) RDM mini-workshop 22nd March 2016
50
GATE “fix” RDM mini-workshop 22nd March 2016
51
RDM mini-workshop 22nd March 2016
52
Summary The issues with random numbers and MT and RDM are still present – no surprise we didn't change anything.... With new PRNGs (mixmax) there seem to be other problems with race conditions More investigation needed Biasing options could be more user friendly (as previously self-proposed) RDM mini-workshop 22nd March 2016
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.