当前位置: X-MOL 学术Comput. Phys. Commun. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
PenRed: An extensible and parallel Monte-Carlo framework for radiation transport based on PENELOPE
Computer Physics Communications ( IF 7.2 ) Pub Date : 2021-06-18 , DOI: 10.1016/j.cpc.2021.108065
V. Giménez-Alventosa , V. Giménez Gómez , S. Oliver

Monte Carlo methods provide detailed and accurate results for radiation transport simulations. Unfortunately, the high computational cost of these methods limits its usage in real-time applications. Moreover, existing computer codes do not provide a methodology for adapting these kinds of simulations to specific problems without advanced knowledge of the corresponding code system, and this restricts their applicability. To help solve these current limitations, we present PenRed, a general-purpose, stand-alone, extensible and modular framework code based on PENELOPE for parallel Monte Carlo simulations of electron-photon transport through matter. It has been implemented in C++ programming language and takes advantage of modern object-oriented technologies. In addition, PenRed offers the capability to read and process DICOM images as well as to construct and simulate image-based voxelized geometries, so as to facilitate its usage in medical applications. Our framework has been successfully verified against the original PENELOPE Fortran code. Furthermore, the implemented parallelism has been tested showing a significant improvement in the simulation time without any loss in precision of results.

Program summary

Program title: PenRed: Parallel Engine for Radiation Energy Deposition.

CPC Library link to program files: https://doi.org/10.17632/rkw6tvtngy.1

Licensing provision: GNU Affero General Public License (AGPL).

Programming language: C++ standard 2011.

Nature of problem: Monte Carlo simulations usually require a huge amount of computation time to achieve low statistical uncertainties. In addition, many applications necessitate particular characteristics or the extraction of specific quantities from the simulation. However, most available Monte Carlo codes do not provide an efficient parallel and truly modular structure which allows users to easily customise their code to suit their needs without an in-depth knowledge of the code system.

Solution method: PenRed is a fully parallel, modular and customizable framework for Monte Carlo simulations of the passage of radiation through matter. It is based on the PENELOPE [1] code system, from which inherits its unique physics models and tracking algorithms for charged particles. PenRed has been coded in C++ following an object-oriented programming paradigm restricted to the C++11 standard. Our engine implements parallelism via a double approach: on the one hand, by using standard C++ threads for shared memory, improving the access and usage of the memory, and, on the other hand, via the MPI standard for distributed memory infrastructures. Notice that both kinds of parallelism can be combined together in the same simulation. Moreover, both threads and MPI processes, can be balanced using the builtin load balance system (RUPER-LB [30]) to maximise the performance on heterogeneous infrastructures. In addition, PenRed provides a modular structure with methods designed to easily extend its functionality. Thus, users can create their own independent modules to adapt our engine to their needs without changing the original modules. Furthermore, user extensions will take advantage of the builtin parallelism without any extra effort or knowledge of parallel programming.

Additional comments including restrictions and unusual features: PenRed has been compiled in linux systems with g++ of GCC versions 4.8.5, 7.3.1, 8.3.1 and 9; clang version 3.4.2 and intel C++ compiler (icc) version 19.0.5.281. Since it is a C++11-standard compliant code, PenRed should be able to compile with any compiler with C++11 support. In addition, if the code is compiled without MPI support, it does not require any non standard library. To enable MPI capabilities, the user needs to install whatever available MPI implementation, such as openMPI [24] or mpich [25], which can be found in the repositories of any linux distribution. Finally, to provide DICOM processing support, PenRed can be optionally compiled using the dicom toolkit (dcmtk) [32] library. Thus, PenRed has only two optional dependencies, an MPI implementation and the dcmtk library.



中文翻译:

PenRed:基于 PENELOPE 的辐射传输的可扩展并行蒙特卡罗框架

蒙特卡罗方法为辐射传输模拟提供详细而准确的结果。不幸的是,这些方法的高计算成本限制了其在实时应用中的使用。此外,现有的计算机代码没有提供一种方法来在没有相应代码系统的高级知识的情况下使这些类型的模拟适应特定问题,这限制了它们的适用性。为了帮助解决这些当前的限制,我们提出了 PenRed,这是一种基于 PENELOPE 的通用、独立、可扩展和模块化的框架代码,用于电子-光子通过物质传输的并行蒙特卡罗模拟。它已用 C++ 编程语言实现,并利用了现代面向对象技术。此外,PenRed 提供读取和处理 DICOM 图像以及构建和模拟基于图像的体素化几何的能力,以促进其在医疗应用中的使用。我们的框架已成功通过原始 PENELOPE Fortran 验证代码。此外,所实现的并行性已经过测试,显示出模拟时间的显着改善,而结果的精度没有任何损失。

程序概要

程序名称: PenRed:用于辐射能量沉积的并行引擎。

CPC 库程序文件链接: https : //doi.org/10.17632/rkw6tvtngy.1

许可条款:GNU Affero 通用公共许可证 (AGPL)。

编程语言: C++ 标准 2011。

问题的性质:蒙特卡罗模拟通常需要大量的计算时间来实现低统计不确定性。此外,许多应用程序需要特定的特征或从模拟中提取特定的量。然而,大多数可用的蒙特卡罗代码不提供高效的并行和真正的模块化结构,允许用户轻松定制他们的代码以满足他们的需求,而无需深入了解代码系统。

解决方法: PenRed 是一个完全并行、模块化和可定制的框架,用于辐射穿过物质的蒙特卡罗模拟。它基于 PENELOPE [1]代码系统,从中继承了其独特的带电粒子物理模型和跟踪算法。PenRed 采用 C++ 编码,遵循仅限于 C++11 标准的面向对象编程范式。我们的引擎通过双重方法实现并行:一方面,通过对共享内存使用标准 C++ 线程,改进内存的访问和使用,另一方面,通过分布式内存基础设施的 MPI 标准。请注意,可以在同一个模拟中将两种并行性组合在一起。此外,线程和 MPI 进程都可以使用内置的负载平衡系统(RUPER-LB [30]) 以最大限度地提高异构基础架构的性能。此外,PenRed 提供了一种模块化结构,其中包含旨在轻松扩展其功能的方法。因此,用户可以创建自己的独立模块来使我们的引擎适应他们的需求,而无需更改原始模块。此外,用户扩展将利用内置的并行性,无需任何额外的努力或并行编程知识。

附加说明,包括限制和异常特性: PenRed 已在GCC 版本 4.8.5、7.3.1、8.3.1 和 9 的g++的linux 系统中编译;clang 3.4.2 版和 intel C++ 编译器 ( icc ) 19.0.5.281 版。由于它是符合 C++11 标准的代码,PenRed 应该能够使用任何支持 C++11 的编译器进行编译。此外,如果代码在没有 MPI 支持的情况下编译,则不需要任何非标准库。要启用 MPI 功能,用户需要安装任何可用的 MPI 实现,例如 openMPI [24] 或 mpich [25] ,它们可以在任何 Linux 发行版的存储库中找到。最后,为了提供 DICOM 处理支持,PenRed 可以选择使用 dicom 工具包 (dcmtk) 进行编译[32] 图书馆。因此,PenRed 只有两个可选的依赖项,一个 MPI 实现和 dcmtk 库。

更新日期:2021-06-22
down
wechat
bug