Opticks Dramatic Benefits
NVIDIA OptiX applied to neutrino detector simulation : eliminates optical photon bottleneck
zero: effectively, compared to rest of simulation
Plus: much improved visualizations
© Kamioka Observatory, ICRR(Institute for Cosmic Ray Research), The University of Tokyo.
Super-Kamiokande Expt
© Kamioka Observatory, ICRR(Institute for Cosmic Ray Research), The University of Tokyo.
© Kamioka Observatory, ICRR(Institute for Cosmic Ray Research), The University of Tokyo.
Super-K Physics
Under construction
Antineutrino Detection
Antineutrinos interact with proton of detector --> positron(e+) and neutron (n).
Distinctive double flash of light signature
Dayabay Physics
Reactor antineutrino measurements
© 2010 The Regents of the University of California, through the Lawrence Berkeley National Laboratory
Leading in Particle Physics
Geant4 simulates particles travelling through matter
Geant4 Approach
Very General and Capable Tool
Optical Photon Simulation Problem
Cosmic muons can yield many millions of optical photons in Daya Bay (even more in JUNO). Optical photon propagation dominates Geant4 simulation time ~95% for Daya Bay.
Cosmic Muon Sample sizes severely limited by CPU time and memory practicalities.
Hybrid Solution : Geant4 + Opticks
External propagation possible as optical photons are isolated in simulation chain.
OptiX Glass Sample App
Fast ray tracing can revolutionize optical photon simulation
NVIDIA OptiX Ray Tracing Engine:
NVIDIA OptiX makes massively parallel intersection accessible
Opticks
Opticks aims to replace Geant4 optical photon propagation with an equivalent and drastically faster GPU implementation.
Opticks : ~15 C++ Packages
Side Benefit : Performant Visualization
Migrating Geant4 C++ CSG tree geometry to the GPU enables unprecedented visualizations.
2013(Aug-) [liberate geometry from Geant4]
2014 [integrate geometry/event data with Chroma [1]]
2015 [replace Chroma with Opticks]
2016 [Opticks validation against Geant4]
[1] http://chroma.bitbucket.org Developed by Stan Seibert, University of Pennsylvania.
Textures for all properties
Translate Geant4 CSG tree solids into Opticks boundaries:
Properties as function of wavelength interleaved into float4 texture.
Texture lookup simplifies OptiX programs
// material property lookup from OptiX programs float nmi = (nm - wavelength_domain.x)/wavelength_domain.z + 0.5f ; float4 material1 = tex2D(boundary_texture, nmi, line + 0.5f ); float refractive_index = material1.x ; float absorption_length = material1.y ; float scattering_length = material1.z ; float reemission_probability = material1.w ; // >0 for scintillators
Geometry analysed to find instances
JUNO: ~90M --> 0.1M triangles
OpenGL/OptiX instancing
Multiple Renderers
Split simulation from visualization
Analytic : more realistic, faster, less memory, much more effort
For Dayabay PMT:
Starting from convenient tesselated geometry, implement analytic geometry for critical parts in primary optical path, to allow very close Geant4/Opticks match.
Compressed Steps, OpenGL Buffer, written by OptiX
OpenGL Geometry Shader: lines -> points/line_strip
Interactive: time scrubbing + history/material selection
// geom.glsl layout (lines) in; layout (line_strip, max_vertices = 2) out; void main () { vec4 p0 = gl_in[0].gl_Position ; // p0.w : step begin time vec4 p1 = gl_in[1].gl_Position ; // p1.w : step end time ...
Statistically consistent photon histories in the two simulations
64-bit uint Opticks Geant4 chi2 (tag:5,-5) 8ccd 819160 819654 0.15 [4 ] TO BT BT SA (cross droplet) 8bd 102087 101615 1.09 [3 ] TO BR SA (external reflect) 8cbcd 61869 61890 0.00 [5 ] TO BT BR BT SA (bow 1) 8cbbcd 9618 9577 0.09 [6 ] TO BT BR BR BT SA (bow 2) 8cbbbcd 2604 2687 1.30 [7 ] TO BT BR BR BR BT SA (bow 3) 8cbbbbcd 1056 1030 0.32 [8 ] TO BT BR BR BR BR BT SA (bow 4) 86ccd 1014 1000 0.10 [5 ] TO BT BT SC SA 8cbbbbbcd 472 516 1.96 [9 ] TO BT BR BR BR BR BR BT SA (bow 5) 86d 498 473 0.64 [3 ] TO SC SA bbbbbbbbcd 304 294 0.17 [10] TO BT BR BR BR BR BR BR BR BR (bow 8+ truncated) 8cbbbbbbcd 272 247 1.20 [10] TO BT BR BR BR BR BR BR BT SA (bow 6) cbbbbbbbcd 183 161 1.41 [10] TO BT BR BR BR BR BR BR BR BT (bow 7 truncated)
1M 64 bit uint flag sequences indexed using CUDA Thrust, 0.040 s (sparse histogram sort)
Spectra obtained by selecting photons by internal reflection counts. Colors obtained from spectra of each bin using CIEXYZ weighting functions converted into sRGB/D65 colorspace. Exposures by normalizing to bin with maximum luminance (CIE-Y) of each bow. White lines indicate geometric optics prediction of deviation angle ranges of the visible range 380-780nm. 180-360 degrees signifies exit on same side of droplet as incidence.
Deviation angle(degrees) of 1M parallel monochromatic photons in disc shaped beam incident on water sphere. Numbered bands are visible range expectations of first 11 rainbows. S-Polarized intersection (E field perpendicular to plane of incidence) arranged by directing polarization radially.
Interactive selection
By history or material sequences, eg:
BT:boundary transmit, BR:boundary reflect
Implemented with Thrust indexing (sparse histogram sort)
Good agreement reached, after several fixes: geometry, total internal reflection, group velocity
Consistent : chi2/ndf ~ 1
Very good Opticks/Geant4 agreement
XYTZ: position, time ABCR: polarization, radius
4/PMT In Box/torch : | X | Y | Z | T | A | B | C | R |
---|---|---|---|---|---|---|---|---|
340271/340273 : [TO] BT SA | 1.15 | 1.00 | 0.00 | 0.00 | 1.06 | 1.03 | 0.00 | 1.21 |
340271/340273 : TO [BT] SA | 1.15 | 1.00 | 1.06 | 0.91 | 1.06 | 1.03 | 0.00 | 1.21 |
340271/340273 : TO BT [SA] | 0.97 | 1.02 | 1.05 | 0.99 | 1.06 | 1.03 | 0.00 | 1.29 |
107598/107251 : [TO] BT SD | 0.91 | 0.73 | 0.56 | 0.56 | 0.98 | 1.09 | 0.56 | 0.94 |
107598/107251 : TO [BT] SD | 0.91 | 0.73 | 0.81 | 0.93 | 0.98 | 1.09 | 0.56 | 0.94 |
107598/107251 : TO BT [SD] | 0.99 | 0.83 | 0.97 | 0.99 | 0.98 | 1.09 | 0.56 | 0.93 |
23217/23260 : [TO] BT BT SA | 0.94 | 0.82 | 0.04 | 0.04 | 0.97 | 0.89 | 0.04 | 0.57 |
23217/23260 : TO [BT] BT SA | 0.94 | 0.82 | 0.70 | 0.50 | 0.97 | 0.89 | 0.04 | 0.57 |
23217/23260 : TO BT [BT] SA | 0.91 | 0.94 | 0.43 | 0.60 | 0.97 | 0.89 | 0.04 | 0.05 |
23217/23260 : TO BT BT [SA] | 0.94 | 0.88 | 0.04 | 0.35 | 0.97 | 0.89 | 0.04 | 0.72 |
18866/19048 : [TO] AB | 0.99 | 1.10 | 0.87 | 0.87 | 0.85 | 0.84 | 0.87 | 1.00 |
18866/19048 : TO [AB] | 0.99 | 1.10 | 0.93 | 0.92 | 0.85 | 0.84 | 0.87 | 1.00 |
3179/3133 : [TO] SC SA | 1.07 | 0.83 | 0.34 | 0.34 | 0.86 | 0.96 | 0.34 | 0.73 |
3179/3133 : TO [SC] SA | 1.07 | 0.83 | 0.98 | 1.05 | 0.98 | 1.06 | 0.98 | 0.73 |
3179/3133 : TO SC [SA] | 0.96 | 1.04 | 0.93 | 0.97 | 0.98 | 1.06 | 0.98 | 1.10 |
2204/2249 : [TO] BT AB | 0.85 | 1.04 | 0.45 | 0.45 | 0.99 | 0.92 | 0.45 | 1.06 |
2204/2249 : TO [BT] AB | 0.85 | 1.04 | 0.95 | 0.88 | 0.99 | 0.92 | 0.45 | 1.06 |
2204/2249 : TO BT [AB] | 0.98 | 0.94 | 1.01 | 1.00 | 0.99 | 0.92 | 0.45 | 0.90 |
1696/1732 : [TO] BT BT AB | 1.05 | 0.85 | 0.38 | 0.38 | 0.86 | 1.09 | 0.38 | 0.26 |
1696/1732 : TO [BT] BT AB | 1.05 | 0.85 | 1.48 | 1.28 | 0.86 | 1.09 | 0.38 | 0.26 |
1696/1732 : TO BT [BT] AB | 0.99 | 0.86 | 1.17 | 1.40 | 0.86 | 1.09 | 0.38 | 0.86 |
1696/1732 : TO BT BT [AB] | 1.15 | 0.88 | 1.08 | 1.06 | 0.86 | 1.09 | 0.38 | 0.79 |
1446/1455 : [TO] BR SA | 1.21 | 0.94 | 0.03 | 0.03 | 0.90 | 0.87 | 0.03 | 1.09 |
1446/1455 : TO [BR] SA | 1.21 | 0.94 | 1.02 | 1.01 | 0.90 | 0.87 | 0.03 | 1.09 |
1446/1455 : TO BR [SA] | 1.00 | 0.93 | 0.97 | 0.99 | 0.90 | 0.87 | 0.03 | 1.04 |
Test | Geant4 10.2 | Opticks Interop | Opticks Compute |
---|---|---|---|
Rainbow 1M(S) | 56 s | 1.62 s | 0.28 s |
Rainbow 1M(P) | 58 s | 1.71 s | 0.25 s |
PmtInBox 0.5M | 41 s | 0.81 s | 0.15 s |
[1] MacBook Pro (2013), NVIDIA GeForce GT 750M, 2048 MB, 384 cores
Overview
Opticks enables particle physics to benefit from optical photon simulation taking effectively zero time and zero CPU memory, thanks to massive parallelism made accessible by NVIDIA OptiX.
- The more photons the bigger the overall speedup (99% -> 100x)
- Drastic speedup -> better detector understanding -> greater precision
- Large PMT based neutrino experiments, such as JUNO, can benefit the most
http://simoncblyth.bitbucket.io/env/graphics/ggeoview/jpmt-after-contact_half.png
http://simoncblyth.bitbucket.io/env/graphics/ggeoview/jpmt-inside-outside_half.png
Photon History Selection
Only CK BT BT BT SA, three boundary transmits before surface absorption
Geometry Issues Fixed/Avoidable
Use cuRAND in OptiX without large stack
Init in separate CUDA launch, persist cuRAND state, subsequently load into OptiX context : avoids large stack performance hit
Compositing OptiX Ray Trace and OpenGL Rasterized
out vec4 frag_colour; uniform sampler2D ColorTex ; void main () { frag_colour = texture(ColorTex, texcoord); float depth = frag_colour.w ; frag_colour.w = 1.0 ; gl_FragDepth = depth ; ...