Magnoux Vincent, Ozell Benoît, Bonenfant Éric, Després Philippe
Département de Génie Informatique et Génie Logiciel, École Polytechnique de Montréal, Montréal QC, Canada.
Phys Med Biol. 2015 Jul 7;60(13):5007-18. doi: 10.1088/0031-9155/60/13/5007. Epub 2015 Jun 10.
The purpose of this study was to evaluate the impact of numerical errors caused by the floating point representation of real numbers in a GPU-based Monte Carlo code used for dose calculation in radiation oncology, and to identify situations where this type of error arises. The program used as a benchmark was bGPUMCD. Three tests were performed on the code, which was divided into three functional components: energy accumulation, particle tracking and physical interactions. First, the impact of single-precision calculations was assessed for each functional component. Second, a GPU-specific compilation option that reduces execution time as well as precision was examined. Third, a specific function used for tracking and potentially more sensitive to precision errors was tested by comparing it to a very high-precision implementation. Numerical errors were found in two components of the program. Because of the energy accumulation process, a few voxels surrounding a radiation source end up with a lower computed dose than they should. The tracking system contained a series of operations that abnormally amplify rounding errors in some situations. This resulted in some rare instances (less than 0.1%) of computed distances that are exceedingly far from what they should have been. Most errors detected had no significant effects on the result of a simulation due to its random nature, either because they cancel each other out or because they only affect a small fraction of particles. The results of this work can be extended to other types of GPU-based programs and be used as guidelines to avoid numerical errors on the GPU computing platform.
本研究的目的是评估在用于放射肿瘤学剂量计算的基于图形处理器(GPU)的蒙特卡罗代码中,实数的浮点表示所引起的数值误差的影响,并确定出现此类误差的情况。用作基准的程序是bGPUMCD。对该代码进行了三项测试,该代码分为三个功能组件:能量累积、粒子跟踪和物理相互作用。首先,评估了每个功能组件的单精度计算的影响。其次,研究了一种特定的GPU编译选项,该选项可减少执行时间以及精度。第三,通过将用于跟踪且可能对精度误差更敏感的特定函数与非常高精度的实现进行比较来对其进行测试。在程序的两个组件中发现了数值误差。由于能量累积过程,辐射源周围的一些体素最终计算出的剂量低于应有的剂量。跟踪系统包含一系列操作,这些操作在某些情况下会异常放大舍入误差。这导致了一些罕见的情况(小于0.1%),即计算出的距离与应有的距离相差甚远。由于模拟的随机性,检测到的大多数误差对模拟结果没有显著影响,要么是因为它们相互抵消,要么是因为它们只影响一小部分粒子。这项工作的结果可以扩展到其他类型的基于GPU的程序,并用作避免GPU计算平台上数值误差的指导原则。