Monte Carlo simulation of X-ray and gamma-ray photon transport on a graphics-processing unit. (English) Zbl 1219.78146

Summary: Graphics-processing units (GPUs) suitable for general-purpose numerical computation are now available with performances in excess of 1 Teraflops, faster by one to two orders of magnitude than conventional desktop CPUs. Monte Carlo particle transport algorithms are ideally suited to parallel processing architectures and so are good candidates for acceleration using a GPU. We have developed a general-purpose code that computes the transport of high energy (\(>1\) keV) photons through arbitrary 3-dimensional geometry models, simulates their physical interactions and performs tallying and variance reduction. We describe a new algorithm, the particle-per-block technique, that provides a good match with the underlying GPU multiprocessor hardware design. Benchmarking against an existing CPU-based simulation running on a single-core of a commodity desktop CPU demonstrates that our code can accurately model X-ray transport, with an approximately 35-fold speed-up factor.


78M31 Monte Carlo methods applied to problems in optics and electromagnetic theory
78A40 Waves and radiation in optics and electromagnetic theory


Full Text: DOI


[1] J.R. Tickner, XPERT - a system for geometry definition, verification and visualisation, in: Proc. Monte Carlo 2005, Chattanooga, 17-21 April 2005.
[2] Kawrakov, I.; Mainegra-Hing, E.; Rogers, D.W.O.; Tessier, F.; Walters, B.R.B., The egsnrc code system: Monte Carlo simulation of electron and photon transport, (2009), NRCC Report PIRS-701, available online at
[3] The X-5 Monte Carlo Team, MCNP - a general Monte Carlo N-particle transport code, version 5, LA-UR-03-1987, 2005.
[4] Condor (High Throughput Computing) homepage
[5] NVIDIA® C1070 GPU card
[6] NVIDIA® CUDA Zone homepage
[7] Martinsen, Paul; Blaschke, Johannes; Künnemeyer, Rainer; Jordan, Robert, Accelerating Monte Carlo simulations with an NVIDIA® graphics processor, Comput. phys. comm., 180, 1983-1989, (2009)
[8] Jia, Xun; Gu, Xuejun; Sempau, Josep; Choi, Dongju; Majumdar, Amitava; Jiang, Steve B., Development of a GPU-based Monte Carlo dose calculation code for coupled electron-photon transport, available online at
[9] M.J. Berger, J.H. Hubbell, XCOM: Photon cross sections on a personal computer, NBSIR 87-3597, 1987.
[10] Storm, E.; Israel, H.I., Photon cross-sections from 1 kev to 100 mev for elements \(Z = 1\) to \(Z = 100\), Nucl. data tables A, 7, 565-681, (1970)
[11] Cullen, D.E.; Hubbell, J.H.; Kissel, L., EPDL97: the evaluated photon data library ’97 version, UCRL-LR-50400, vol. 6, rev. 5, available online at
[12] Biggs, F.; Mendelsohn, L.B.; Mann, J.B., Hartree-Fock Compton profiles for the elements, At. data nucl. data tables, 16, 201-309, (1975)
[13] Popov, S.; Gunther, J.; Seidel, H.P.; Slusallek, P., Stackless KD-tree traversal for high performance (GPU) ray tracing, Comput. graph. forum, 26, 3, 415-424, (2007)
[14] M. Zlatuska, V. Havran, Ray tracing on a GPU with CUDA - Comparative study of three algorithms, in: WSCG 2010 Conference, Communication Papers Proceedings, 2010, pp. 69-76.
[15] Popescu, L.M., A geometry modelling system for ray-tracing or particle transport Monte Carlo simulation, Comput. phys. comm., 150, 21-30, (2003)
[16] Namito, Y.; Hirayama, H., LSCAT - low energy photon scattering expansion for the EGS4 code, KEK internal report, KEK-internal 2000-4, available from
[17] Sood, A.; Gardner, R.P., A new Monte Carlo assisted approach to detector response functions, Nucl. instr. methods B, 213, 100, (2004)
[18] Blomquist, R.N.; Gelbard, E.M., As assessment of existing Klein-nishina Monte Carlo sampling methods, Nucl. sci. eng., 83, 3, 380-384, (1983)
[19] L’Ecuyer, P., Maximally equidistributed combined tausworthe generators, Math. comp., 65, 213, 203-213, (1996) · Zbl 0853.65007
[20] Kalos, M.H., Monte Carlo method for estimator of flux at a point, Nucl. sci. eng., 16, 111-117, (1963)
[21] J.R. Tickner, On the choice of estimators for simulating universal detector response functions, in: Proc. Monte Carlo 2005, Chattanooga, 17-21 April 2005.
[22] NVIDIA CUDA C programming: best practices guide, cuda toolkit 2.3, 2009, available online at
[23] GCC, the GNU Compiler Collection
[24] MinGW, Minimalist GNU for Windows
This reference list is based on information provided by the publisher or from digital mathematics libraries. Its items are heuristically matched to zbMATH identifiers and may contain data conversion errors. It attempts to reflect the references listed in the original paper as accurately as possible without claiming the completeness or perfect precision of the matching.