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
    +关注

    关注

    1655

    文章

    22282

    浏览量

    630070
  • 卷积
    +关注

    关注

    0

    文章

    95

    浏览量

    18923
  • 机器学习
    +关注

    关注

    66

    文章

    8541

    浏览量

    136216
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    利用C语言union特性来定义RGB565格式

    本次分享的内容是利用C语言union特性来定义RGB565格式 1)前言 在做视觉相关的任务时,相机的输入一般会是RGB565(uint16_t)的格式,而我们需要把它显转换成RGB
    发表于 10-30 08:26

    基于级联分类器的人脸检测基本原理

    。这里需要指出的一是,可能会存在多个检测结果为阳性的窗口,鉴于此类情况,我们会在最后进行一次聚类,把多个阳性窗口合并成为一个。 该算法还具有支持多尺度和任意旋转角度的扩展版本。关于多尺度,算法的实现细节
    发表于 10-30 06:14

    小白必读:到底什么是FP32、FP16、INT8?

    网上关于算力的文章,如果提到某个芯片或某个智算中心的算力,都会写:在FP32精度下,英伟达H100的算力大约为0.9PFlops。在FP16精度下,某智算中心的算力是6.7EFlops。在INT8
    的头像 发表于 10-20 14:34 580次阅读
    小白必读:到底什么是<b class='flag-5'>FP</b>32、<b class='flag-5'>FP16</b>、INT8?

    计算精度对比:FP64、FP32、FP16、TF32、BF16、int8

    本文转自:河北人工智能计算中心在当今快速发展的人工智能领域,算力成为决定模型训练与推理速度的关键因素之一。为了提高计算效率,不同精度的数据类型应运而生,包括FP64、FP32、FP16、TF32
    的头像 发表于 06-26 11:09 2078次阅读
    计算精度对比:<b class='flag-5'>FP</b>64、<b class='flag-5'>FP</b>32、<b class='flag-5'>FP16</b>、TF32、BF<b class='flag-5'>16</b>、int8

    将Whisper大型v3 fp32模型转换为较低精度后,推理时间增加,怎么解决?

    将 openai/whisper-large-v3 FP32 模型转换为 FP16、INT8 和 INT4。 推理所花费的时间比在 FP32 上花费的时间要多
    发表于 06-24 06:23

    RGB888格式的image怎么保存jpg格式

    01的K230板子 1.2.2固件 我用RGB565可以顺利保存jpg,但是RGB888就不行,提示如下 提问:RGB888格式的image怎么保存jpg格式 想保存888是因为感觉图像质量更好,后面用这些保存的图片来训练模型 试试这个
    发表于 04-25 08:18

    Optimum Intel / NNCF在重量压缩中选择FP16模型的原因?

    无法确定使用 Optimum Intel / NNCF 在重量压缩中选择 FP16 模型的原因。
    发表于 03-06 06:04

    使用模型优化器命令将ONNX模型转换为OpenVINO™ IR格式时出现“ReplacementID”错误怎么解决?

    , 3], [1,512, 896, 4] --input frame, prob --data_type FP16 --output_dir \"{model_path.parent
    发表于 03-05 09:41

    为什么无法将TensorFlow自定义模型转换为IR格式

    将 TensorFlow* 自定义模型转换为 IR 格式: mo --data_type FP16 --saved_model_dir--input_shape (1,150,150,3
    发表于 03-05 07:26

    为什么无法使用Dla_compiler在OpenVINO™中编译用于FPGA的IR模型?

    /dlia_plugin.cpp:141 FPGA plugin supports only FP16 and FP32 output precision.
    发表于 03-05 06:00

    英伟达A100和H100比较

    。 CUDA核心: 1,120个。 Tensor核心: 支持FP16、BF16、TF32和INT8计算。 H100: 架构: 基于Hopper架构。 CUDA核心: 1,584个。 Tensor核心
    的头像 发表于 02-10 17:05 1.1w次阅读
    英伟达A100和H100比较

    FB16 1对15 U盘拷贝格式化机——高效数据复制工具

    FB16 1对15 U盘拷贝格式化机,采用台湾捷美原厂工艺,具备25MB/s高速拷贝速度和16口同步复制功能,支持加密U盘免解密拷贝及USB 2.0/3.0设备。支持FAT16/FAT
    的头像 发表于 02-07 17:36 749次阅读
    FB<b class='flag-5'>16</b> 1对15 U盘拷贝<b class='flag-5'>格式</b>化机——高效数据复制工具

    THS8200输出1080P50/60格式YPbPr视频时无信号是怎么回事?

    输入是16位YCbCr 4:2:2格式的信号,EAV/SAV同步,所有I2C配置按照参考脚本slec026a和slec026b的相关内容来设置的。 现在如果输入格式是1080P25和P30时,可以
    发表于 01-22 07:05

    TVP5150AM1工作在601格式时,H、V没有输出是怎么回事?

    在通道A输入CVBS信号,配置为656格式,工作完全正常。 配置为601格式, i2c_write_char(VideoDecoderADDR,0x03
    发表于 01-06 06:47

    MOV格式与MP4格式的区别

    MOV格式与MP4格式在多个方面存在显著的区别。以下是对这两种视频格式的比较: 一、开发背景与用途 MOV格式 : 开发背景:MOV格式是A
    的头像 发表于 12-06 14:34 8754次阅读