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

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

3天内不再提示

如何使用FPGA实现FP16格式点积级联运算

Wildesbeast 来源:21IC 作者:杨宇 2020-08-15 11:25 次阅读

通过使用Achronix Speedster7t FPGA中的机器学习加速器MLP72,开发人员可以轻松选择浮点/定点格式和多种位宽,或快速应用块浮点,并通过内部级联可以达到理想性能。

神经网络架构中的核心之一就是卷积层,卷积的最基本操作就是点积。向量乘法的结果是向量的每个元素的总和相乘在一起,通常称之为点积。此向量乘法如下所示:

图1 点积操作

该总和S由每个矢量元素的总和相乘而成,因此S=a1b1+a2b2+a3b3+…

本文讲述的是使用FP16格式的点积运算实例,展示了MLP72支持的数字类型和乘数的范围。

此设计实现了同时处理8对FP16输入的点积。该设计包含四个MLP72,使用MLP内部的级联路径连接。每个MLP72将两个并行乘法的结果相加(即aibi+ai+1bi+1),每个乘法都是i_a输入乘以i_b输入(均为FP16格式)的结果。来自每个MLP72的总和沿着MLP72的列级联到上面的下一个MLP72块。在最后一个MLP72中,在每个周期上,计算八个并行FP16乘法的总和。

最终结果是多个输入周期内的累加总和,其中累加由i_first和i_last输入控制。 i_first输入信号指示累加和归零的第一组输入。 i_last信号指示要累加和加到累加的最后一组输入。最终的i_last值可在之后的六个周期使用,并使用i_last o_valid进行限定。两次运算之间可以无空拍。

那么,以上运算功能如何对应到MLP内部呢?其后的细节已分为MLP72中的多个功能阶段进行说明。

● 进位链

首先请看下图,MLP之间的进位链结构,这是MLP内部的专用走线,可以保证级联的高效执行。

图3 MLP进位链

● 乘法阶段

下图是MLP中浮点乘法功能阶段,其中寄存器代表一级可选延迟。

图4 MLP乘法功能阶段框图

MLP72浮点乘法级包括两个24位全浮点乘法器和一个24位全浮点加法器。两个乘法器执行A×B和C×D的并行计算。加法器将两个结果相加得到A×B + C×D。

乘法阶段有两个输出。下半部分输出可以在A×B或(A×B + C×D)之间选择。上半部分输出始终为C×D。

乘法器和加法器使用的数字格式由字节选择参数以及和参数设置的格式确定。

浮点输出具有与整数输出级相同的路径和结构。MLP72可以配置为在特定阶段选择整数或等效浮点输入。输出支持两个24位全浮点加法器,可以对其进行加法或累加配置。 进一步可以加载加法器(开始累加),可以将其设置为减法,并支持可选的舍入模式。

最终输出阶段支持将浮点输出格式化为MLP72支持的三种浮点格式中的任何一种。 此功能使MLP72可以外部支持大小一致的浮点输入和输出(例如fp16或bfloat16),而在内部以fp24执行所有计算。

图5 MLP浮点输出阶段框图

需要强调的是本设计输入和输出都是FP16格式,中间计算过程,即进位链上的fwdo_out和fwdi_dout 都是FP24格式。具体逻辑框图如下所示:

图6 FP16点积逻辑框图

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

    关注

    1626

    文章

    21667

    浏览量

    601864
  • 卷积
    +关注

    关注

    0

    文章

    95

    浏览量

    18499
  • 机器学习
    +关注

    关注

    66

    文章

    8377

    浏览量

    132411
收藏 人收藏

    评论

    相关推荐

    中交兴路多联运可视与协同平台赋能提升物流管控效率

    联运已成为我国供应链体系的关键组成部分,也是物流产业科技创新发展的重要领域。 三大堵 制约多联运规模化普及 多
    的头像 发表于 11-24 14:56 533次阅读

    FP8数据格式在大型模型训练中的应用

    本文主要介绍了 FP8 数据格式在大型模型训练中的应用、挑战及最佳实践,展示了 FP8 在提升训练速度和效率方面的潜力和实际效果。
    的头像 发表于 11-19 14:54 149次阅读
    <b class='flag-5'>FP</b>8数据<b class='flag-5'>格式</b>在大型模型训练中的应用

    FPGA中的浮点四则运算是什么

    由于定点的四则运算比较简单,如加减法只要注意符号扩展,小数点对齐等问题即可。在本文中,运用在前一节中描述的自定义浮点格式FPGA中数的表示方法(下),完成浮点四则运算
    的头像 发表于 11-16 12:51 166次阅读
    <b class='flag-5'>FPGA</b>中的浮点四则<b class='flag-5'>运算</b>是什么

    FPGA中浮点四则运算实现过程

    由于定点的四则运算比较简单,如加减法只要注意符号扩展,小数点对齐等问题即可。在本文中,运用在前一节中描述的自定义浮点格式FPGA中数的表示方法(下),完成浮点四则运算
    的头像 发表于 11-16 11:19 231次阅读
    <b class='flag-5'>FPGA</b>中浮点四则<b class='flag-5'>运算</b>的<b class='flag-5'>实现</b>过程

    请问如何把WAV,MP3格式的音频文件转化为16位的数据IIS格式

    你好,请问如何把WAV,MP3格式的音频文件转化为16位的数据IIS格式
    发表于 10-23 07:24

    级联精密运算放大器级以实现出色的交流和直流性能

    电子发烧友网站提供《级联精密运算放大器级以实现出色的交流和直流性能.pdf》资料免费下载
    发表于 09-24 11:00 0次下载
    <b class='flag-5'>级联</b>精密<b class='flag-5'>运算</b>放大器级以<b class='flag-5'>实现</b>出色的交流和直流性能

    运算放大器增益带宽对有源滤波电路的影响是什么?

    想问一个问题,运算放大器增益带宽对有源滤波电路的影响
    发表于 08-22 07:15

    请问esp32如何将16进制字符串转换成base64格式

    请问 esp32 如何将 16进制字符串转换成base64格式
    发表于 06-24 08:35

    使用rgb888格式,在清屏切换时会有杂乱的条纹出现是怎么回事?

    使用rgb888格式,在清屏切换时,屏幕会有杂乱的条纹出现? 但是使用 ARGB8888, RGB565的格式时貌似木有,是怎么个情况 ???
    发表于 05-08 06:09

    NVIDIA GPU架构下的FP8训练与推理

    FP8 训练利用 E5M2/E4M3 格式,具备与 FP16 相当的动态范围,适用于反向传播与前向传播。
    的头像 发表于 04-25 10:01 664次阅读
    NVIDIA GPU架构下的<b class='flag-5'>FP</b>8训练与推理

    在gfx模拟器上产生的代码如何设置为rgb565格式

    请教下,在gfx模拟器上,产生的代码如何设置为rgb565格式
    发表于 04-24 06:26

    求助,请问12位传感器数据如何变成YUY2格式

    请教下传感器输出的12位并行数据RAW通过FPGA采集出来,然后要转成YUY2格式通过GPIF接口传给FX3,再通过USB显示实时图像视频。现在问题是12位传感器数据如何变成YUY2格式?通过slaveFIFO时序
    发表于 02-28 07:25

    FP16转换报错的原因?

    FP32转换正常,FP16转换报错(model_transform正常) 运行命令为: model_deploy.py--mlir
    发表于 01-10 08:01

    英伟达为中国市场量身打造RTX 4090 D显卡,规避美国出口限制

    而预计RTX 4090 D需达到的运算性能限制为小于4800 TPP(Texel Processing Performance),而现款RTX 4090无论FP8还是FP16的运行结果均超过该限制
    的头像 发表于 12-19 14:54 998次阅读

    缝缝补补的浮点数进制转换器

    [浮点数]()在计算机科学中是一种重要的数据类型,用于表示实数。其中,FP32和FP16是两种常见的浮点数格式,分别占用32位和16位。
    的头像 发表于 12-04 14:00 1428次阅读
    缝缝补补的浮点数进制转换器