Diffusion Monte Carlo (DMC) and Monte Carlo for particle transport with importance sampling both involve simulations of weighted walkers that undergo birth and death processes (splitting and Russian Roulette). The established implementations of these methods are quite different: Particle simulation Monte Carlo employs a stack to handle the splitting history whereas in traditional DMC one follows a swarm of walkers. The particle simulation Monte Carlo approach involves a depth first traversal of the visited configurations whereas the traditional DMC approach may be seen as a breadth first traversal. In the present work the implementation of a depth first, stack based approach to DMC is described and a complete code is presented. The depth first approach, called DMCD here, can be more memory efficient than the breadth first approach, both for total memory and for use of a memory hierarchy and of co-processors. The implementation appears very natural for population control and for descendant weighting and it unifies algorithmic treatment of the eigenvalue problem (DMC) with the linear equation problem (particle transport). A concern with DMCD that is not present in the breadth first approach, and that is successfully addressed here, is the need to maintain a pool of starters for use when a new walker is required and the stack is empty. The DMCD approach appears to have the potential to become the preferred implementation for many DMC applications.
翻译:扩散蒙特卡罗(DMC)及带重要性采样的粒子输运蒙特卡罗方法均涉及具有生灭过程(分裂与俄罗斯轮盘赌)的加权游走者模拟。这两种方法的现有实现方式截然不同:粒子模拟蒙特卡罗采用栈处理分裂历史,而传统DMC方法则追踪游走者群体。粒子模拟蒙特卡罗方法对访问过的构型进行深度优先遍历,而传统DMC方法可视为广度优先遍历。本研究描述了一种基于深度优先的栈式DMC实现方法,并给出了完整代码。相较于广度优先方法,深度优先方法(本文称为DMCD)无论在总内存占用还是内存层级结构与协处理器的利用方面均更具内存效率。该实现方法在种群控制与后代加权方面显得非常自然,并统一了特征值问题(DMC)与线性方程问题(粒子输运)的算法处理。与广度优先方法不同,DMCD需要解决的一个关键问题是:当栈为空且需要新游走者时,必须维护一个起始池。本文成功解决了该问题。DMCD方法有望成为众多DMC应用的首选实现方案。