\

布里斯托大学利用IPU系统解决科学超级计算问题

作者:

SHARE

Share on weixin
Share on weibo
Share on linkedin

SUBSCRIBE

Simon McIntosh-Smith教授带领下的布里斯托大学高性能计算小组一直在研究Graphcore的IPU如何在人工智能和高性能计算的融合中使用,用于计算流体力学、电机学和粒子模拟的科学应用。

过去十年,机器学习在科学超级计算中发挥着越来越重要的作用。为了更好地支持这些耗电的工作负载,超级计算机设计越来越多地采用AI计算,例如Graphcore IPU-POD横向扩展系统。这些系统使用较低精度的32位算术来补充使用64位架构的传统高性能计算系统。尽管IPU系统是专为机器智能计算而设计的,但它们具有巨大的潜力,可以被用于许多科学应用,不仅可以更快地产生结果,同时消耗的能源也更少。

布里斯托大学的高性能计算小组是由ESPRC(英国工程和自然科学研究委员会)资助的、为期五年的ASiMoV(虚拟系统的高级仿真和建模)繁荣联盟的一员,该联盟由劳斯莱斯领导的财团以及其他四所英国大学和企业组成。我们正在共同开发精确模拟完整的燃气轮发动机的物理特性所需要的技术,以实现更高的准确性:这已经远远超出了当今最先进的能力。布里斯托大学高性能计算小组正在研究如何将新兴的架构和AI加速器应用于此问题,并选择IPU作为这种新类型处理器的杰出示例。

科学软件是从头开始设计的,旨在可以进行大规模并行处理,从而可以在超级计算机中扩展到成千上万个节点。但是,数值算法中的复杂数据依赖性和存储访问模式意味着应用程序性能通常受到存储带宽或通信限制的制约,而不是受制于单个节点的计算速度。这就是IPU之类的新处理器设计的优势所在,其大型的片上SRAM存储与处理器内核并置,为激发未来性能提供了令人兴奋的机会。

在当今日益多样化的超级计算机中,应用程序的设计初衷在于利用现有各种计算设备的优势。例如,CPU用于高精度的低时延通用计算,并且可以访问大量的DRAM存储,但是访问该存储的速度很慢且耗能很大。GPU非常适合利用其单指令多线程(SIMT)设计的数据并行工作流。相反,IPU具有多指令多数据(MIMD)设计,允许同时运行超过100,000个独立程序。这种设计加上其极高的存储带宽、巨大的片上存储以及针对矩阵乘法和卷积等运算的专门硬件支持,意味着它对于某些目前在CPU和GPU上无法最佳运行的高性能计算任务具有吸引力。应用程序可能包括计算图处理和稀疏线性代数的高效处理。

用于计算流体力学的IPU

使用Graphcore Mk1 IPU,我们首先研究了一类称为结构化网格的高性能计算问题,这些问题为诸如热传递和流体流动等物理过程在建模时所使用的偏微分方程的求解器奠定了基础。

高性能计算开发人员需要从底层硬件中获得最大的效率,因此软件是使用较低级别的语言(例如C、C ++或Fortran)编写的。在使用IPU开展工作的过程中,我们使用了Graphcore的Poplar™低级别C ++框架,并研究了如何在Poplar中表达高性能计算软件的常见“构建块”,例如:

  • 考虑如何在多个IPU上划分大型结构化网格
  • 如何在IPU的tile之间有效地交换共享网格区域(“halo”)
  • 利用Poplar的优化原语进行并行运算,例如卷积和矩阵乘法的减少和实现,这些运算可以使用底层的优化IPU硬件
  • 使用Poplar的矢量化数据类型(例如half4)优化关键代码段
  • 利用IPU对16位半精度浮点数的本机支持

存储带宽和性能建模

为了指导我们的优化工作,衡量应用程序性能,我们首先为Mk1 IPU构建了Roofline性能模型。

我们从为IPU实施BabelSTREAM基准开始,该基准的特点是应用程序有望实现的存储带宽。研究小组发现,典型的C ++应用程序(混合使用自定义C ++顶点和Poplar的PopLibs库编写)可以达到单精度下7.3TB/秒和半精度下7.5TB/秒的存储带宽。直接使用IPU的汇编指令的应用程序甚至可以得到更高的值。这些很高的带宽常见于CPU高速缓存建模而非存储建模,并且是IPU完全片上SRAM设计的结果。

然后,我们可以使用这些存储带宽基准作为基础来构建Roofline模型,该模型显示应用程序的性能关键部分何时受存储带宽制约,何时受计算制约,从而帮助开发人员为应用程序的不同部分选择适当的优化。

结构化网格示例应用

我们使用IPU的高性能计算构建块和性能模型,实现了使用“模具”模式的结构化网格应用的两个示例:高斯模糊图像滤波器和二维Lattice Boltzmann流体动力学模拟。

我们研究了使用多个IPU进行缩放的情况,发现可以轻松利用Poplar以“多IPU”配置透明地针对2、4、8或16个IPU的支持。我们的两个应用程序都显示出良好的弱缩放特性:添加更多的IPU几乎可以在同一时间解决更大的问题。

对于高斯模糊(Gaussian Blur)应用程序,与使用48个CPU内核(运行OpenCL的双插槽英特尔至强Platinum 8186 CPU设置)相比,单个IPU的速度提高了5.3倍以上。与NVIDIA V100 GPU相比,我们还实现了1.5倍的加速。在多IPU配置上,结果甚至更加引人瞩目。

在Lattice-Boltzmann仿真方面,与48个CPU内核相比,单个Mk1 IPU实现了6.9倍以上的速度提升。与NVIDIA V100 GPU的现有优化实现(是NVIDIA V100用时的0.7倍,并且我们认为,根据Roofline性能模型,仍有很大的进一步优化的潜力)相比,这第一个IPU实现的表现更胜一筹。

未来研究

受到IPU在结构化网格问题方面取得的这一初步成功的鼓舞,我们将IPU应用于更复杂的“非结构化网格” 高性能计算应用程序,这些应用程序已经用于燃烧、空气动力学和电机学模拟,这些模拟工作是ASiMoV联盟的一部分。由于非结构化网格使用类似于计算图的表示来呈现网格中不同节点之间的连接,因此与结构化网格应用程序相比,存储访问要复杂得多。这些应用程序可能会更多地受益于IPU的高带宽和低时延存储设计。

我们还一直在研究如何将IPU用于粒子模拟。在ASiMoV中,粒子模拟是理解如何通过发动机设计在燃烧过程中有效利用燃料的重要部分。但是粒子模拟也是高性能计算应用的重要类别,其范围从药物研究(生物分子模拟)到天体物理学(模拟力的效果,例如重力对银河系恒星的影响)。目前的研究中我们探索了使用Poplar计算图范式和已编译通信来表达粒子模拟常见模式的方法。

另外,我们把IPU用于结合了机器学习方法与传统仿真技术的大型“人工智能-高性能计算融合”仿真。我们正在研究使用深度神经网络来加速线性求解器,例如预测更好的插值运算符以与代数多网格方法共同使用,并且我们开始研究已知物理信息的机器学习模型。这些模型使用诸如超分辨率等技术,从粗分辨率模拟中产生准确的精细分辨率结果。

到目前为止,我们的研究使用戴尔DSS8440 IPU服务器在Graphcore Mk1 IPU上进行。但是,Graphcore最近宣布采用使用了Mk2 IPU技术的大型IPU-POD系统,辅以IPU工具的持续、快速改进,使得IPU在高性能计算中的作用更加引人注目。

阅读论文

More Posts

腾讯云上的IPU预览正式推出,Graphcore公有云大批量部署进行中

联想服务器现已在Graphcore IPU系统中可用

Graphcore为Twigfarm带来价性比提升

超级智能计算:Simon Knowles在WAICF演讲实录

LabGenius利用Graphcore IPU加速基于人工智能的药物研发

使用PopVision分析工具优化IPU应用程序

获取最新的GRAPHCORE资讯

在下方注册以获取最新的资讯和更新:




获取最新的GRAPHCORE资讯

在下方注册以获取最新的资讯和更新: