NVDLA专题12:具体模块介绍——LUT Programming

news2024/9/25 19:14:52

LUT编程

LUT是NVDLA中SDP/CDP的实例,用于模拟神经网络中的非线性函数(Sigmoid/TanH/LRN等。)。我们知道,LUT精度高度依赖于LUT entry和曲线的斜率变化:LUT entry越多,精度越高。另一方面,曲线的斜率变化越大,越难模拟。

值得一提的是,SDP/CDP共享相同的LUT逻辑,它们之间的唯一区别是位深度,因为SDP管道是32位,而CDP管道是37位。

这里提出了一种创新的2级混合LUT架构,通过有限的LUT entry来保持非常高的精度:

该实施方案有两个亮点:

LUT中有两个表(X表\Y表)和两种模式(X表有两种工作模式),典型配置是将其中一个用作原始表以覆盖整个动态范围另一个用作密度表以覆盖一小部分动态范围。由于覆盖范围的差异,原始表具有较低的采样率,而密度表具有相对较高的采样率,这是受LRN/Sigmoid/TanH曲线属性的启发

从上面的图我们可以看出,对于这些函数,只有一小部分具有显著的斜率变化,而其他部分几乎没有太大的变化,因此2级LUT是模拟这些函数的经济选项。

由于密度表和原始表之间可能有重叠,我们有一个可编程的寄存器:“优先级”(pri),当一个样本适合两个表时,允许软件控制哪个LUT表输出应该作为最终输出。当然,建议是一直使用密度输出。

混合工作模式

我们注意到,对于LRN,输入动态范围非常高(0~10^8),但大多数样本都在一个小数据范围内:

上面的直方图是从GoogleNet的“pool1/norm1”层收集的,我们通过不同的x轴坐标系(线性和指数)查看了相同的数据。

我们可以看到,线性(均匀采样)视图将50%以上的样本合并到直方图中的一个点,而指数视图(不均匀采样)将这些样本区分到不同的直方图点,从而提供更好的分辨率。同样的策略可以用于LUT:如果LUT在指数模式下工作,我们对低范围值有很高的采样率,对高范围值有很低的采样率(这是公平的,因为它们在直方图中的频率很低)。这就是“指数”模式的思想。目前,只有X表能够在指数模式下工作,当该模式被启用时,覆盖范围被固定为2^{exp\_start} 2^{exp\_start+tlb\_entry}

下表总结了NVDLA的LUT属性(当映射到硬件时,X/Y用于表示不同的表,X对应于LE(Linear/Exponent,线性/指数),而Y对应于LO(Linear Only, 仅线性)):

典型使用场景的推荐LUT配置:

然而,这不是强制性的,软件可以将LUT编程为以下任何情况(X/Y可以颠倒,这意味着总共6种情况)运行:

如第一张图所示,LUT有几个参数,让我们讨论如何根据不同的模式来配置它们。

指数工作模式

如果LUT正在指数模式下工作,LUT存储有如下示例(实际上,exp_start是可编程的):

假定对于每一个LUT存储,LUT的输入是x{'}=(x-O_{in})*SF_{in{}'},那么索引应该是

这需要乘法器,为了使硬件更简单,我们要求:

然后,硬件只需要右/左移位器来获得正确的索引,然而,也就是:

这可以通过LUT之前的变换器来保证(cdp中的cdp _ in _ cvt;SDP中的X/X/Y乘数)。 上述符号与实际寄存器之间的映射是(X可以是LE/LO):

溢出范围控制

假设一个LUT覆盖范围在[min,max]之间,如果一个输入样本大于max或小于min,我们称之为超范围样本。 NVDLA支持对这些超范围样本进行线性插值。插值的数学公式为(x是输入样本值):

从硬件的角度来说,插值是

以下溢为例,给定(2^M是应用于LUT输入的缩放,SF是应用于LUT entry的缩放):

硬件输出为:

进而

上述公式中的符号与寄存器之间的映射为:

LUT存储编程

通常来说,为了对LUT entry进行编程,必须指定LUT entry地址及其值,这需要2次寄存器写操作。NVDLA通过引入硬件自动地址递增机制简化了这一过程,这意味着,当你需要对LUT表进行编程时,你只需编写如下代码(以LE表程序为例):

/* program raw table */
reg = (FIELD_ENUM(S_LUT_ACCESS_CFG, LUT_TABLE_ID, LE) << SHIFT(S_LUT_ACCESS_CFG, LUT_TABLE_ID)) |
      (FIELD_ENUM(S_LUT_ACCESS_CFG, LUT_ACCESS_TYPE, WRITE) << SHIFT(S_LUT_ACCESS_CFG, LUT_ACCESS_TYPE));
reg_write(S_LUT_ACCESS_CFG, reg);
for(i = 0; i < LUT_LE_TABLE_ENTRIES; i++) {
    reg_write(S_LUT_ACCESS_DATA, lut->le_table[i]);
}

如果地址超出了总的LUT entry(例如:上述伪代码中的LUT_RAW_TABLE_ENTRIES超出了实际的LUT entry),则硬件行为是未定义的。

NVDLA支持从任意入口读回已编程的LUT entry。LUT访问CFG只需要编程一次,地址就会自动增加。请注意,对于LUT读取的情况,S_LUT_ACCESS_CFG的编程必须是非后写的;

LUT编程有两个限制:

  • 确保总是从第一个entry开始写LUT,并更新整个表;
  • 对于两个寄存器组只有一个共享的LUT存储,确保当相应的子单元空闲时更新LUT;

命中/未命中行为

对于给定的输入样本,如果只命中一个表,最终输出将是命中表的输出;然而,X/Y表编程非常灵活,因此会导致不同的命中/未命中情况:

  1. 一个输入样本可能在两个表中都被命中;(case1)
  2. 由于溢出,一个输入样本可能在两个表中都丢失;(case1、2、3)
  3. 由于下溢,一个输入样本可能在两个表中都丢失;(case1、2、3)
  4. 由于一个表溢出而另一个表下溢,一个输入样本可能在两个表中都丢失(case3)

对于上述所有情况,硬件需要一种方法来选择如何获得最终输出,因此我们在下面公开了可编程寄存器,以允许软件对优先级进行编程:

LUT统计

当一个硬件层完成时,硬件将在下面报告统计数据,以帮助软件了解LUT表是否被合理编程。

对于每个寄存器组,我们在上面有专用的统计寄存器,当一个硬件完成时,这些计数器将可供读取(通过将生产者指针设置到该寄存器组)。在启用相应的寄存器组(op_en被置位)之前,这些统计数据不会被擦除。

end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2053134.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎么把pdf文件转html格式?5个pdf转html方法学起来(超简单)

在信息化快速发展的今天&#xff0c;各种文件格式层出不穷。作为一种常见的文件格式&#xff0c;PDF因其跨平台的优势被广泛应用于文档的分享与存储。然而&#xff0c;随着网页技术的进步&#xff0c;越来越多的用户希望将PDF文档转换为HTML格式&#xff0c;以便在网页上进行编…

第三方软件测评中心分享:软件系统测试内容和作用

近年来&#xff0c;随着信息技术的迅猛发展&#xff0c;软件系统的应用范围不断扩大。保证软件质量的关键措施之一就是软件系统测试。软件系统测试是指在软件开发生命周期中&#xff0c;通过一系列特定的测试活动来验证和确认软件系统的性能、功能及安全性&#xff0c;确保软件…

使用大模型撰写移动机器人模拟器(CoppeliaSim、Gazebo、MORSE和Webots)的定量比较研究报告

使用大模型辅助阅读移动机器人模拟器&#xff08;CoppeliaSim、Gazebo、MORSE和Webots&#xff09;的定量比较研究报告-CSDN博客 表格总结 以下是对全文进行学术性科学总结的一系列表格&#xff1a; 1. 摘要表格 类别描述文章标题如何选择移动机器人模拟器&#xff1a;对Copp…

Spring Boot实战:使用模板方法模式优化数据处理流程

概述 在软件开发过程中&#xff0c;我们经常需要处理各种各样的数据&#xff0c;这些数据可能来自不同的源&#xff0c;比如数据库、文件系统或者外部API等。尽管数据来源不同&#xff0c;但很多情况下处理这些数据的步骤是相似的&#xff1a;读取数据、清洗数据、转换数据格式…

easyexcel--导入导出实现自定义格式转换

自定义格式 我们在数据库设计的时候经常会有枚举类型&#xff0c;如0表示普通用户&#xff0c;1表示VIP用户等&#xff0c;这在excel导入的时候&#xff0c;我们会填普通用户而不是0&#xff0c;这样就需要用到自定义格式把普通用户转换成0&#xff0c;我写了一个通用的抽象类…

使用 C/C++访问 MySQL

目录 准备工作 尝试链接 MySQL Client MySQL 接口介绍 准备工作 保证 MySQL 服务有效。下载MySQL开发包&#xff08;可以在MySQL官网下载安装也可以在软件源安装&#xff09; MySQL 开发包通常会包含一些特定的头文件和库文件。您可以检查以下常见的路径&#xff1a; /us…

C++ 11 的新增特性

一.列表初始化 1.1 { }初始化 在C 11 中扩大了 大括号{ } 的使用范围&#xff0c;我们可以使用大括号初始化内置类型对象和自定义类型对象&#xff0c;可以在使用时加上 等于 &#xff0c;不加也可以&#xff0c;但是还是建议加上。 在初始化对象时我们就可以像以下方式初始化…

如何用Chatgpt制作流程图呢?

小说推文—— AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频百万播放量https://aitools.jurilu.com/流程图的本质&#xff0c;是对文本信息的整合组织&#xff0c;是对逻辑关系的可视化呈现。而大语言模型非常擅长从给定的…

C++策略模式:萧炎打架~

目录 策略模式步骤例子&#xff1a;萧炎使用技能打架给出UML图1&#xff1a;定义技能策略2&#xff1a;实现技能策略3&#xff1a;定义萧炎类4&#xff1a;萧炎遇到强劲的敌人5&#xff1a;战斗过程 策略模式 策略模式是一种行为设计模式&#xff0c;它定义了一系列算法&#…

学姐说,WebGIS面试八股文不会也得背!会!

本文全是干货&#xff0c;内容来一线GIS开发工程师&#xff0c;目前是中地数码集团、新中地GIS开发特训营高级讲师&#xff0c;从事GIS软件开发工作8年&#xff0c;拥有丰富的软件开发和项目研发经验&#xff0c;对webGIS、桌面GIS开发有较深研究&#xff0c;深谙GIS开发面试的…

玩转单例模式

目录 1. 饿汉式 2. 懒汉式 3. volatile解决指令重排序 4. 反射破坏单例模式 5. 枚举实现单例模式 6. 枚举实现单例模式的好处 7.尝试反射破坏枚举 所谓单例模式&#xff0c;就是是某个类的实例对象只能被创建一次&#xff0c;单例模式两种实现&#xff1a;饿汉式和懒汉…

unity程序简易框架

1. 框架基本结构 2. 单例模式基类模块 2.1 BaseManager.cs using System.Collections; using System.Collections.Generic; using UnityEngine;public class BaseManager<T> where T:new() {private static T instance;public static T GetInstance(){if (instance == …

直播预约|2024 乐鑫科技全球开发者大会亮点揭秘

时隔一年&#xff0c;2024 乐鑫科技全球开发者大会将在 9 月 3-5 日如约而至。这一年&#xff0c;人工智能给物联网领域带来了哪些变化&#xff1f;乐鑫在 AIoT 领域实现了哪些新突破&#xff1f;ESP-IDF 经过升级后增添了哪些新功能&#xff1f;ESP32-P4、ESP32-C6 迎来了怎样…

C语言指针详解-上

C语言指针详解-上 前言1.指针的基本概念1.1指针是什么1.2指针的声明与初始化1.3取地址符&和解引用符*& 运算符用于**获取变量的地址*** 运算符用于访问指针指向的值 2.指针的类型常见数据类型的指针指针与数组、字符串数组指针结构体指针函数指针二级指针void指针 3.指…

多级评论的实现,评论回复功能(两层型)

前言&#xff1a; 技术栈&#xff1a;springboot mysql mybatis 比着写一遍&#xff0c;你也一定会实现多级评论的功能&#xff0c;简单易上手&#xff01; 1.效果 整体的结构只有两层&#xff0c;但是确实现了评论回复功能 [ { "id": 2, "userId": …

让JMeter测试数据生成更容易

让JMeter测试数据生成更容易 背景&#xff1a; 在软件测试过程中&#xff0c;为了确保系统的稳定性和可靠性&#xff0c;需要对各种场景进行全面的测试。而不同的场景往往需要各种各样的测试数据&#xff0c;这些数据需要具有一定的真实性和多样性&#xff0c;以模拟实际使用…

零基础小白实现C#调用halcon dll的过程,并测试程序证明C#halcon联合开发成功

本篇将介绍零基础小白实现C#调用halcon dll的过程&#xff0c;同时这其中涉及到很多知识&#xff0c;务必将HDevelop和VisualStudio安装成功。下面我将详细阐述C#调用halcon dll的过程&#xff0c;你的点赞和评论是我一直前行的动力。 1. C#调用Halcon DLL的过程 要在C#中调用…

选择TPM管理咨询公司,这几点是关键!

在这个日新月异的商业时代&#xff0c;企业的竞争力不仅体现在产品和服务上&#xff0c;更在于其内部管理的精细化与高效化。TPM作为提升企业综合生产效率的利器&#xff0c;正逐步成为众多企业转型升级的必然选择。然而&#xff0c;如何在众多TPM管理咨询公司中慧眼识珠&#…

嘉盛:股指、国债及商品期货分析

股指展望中证全指在2024年下半年可能迎来约20%的上涨空间。尽管市场估值较低&#xff0c;风险溢价仍维持在高位&#xff0c;这提升了指数的配置性价比。预计无风险利率将继续维持在较低水平&#xff0c;对中证全指估值产生积极影响。盈利方面&#xff0c;预计下半年中证全指EPS…

【广东】邀您共赴纷享销客生态伙伴大会

在数字化浪潮的驱动下&#xff0c;CRM行业正迎来前所未有的创新机遇。作为CRM领域的引领者&#xff0c;纷享销客特别举办“纷享销客2024生态伙伴大会&#xff08;广东站&#xff09;”。我们诚挚邀请各位生态伙伴莅临现场&#xff0c;共同探讨SaaS CRM行业的最新趋势&#xff0…