Enhancing Monte Carlo Particle transport For Modern Many-core Architectures--第六章-异构架构的利用

6.1介绍

本节主要介绍了一种新的负载平衡算个发,解决在域分解的异构环境中的动态复制问题。

6.2动机

一种典型的异构超级计算机策略是仅使用CPU进行管理和与其他计算节点的通信,而使用GPU进行粒子传输。这种方法通常将每个GPU与一个CPU核心配对来驱动应用程序,其余的CPU核心则处于空闲状态。基于相对的浮点运算能力(FLOPS),仅将CPU用于管理任务似乎是一种可接受的策略。以利弗莫尔计算中心的高性能计算系统RZAnsel(2020)为例,GPU的总浮点运算能力为1,512 TFLOPS,而CPU的总浮点运算能力为58 TFLOPS,总系统(GPU+CPU)的浮点运算能力为1,570 TFLOPS。这意味着GPU和CPU分别占总浮点运算能力的96.3%和3.7%——因此,程序员可能认为让CPU参与计算并不值得。然而,CPU具有其他优势,包括更大的内存容量和更低的内存访问延迟。此外,蒙特卡罗光子传输的许多操作并不依赖于浮点运算能力(FLOPS)。总的来说,让CPU参与计算可能带来超出其浮点运算能力(即超出3.7%)的好处。

M. O’Brien等人(2019)首次展示了将CPU和GPU结合起来进行蒙特卡罗光子传输的好处。然而,他们的算法在实用性上有局限性,因为它只能应用于完全适合GPU内存的网格。在超级计算机的背景下,这一限制尤为关键,因为大规模的典型模拟使用的计算网格通常超出GPU内存容量。这样的网格被分解成多个域(或块),每个块都足够小以适合内存,每个计算节点处理一个(或多个)块。这种域分解增加了执行的复杂性,因为每个计算节点只能传输其拥有有效数据的粒子。在本文中,我们扩展了O’Brien等人的工作,以处理域分解的网格。我们通过引入两个新算法来实现这一点:一个用于负载平衡,另一个用于构建通信图。我们还分析了域分解对混合异构方法性能的影响。总的来说,这项工作的贡献是提出了一种实用的算法,将O’Brien等人展示的潜力转化为现实应用。

6.3背景

蒙特卡罗光子传输问题以非传统方式将其空间域分配给计算资源(即MPI进程)。在许多物理模拟中,计算资源与空间域之间是一一对应的——一个有N个计算资源的物理模拟有N个空间域,每个计算资源都有其独特的空间域。对于蒙特卡罗光子传输问题,完整的网格通常太大,无法放入一个计算资源的内存中,但又不至于必须完全分割在所有计算节点的总内存中。换句话说,空间域通常少于计算资源,因此多个计算资源可以同时操作同一个空间域。考虑一个简单的例子,有两个空间域(D0和D1)和四个计算资源(P0, P1, P2和P3)。一种可能的分配是将D0分配给P0, P1和P2,而将D1分配给P3,另一种可能的分配是将D0分配给P0和P1,而将D1分配给P2和P3,等等。总的来说,域分配是优化性能的一个附加组成部分。

在蒙特卡罗社区中,将空间域映射到计算资源的过程被称为“复制”,因为映射会将一些域复制到多个资源上。有两种主要的复制策略:静态复制和动态复制。静态复制在程序开始时进行分配,并在整个执行过程中使用这些分配。动态复制则在算法执行过程中更改分配,以保持负载平衡。两种复制策略的目标都是提高效率——它们通过复制具有更多粒子的空间域来更均匀地分配工作负载。

动态复制是蒙特卡罗传输整体方法的一部分。蒙特卡罗方法的每个循环包括三个阶段:初始化、追踪和结束。当采用动态复制算法时,初始化阶段执行动态复制算法。追踪阶段结合了粒子传输和粒子通信。粒子传输可以以完全并行的方式运行,直到粒子从一个空间域移动到另一个空间域时需要进行MPI通信(从而需要重新分配给拥有该空间域的计算资源)。结束阶段处理追踪阶段的分布结果。重要的是,初始化阶段决定了追踪阶段的性能——如果动态复制算法的域分配为每个计算资源创建了平衡的工作,那么所有计算资源应在同一时间完成追踪阶段,确保并行效率。

追踪是算法中计算量最大的部分。在追踪期间,每个粒子在短时间内进行小幅度的推进,每次推进称为一个“段”。段内的活动类型可以变化,这影响了段推进的计算成本和持续时间。在本文中,三种相关的活动是:(1)与背景材料的碰撞,(2)在网格元素之间移动,以及(3)移动到时间步结束。追踪在每个粒子推进时间等于整个循环持续时间时结束——如果整个循环需要∆T秒,如果给定粒子在该循环中通过N个段推进,并且每个段i推进的时间为ti秒,那么Σ(ti) = ∆T。

6.4相关工作

  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值