Opticks is an open source project that integrates the NVIDIA OptiX GPU ray tracing engine with Geant4 toolkit based simulations. Massive parallelism brings drastic performance improvements with optical photon simulation speedup expected to exceed 1000 times Geant4 when using workstation GPUs. Optical photon simulation time becomes effectively zero compared to the rest of the simulation. Optical photons from scintillation and Cherenkov processes are allocated, generated and propagated entirely on the GPU, minimizing transfer overheads and allowing CPU memory usage to be restricted to optical photons that hit photomultiplier tubes or other photon detectors. Collecting hits into standard Geant4 hit collections then allows the rest of the simulation chain to proceed unmodified. Optical physics processes of scattering, absorption, scintillator reemission and boundary processes are implemented in CUDA OptiX programs based on the Geant4 implementations. Wavelength dependent material and surface properties as well as inverse cumulative distribution functions for reemission are interleaved into GPU textures providing fast interpolated property lookup or wavelength generation. Geometry is provided to OptiX in the form of CUDA programs that return bounding boxes for each primitive and ray geometry intersection positions. Some critical parts of the geometry such as photomultiplier tubes have been implemented analytically with the remainder being tessellated. OptiX handles the creation and application of a choice of acceleration structures such as boundary volume hierarchies and the transparent use of multiple GPUs. OptiX supports interoperation with OpenGL and CUDA Thrust that has enabled unprecedented visualisations of photon propagations to be developed using OpenGL geometry shaders to provide interactive time scrubbing and CUDA Thrust photon indexing to enable interactive history selection.
[1]
Sin-Jin Lin,et al.
The muon system of the Daya Bay Reactor antineutrino experiment
,
2015
.
[2]
Andreas Dietrich,et al.
Spatial splits in bounding volume hierarchies
,
2009,
High Performance Graphics.
[3]
Ph Canal,et al.
The GeantV project: preparing the future of simulation
,
2015
.
[4]
Timo Aila,et al.
Understanding the efficiency of ray traversal on GPUs
,
2009,
High Performance Graphics.
[5]
Gaël Varoquaux,et al.
The NumPy Array: A Structure for Efficient Numerical Computation
,
2011,
Computing in Science & Engineering.
[6]
Isaac Sir Newton.
Opticks, or, A treatise of the reflections, refractions, inflections & colours of light
,
1933
.
[7]
Andreas Dietrich,et al.
OptiX: a general purpose ray tracing engine
,
2010,
SIGGRAPH 2010.
[8]
Nathan Bell,et al.
Thrust: A Productivity-Oriented Library for CUDA
,
2012
.
[9]
A. Dell'Acqua,et al.
Geant4 - A simulation toolkit
,
2003
.
[10]
Timo Aila,et al.
Megakernels considered harmful: wavefront path tracing on GPUs
,
2013,
HPG '13.
[11]
S. Incerti,et al.
Geant4 developments and applications
,
2006,
IEEE Transactions on Nuclear Science.
[12]
Rene Brun,et al.
Towards a high performance geometry library for particle-detector simulations
,
2015
.
[13]
B. R. Littlejohn,et al.
The Detector System of The Daya Bay Reactor Antineutrino Experiment
,
2015,
1508.03943.
[14]
M. A. Cortés-Giraldo,et al.
Recent developments in GEANT4
,
2016
.