0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在多FPGA集群上实现高级并行编程

傅里叶的猫 来源: 傅里叶的猫 2024-07-24 14:54 次阅读

今天我们看的这篇论文介绍了在多FPGA集群上实现高级并行编程的研究,其主要目标是为非FPGA专家提供一个成熟且易于使用的环境,以便在多个并行运行的设备上扩展高性能计算(HPC)应用。

背景

该论文的研究背景集中在解决高性能计算(HPC)领域中利用现场可编程门阵列(FPGA)进行并行计算的挑战。由于FPGA在HPC领域相对新颖,尚未形成一个成熟的生态系统,能够方便非FPGA专家在多个FPGA设备上扩展并行应用程序。论文指出,尽管FPGA具备高性能计算潜力,但在实际应用中,缺乏一种有效的方法让非专业人士能够轻松地利用FPGA的并行处理能力。

FPGA在HPC领域的新兴地位:FPGA技术在HPC中尚未得到充分开发,尤其是在构建大规模并行计算环境方面。

并行编程的复杂性:直接编程FPGA通常需要深入的硬件知识,这对非FPGA工程师来说是一个重大障碍。

缺乏成熟的工具和平台:与传统的CPUGPU相比,用于FPGA的编程工具和平台不够成熟,难以支持大规模的并行应用开发。

基于上述背景,论文旨在开发一种更友好的编程模型和平台,使得非FPGA工程师也能利用FPGA的并行计算能力,特别是在多FPGA集群的环境下。这涉及到创建一个支持消息传递接口(MPI)风格通信的软件堆栈,以及一个能够跨多台FPGA设备进行高效并行计算的编程环境。此外,论文还提到了评估这一新环境的性能和效率,特别是在与传统超级计算机的比较中,特别是在能耗比方面。

FPGA design

论文中关于FPGA设计的部分描述了一个高度优化的架构,旨在促进高级并行编程在多FPGA集群上的实现。

设计组成

用户应用:这部分包含High-Level Synthesis (HLS) 加速器和运行时,它们与FPGA的High Bandwidth Memory (HBM) 和以太网开关接口进行交互。

以太网子系统:这个子系统负责处理以太网头信息和寻址系统,为应用程序提供一个简单的流式接口,用于发送和接收网络消息。

用户应用与内存互联

设计中包括POM运行时(Pico OmpSs Manager),HLS加速器,以及与内存的互联机制。

OMPIF运行时被添加到设计中,它连接到以太网接口,允许消息发送者接收来自POM的任务,并处理用户传递的参数

通信架构

9372d9d4-47c7-11ef-b8af-92fbcf53809c.png

每个FPGA有两个QSFP28端口,其中一个连接到以太网交换机,另一个连接到邻近的FPGA,但设计依赖于与交换机相连的端口,以实现整个集群的完全连通性。

自动化设计生成

FPGA设计和架构可以自动由Accelerator Integrator Tool (AIT)生成,该工具只需用户HLS代码作为输入。

AIT是OmpSs@FPGA框架的一部分,框架还包括Xtasks库和Nanos6运行时,用于处理FPGA设置、管理和通信。

以太网接口的抽象层

为了使用以太网接口,设计中加入了一个抽象层,它简化了网络消息的发送和接收,使应用程序无需关心底层以太网协议细节。

HBM使用

FPGA设计充分利用HBM,这是现代FPGA提供的一种高速存储解决方案,可以显著提高数据吞吐量和访问速度。

硬件与软件协同

硬件设计与软件栈紧密配合,使得用户可以专注于编写基于任务和消息传递的高级并行代码,而低级别的细节(如以太网、PCIe和JTAG管理)则对程序员透明。

93bf16e6-47c7-11ef-b8af-92fbcf53809c.png

SOFTWARE STACK

论文中描述的软件堆栈是为了使多FPGA集群的管理与使用更加高效和便捷,特别是对于那些基于高级并行编程模型的应用程序。

Xtasks远程支持

Xtasks库是OmpSs@FPGA框架的一部分,用于卸载任务到FPGA加速器,并在FPGA和主机内存之间复制数据。

新增了对远程FPGA节点的支持,这通过Xtasks远程实现,它能描述集群中所有FPGA节点,无论本地还是远程,以及一个名为Xtasks服务器的应用程序。

这种改进使得从单个CPU服务器可以管理整个FPGA集群,无论是通过本地PCIe还是通过网络。

Nanos6运行时

Nanos6运行时用于分析任务依赖性和调度可并行执行的任务,它是OmpSs-2任务基础编程模型的核心。

在FPGA上下文中,Nanos6运行时通过Xtasks库管理FPGA的设置、任务调度和通信。

OMPIF集成

OMPIF(Open MPI over FPGA)是一种通信协议,允许类似MPI(Message Passing Interface)的通信模式在FPGA上运行。

这一集成使得C/C++代码能够在FPGA上运行,并且能够调用类似于MPI_Send/Recv的功能,通过MEEP集群的100Gb以太网网络进行消息传递。

MEEP Manager

提供了一个统一的界面来管理FPGA集群,包括加载位流、配置设备和传输数据到远程CPU节点所托管的FPGAs。

自动化工具

Accelerator Integrator Tool (AIT)用于自动生成FPGA设计和架构,只需要用户提供的HLS代码作为输入。

整体而言,软件堆栈提供了一套完整的解决方案,使得非FPGA工程师也能够利用多FPGA集群来扩展他们的应用,同时避免了与低级别硬件交互相关的复杂性。通过这一堆栈,程序员可以专注于编写基于任务和消息传递的高级并行代码,而无需担心底层的以太网、PCIe或JTAG管理等技术细节。此外,堆栈还提供了对远程FPGA节点的管理能力,从而增强了集群的灵活性和可扩展性。

EVALUATION

在论文的评估(Evaluation)部分,作者们展示了他们构建的多FPGA集群——Marenostrum Exascale Emulation Platform (MEEP)的性能,特别是在高带宽通信和高性能计算(HPC)应用方面。

带宽测量

使用OMPIF (Open MPI over FPGA)在两个FPGA之间测得的带宽最高可达约4.5GB/s,当数据量约为100MB时。

主机到FPGA以及反向的通信,包括本地(仅PCIe)和远程(PCIe+网络)的组合,显示了不同的带宽特性。在远程情况下,由于数据需要通过网络传输,因此带宽会受到显著影响。

性能评估

对三个基准测试进行了评估:N-body模拟、Heat扩散模拟(使用Gauss-Seidel求解器)和Cholesky分解。

N-body基准测试使用了4194304个粒子和16个步骤,在64个FPGA上的表现接近理想,效率达到98%,达到每秒2.3G对力的计算。

Heat基准测试展示了热传导在二维矩阵上的模拟,使用Gauss-Seidel方法计算每个位置的平均值。结果显示,该应用能够有效利用FPGA资源,处理大量的依赖关系。

与HPC的比较

将MEEP集群的性能与MareNostrum 4超级计算机进行了对比,发现在N-body和Heat基准测试中,MEEP的性能功耗比分别提高了2.3倍和3.5倍。

93db3042-47c7-11ef-b8af-92fbcf53809c.png

这些结果表明,MEEP集群在处理大规模并行计算任务时具有显著的优势,尤其是在功耗效率方面。同时,该评估证明了使用OMPIF和100Gb以太网网络在FPGA集群间实现高速通信的可行性。通过使用先进的硬件和优化的软件堆栈,研究人员能够展示出FPGA集群在HPC领域的潜力,尤其是在要求高性能和高效率的应用场景中。

93eecbc0-47c7-11ef-b8af-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1624

    文章

    21534

    浏览量

    600258
  • gpu
    gpu
    +关注

    关注

    27

    文章

    4624

    浏览量

    128409
  • 编程
    +关注

    关注

    88

    文章

    3537

    浏览量

    93441
  • HPC
    HPC
    +关注

    关注

    0

    文章

    301

    浏览量

    23600

原文标题:多FPGA集群上的High-Level并行编程

文章出处:【微信号:傅里叶的猫,微信公众号:傅里叶的猫】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA并行通道激励信号产生模块

    FPGA并行通道激励信号产生模块FPGA并行通道激励信号产生模块.docx
    发表于 08-11 10:35

    FPGA高级编程的书籍

    谁有FPGA高级编程的书籍,非常感谢,现在遇到了一些问题
    发表于 10-16 16:47

    基于FPGA控制的DSP并行处理系统

    DSP芯片组成并行处理系统。另外,为充分发挥 DSP芯片在复杂算法处理上的优势及FPGA大数据量的底层算法的优势,设计了一种基于FPGA
    发表于 05-21 05:00

    怎么实现FPGA为核心器件的并行通道信号产生模块?

    本文以并行通道信号产生模型为依据,设计并实现了以FPGA为核心器件的并行通道信号产生模块,主
    发表于 04-29 06:17

    基于SMP集群的混合并行编程模型研究

    提出一种适用于SMP 集群的混合MPI+OpenMP 并行编程模型。该模型贴近于SMP 集群的体系结构且综合了消息传递和共享内存2 种编程
    发表于 03-30 09:28 32次下载

    MPI并行程序设计的负载平衡实现方法

    MPI是目前集群系统中最重要的并行编程工具,它采用消息传递的方式实现并行程序间通信。MPI
    发表于 07-30 10:56 35次下载

    并行CRCFPGA实现研究

    循环冗余码校验 CRC (Cyclic Redundancy Check) 广泛用于通讯领域和数据存储的数据检错。基于FPGA通讯领域和数据存储的应用越来越广泛,CRC的编码解码模块已经是FPGA
    发表于 08-15 11:19 40次下载
    <b class='flag-5'>并行</b>CRC<b class='flag-5'>在</b><b class='flag-5'>FPGA</b><b class='flag-5'>上</b>的<b class='flag-5'>实现</b>研究

    FPGA实现CRC算法的程序

    Xilinx FPGA工程例子源码:FPGA实现CRC算法的程序
    发表于 06-07 15:07 28次下载

    基于FPGADSP的总线并行处理器设计

    基于FPGADSP的总线并行处理器设计
    发表于 10-19 13:40 4次下载
    基于<b class='flag-5'>FPGA</b>和<b class='flag-5'>多</b>DSP的<b class='flag-5'>多</b>总线<b class='flag-5'>并行</b>处理器设计

    如何在工程应用中合理采用并行编程技术

    (COTS)计算机集群的日益普及。 直至最近,尚无商业高级工具可以支持针对高性能系统的科学计算应用程序的开发。并行编程是一门深奥的技术,只有那些旨在通过利用自定义设置和低级库以及通过为
    发表于 12-02 09:49 400次阅读
     如何在工程应用中合理采用<b class='flag-5'>并行</b><b class='flag-5'>编程</b>技术

    如何使用OpenCL轻松实现FPGA应用编程

    实现这一编程思想的转变,是因为 FPGA 借助 OpenCL 实现编程,程序员只需要通过 C/C++ 添加适当的 pragma 就能
    发表于 07-16 17:58 6405次阅读
    如何使用OpenCL轻松<b class='flag-5'>实现</b><b class='flag-5'>FPGA</b>应用<b class='flag-5'>编程</b>

    如何使用FPGA实现HDLC协议控制器

    ,解析模块及其内部的CRC码生成,检验模块的方法。FPGA内部采用硬件描述语言(HDL)并行设计通道的高级数据链路控制(HDLC)协议控
    发表于 11-04 18:04 15次下载
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>HDLC协议控制器

    基于FPGA集群的NEST脉冲神经网络仿真器

    放电神经元计算模块的流水线并行架构,实现支持双核双线程和多节点多进程的FPGA集群设计。皮质层视觉仿真模型
    发表于 03-19 10:35 11次下载
    基于<b class='flag-5'>FPGA</b><b class='flag-5'>集群</b>的NEST脉冲神经网络仿真器

    通道可编程并行通信接口芯片XDC05的设计实现

    通道可编程并行通信接口芯片XDC05的设计实现(现代电源技术基础 杨飞)-该文档为通道可编程
    发表于 09-15 11:03 4次下载
    <b class='flag-5'>多</b>通道可<b class='flag-5'>编程</b><b class='flag-5'>并行</b>通信接口芯片XDC05的设计<b class='flag-5'>实现</b>

    怎么用FPGA做算法 如何在FPGA实现最大公约数算法

    FPGA算法是指在FPGA(现场可编程门阵列)实现的算法。FPGA是一种可重构的硬件设备,可以
    的头像 发表于 08-16 14:31 2692次阅读
    怎么用<b class='flag-5'>FPGA</b>做算法 如何在<b class='flag-5'>FPGA</b><b class='flag-5'>上</b><b class='flag-5'>实现</b>最大公约数算法