定点化的基本原理

定点化与模型量化(一) 事实上,模型量化一开始就是为了压缩模型参数,韩松ICLR2016使用K-Means聚类,以类中心代替属于该类的所有样本,低bit只需要对类中心表示,从而可以使得保留更多的空间来表示更多的其他数据。既然本质上是定点化,那么模型量化的好处和定点类似,都是损失精度的代价下,有更快的速度,更小的内存,更小的功耗。以常见32bit浮点型到8bit为例,模型大小直接变成了原来的1/4,更重要的是因为使用了整型,可以使用SIMD指令集,而SIMD在移动端的优化已经非常充分了,速度可以加快2~4倍。 阅读详情

CPU有三种可能的浮点数处理方式

  • Use float instructions if your CPU has a FPU. (fast)
  • Have your compiler translate floating point arithmetic to integer arithmetic. (slow)
  • Use float instructions and a CPU with no FPU. Your CPU will generate a exception (Reserved Instruction, Unimplemented Instruction or similar), and if your OS kernel includes a floating point emulator it will emulate those instructions (slowest).

那么如果没有FPU,最好将算法转移成定点来处理来提高速度,比如:

  • 用整数来模拟浮点数

其实就是线性的映射,根据数据的动态范围把浮点映射到int8, int16或int32,
比如浮点数A,a=max(abs(A)),若要把A映射成-128~127的数,需要:
A_fix = A*(127 / a) ,即A=A_fix *a / 127;
如果B也是同样的浮点数,那么
A * B = A_fix* B_fix * a * b / (127 * 127) 就转化成一个定点运算。
注意A*(127 / a) 这一步会有精度损失,A_fix* B_fix * a * b / (127 * 127)这一步有可能溢出。

  • 用定点小数来模拟浮点数

所谓定点小数,就是小数点固定的小数。可以参考这篇文章 Fixed Point Arithmetic on the ARM。可以用库libfixmath
这个库把浮点变换成Q16.16的定点小数来进行计算,并且可以变换回来。

对于Q16.16的数:
static const fix16_t fix16_one = 0x00010000;
static const fix16_t fix16_maximum = 0x7FFFFFFF;
static const fix16_t fix16_minimum = 0x80000000;
最大精度是1.525e-05, cout << fix16_to_float(0x00000001) <

verilog 浮点数转定点数_校招基础——浮点数的定点化 一、概念1、浮点数:小数点位置是漂浮不定的。例如:浮点数运算 1.1 * 1.1 = 1.21,小数点位置发生了变化。IEEE 754 规定,浮点数的表示方法为:最高的 1 位是符号位 s,接着的 8 位是指数E,剩下的 23 位为有效数字 M。2、定点数:小数点的位置是确定的。例如:定点数运算 1.1 * 1.1 = 1.2,小数点的位置没有变化。定点的意思是,小数点固定在 32 位中的某个位置... 阅读详情

相关推荐

FPGA中浮点数的定点化处理技术及高斯模板定点化处理方法

定点化处理

H19981118的博客 4525

定点化的原理及逻辑实现

定点化原理以及逻辑实现

Letitin2020的博客 2711

dsp开发的定点化原理

讲述嵌入式开发的必备基础,定点化。尤其是音视频的DSP开发,定点化是其中的必要步骤,所以很重要

【数字IC设计】数据处理——定点化

定点化(Fixed-Point Quantization)是数字信号处理(DSP)和数字IC设计中的关键步骤,尤其在通信系统、图像处理、嵌入式系统等领域广泛应用。其核心是将浮点数算法转换为适合硬件实现的定点数格式,以降低资源消耗(如面积、功耗)并提高运算速度。

m0_51179832的博客 3338

UE4项目迁移指南:如何无缝导入外部.uasset文件并保持材质关联

本文详细解析了将外部.uasset文件无缝导入UE4项目的专业方法。针对手动复制文件时常见的材质关联丢失问题,提供了使用引用查看器进行诊断和修复的实用技巧,并推荐使用引擎内置的“迁移”功能确保资源依赖关系的完整性,帮助开发者高效整合项目资源。

t8u9v0的博客 1046

HAL库移植实战:解决‘HAL_StatusTypeDef‘未定义报错的3个关键步骤

本文针对STM32开发中从标准库向HAL库移植时常见的'HAL_StatusTypeDef'未定义报错,提供了三个关键解决步骤:首先确保正确包含头文件入口,其次检查并配置模块使能宏,最后注意避免与标准库的同名结构体混用。文章通过实战案例解析了HAL库的模块化设计理念,帮助开发者高效解决混合编程中的编译问题。

book8的博客 207

FPGA数字信号处理中的浮点数定点化实践

本文详细探讨了FPGA数字信号处理中的浮点数定点化实践,包括基本概念、转换步骤、位宽设计策略及误差控制方法。通过Verilog实现技巧和FIR滤波器等实际案例,展示了如何将浮点数高效转换为定点数以优化FPGA资源使用和功耗,同时确保精度满足应用需求。

g5h6i的博客 992

CentOS7全隔离环境部署Nvidia Tesla A100 40G驱动与CUDA工具包实战

本文详细介绍了在CentOS7全隔离环境下部署Nvidia Tesla A100 40G显卡驱动与CUDA工具包的实战经验。通过构建本地YUM仓库、解决驱动依赖问题以及三重验证法,确保Tesla A100与CUDA 11.7的完美兼容。同时分享了Anaconda3离线部署技巧,帮助用户在隔离环境中高效搭建Python GPU开发环境。

weixin_27215337的博客 401

Simulink定点化学习

以FFT4为例,尝试实现手动定点化、半自动定点化和全自动定点化目标。

weixin_44559361的博客 1880

十五天学会Autodesk Inventor,看完这一系列就够了(七),工程图纸

不管哪种绘图软件,二维或三维绘图,最终均需要转换成工程图纸,才能交给现场人员进行制作,这是任一产品图都要经历的过程。那本章开始,我们一起看一下Inventor是如何实现工程图纸?

Crazydoubao的博客 4911

【AI智能体】Dify 搭建数据分析应用实战操作详解

Dify 搭建数据分析应用实战详解

congge 7297

基于FPGA的数字信号处理,一文看懂什么是定点数、浮点数、浮点的定点化、定点的浮点化。

前段时间面试过程中提到了FIR滤波器这个IP核,面试官问FIR滤波器的数据输入输出类型,这里涉及到了我的知识盲区,补一下。在实际的工程应用中,往往会进行大量的数学运算。运算时除了会用到整数,很多时候也会用到小数。而我们知道在数字电路底层,只有高电平1和低电平0的存在,那么仅凭 0和1 该如何表示小数呢?数字电路中,小数可以用两种形式来表示:定点数和浮点数。

weixin_44852755的博客 4234

微信小程序- 云开发上传并部署云函数时报错ResourceNotFound.Function, 未找到函数版本,请创建后再试。(小程序上传部署云函数提示错误,开发控制台中的云函数没有删除,详细排查)

微信小程序——云函数上传失败,微信小程序——解决上传并部署云函数时报错ResourceNotFound.Function, 未找到函数版本,请创建后再试。微信小程序上传云函数失败,微信小程序云开发|Error: ResourceNotFound.FunctionName, FunctionName 指定的资源不存在。微信云开发报错(Error: ResourceNotFound.FunctionName,微信小程序云函数报错,上传云函数 sum 失败 Error:,上传部署我们的云函数 2. 报错 错误信息

🏆 前端领域优质创作者 4316

Simulink 自动代码生成电机控制:自动定点化Fixed-Point Tool 使用

Simulink自动代码生成操作演示

weixin_42665184的博客 1万+

用playwright封装一个处理web网页的爬虫,并隐藏自动化特征,自动处理反爬

本文介绍了一个使用Playwright封装的Python爬虫函数,具备反爬对抗能力。该脚本通过移除自动化标志、注入真实用户代理、禁用Chrome自动化属性等措施,有效绕过电商、新闻等中等反爬网站的检测。核心功能包括:隐藏navigator.webdriver标志、模拟人类浏览行为、设置合理的设备参数,并支持代理和延迟加载。使用时需注意避免高频访问并定期更新User-Agent。该方案适用于需要JavaScript渲染的动态网页,性能优于非无头模式。

数据知道的博客 3393

ZYNQ Petalinux编译系统启动文件实战指南

本文提出的混合编译加速方案实测可将编译时间从45分钟缩短至18分钟,QSPI双启动方案已在工业控制领域成功应用。Xilinx官方UG1144文档(最新v2023.1版)正点原子《ZYNQ嵌入式开发实战》开源项目Meta-Petalinux(GitHub趋势项目)未来展望:随着Versal平台的普及,Petalinux将支持更多AI加速器原生驱动,值得持续关注。

QQ_778132974的博客 812

Matlab定点化

当要对于算法的硬件实现,使用Matlab进行定点化仿真非常重要,网上Matlab定点化仿真的资料比较少,下面是我总结的资料。Matlab定点化三种方法:1.使用round、floor等函数在每次运算后直接进行截断各种截断方法:ceil() 向上取整fix() 向0取整floor() 舍弃小数部分(向下取整)round() 四舍五入取整直接截断取整可能会出现高频噪声,最好使用四舍五入取整。2.使用n...

truecrab的博客 2万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

十进制小数定点化

1、题目 在FPGA中做小数乘法时,一般需要对定点小数量化处理。 量化过程中首先需要确定量化的位宽,位宽越大量化的精度越高。 如题所述,对12.918做无损定点化,首先需要确定对整数部分的量化位数。整数为12,无损量化必须采用4bit; 小数部分为0.918,假如采用12bit位宽,整数部分4bit,那么小数部分只有8bit。8bit所能表达的最大的整数为255(注意,定点小数在FPGA运算过程中是没有小数点的,比如12.918,实际存储的是12.918的二进制形式,所以8bit表示小数部分最大为

CLL_caicai的博客 2575

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

FPGA部署的算法定点化原理与基础

当前在无线通信信号处理中,基本都是基于Python或者Matlab做浮点算法仿真设计,然后部署在硬件DSP或者FPGA中。算法部署在浮点DSP中,基本可以平移,但由于算法速率与成本,灵活性等原因,部分算法也会部署在FPGA中进行实现。常见的数字信号处理,图像处理等需要并行计算的场景,往往需要FPGA参与运算。那么浮点算法部署到FPGA上往往需要一个算法定点化的步骤,该步骤决定了算法性能,FPGA资源消耗,甚至决定了算法部署的成功与失败。本文主要讲述了定点化基础以及算法定点化基本流程。

FPGA/数字IC/通信算法 2192

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

浮点数定点化

​ 电路逻辑中数据通常采用二进制表示,1表示高电平,0表示低电平。​ 那么-7又是如何表示的?​ 但是我们注意到,在十进制算术中,7和-7相加自然为0,但是上述两个16位二进制数相加显然结果不为0,所以这种仅有的表示方法不合理。所以引入原码、反码和补码的概念。

weixin_52570661的博客 1475

FPGA中浮点数的定点化笔记

FPGA中浮点数的定点化笔记 关于基本相关知识参考该博客 本文只针对FPGA中相关类型题目的做法思考整理,方便查看和复习,以后有时间再深入研究。 浮点数的定点化 FPGA 1.基础概念 浮点数: 简单来说,就是小数点的位置不是固定的 定点数: 简单来说,小数点的位置是固定的,也就是整数位宽与小数的位宽是固定的 以下部分内容摘自该博文 因为在普通的fpga芯片里面,寄存器只可以表示无符号型,不可以表示小数,所以在计算比较精确的数值时,就需要做一些处理,不过在altera在Arria 10 中增加了硬核浮点DS

qq_38318540的博客 4931

FPGA中的浮点数定点化理解

学习目标: 学习内容: 学习时间: 学习产出: 学习总结 发现问题

qq_41640675的博客 3062

Matlab 定点化 (fixed point designer)-入门1

Matlab 定点化 (fixed point designer)-入门1 欢迎关注微信公众号:小鱼FPGA “ 当把算法用FPGA实现时,我们必须要考虑定点化问题。matlab的fixed point designer就是帮助我们定点化的工具” **01 定点化基...

qq_38306698的博客 1万+

定点化

谈到这个话题,有必要先介绍下“浮点数”和“定点数”这两个名词的概念。1.25 + (-2.75) = ?                                                                (1)上面这个算式我们心算就能轻松得出结果,同样的算式,交给单片机来完成,它要大致分解为下面三个计算步骤:1)加载操作数(也就是1.25和2.75);2)做加法运算;3...

为实现四个现代化奋斗 8454

Matlab 定点化 (fixed point designer)

部分内容转载:https://blog.youkuaiyun.com/qq_38306698/article/details/82054531 但是一般写出来的软件模型的运算数据类型都是浮点型运算,当要用FPGA实现,转成Verilog一般都是利用定点化运算。 什么是定点化运算呢。比如: a*b=c 当 a=0.21 b=2时。 如果是浮点运算,毫无疑问答案为 c=0.42。 但是当用定点化数据去算。如a,b...

ming0632wm的博客 2900

训练好后的神经网络如何快速定点化?

训练好后的神经网络如何快速定点化? 如何把浮点权重快速定点化后使用在嵌入式设备中 tensorflow模型的定点化 如何量化和量化意义? 网络参数是按层组织,每层数值都在同一数量级,即范围相差不大,如[-6.0,4.0],有大量论文研究表明确认值最大和最小后每层数据使用8bit定点化量化已可以很好满足推断计算。 量化最直接结果是参数存储空间要求变小,经验值是减少约3/4;减少内存读取数据量,节省带宽;使用simd进行计算加速,如果有dsp进行8bit加速计算节能,使得移动设备上进行推断计算变得更.

It is me 的博客 2046
上一篇: GDB
下一篇: 算法性能测量方法
我把葡萄酿成酒
博客等级 码龄12年 275粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值