前言:既然涉及到计算,那么浮点数定点数的选择和位宽的选择是逃不开的。一般来说,定点数和低位宽的组合是低功耗和低资源消耗的,也就是硬件友好型的。


首先简单的说明一下浮点数和定点数的区别。

1. 浮点数的表示

以float32为例,按照 IEEE 754标准的浮点数格式为:

其中s表示符号位,0为正1为负;M表示尾数;E表示阶码。在float32中,符号位占1位,尾数占23位,阶码占8位。

这种指数形式的格式可以表示的范围更大,但同时小数点是浮动的,分布是不均匀的。与整数的均匀分布相比,浮点数越靠近0分布越密,表示的精度越高;越远离0分布越疏,表示的范围越大,从下图可以看的很清楚。

  • 举个栗子吧

s=1, M=4429709/8388608=0.52806, E=130

带入上面的公式

对了,这个转换的网站挺好用的

Online Binary-Decimal Converter​www.binaryconvert.com

2. 定点数的表示

对于硬件来说,浮点定点中的小数点是看不见的,至于它表示多少,是逻辑层面的设置,需要实现设置好整数的位宽和小数的位宽。

  • 再来举个栗子吧

若整数位占4位,小数位占3位,则其最大精度为0.125,最大值为15.875,而这种分布就是均匀分布。

3. FPGA的实现

那么回到主题,浮点数用的好好的为什么要用定点数呢?

先放两张16bit定点数和浮点数的乘法器的消耗DSP比较:

定点数实现消耗1个DSP48
浮点数实现消耗2个DSP48

节省资源的以获取更大并行度的初衷使得我们趋向选择定点数计算。另外也可以看出浮点数和定点数的转换是一种映射,这种映射在vivado的ip中可以很轻松的找到。

4. 定点数的截断和扩充

无论是乘法器还是加法器,在计算过程中都会涉及位宽扩充的问题,这样在卷积网络重复计算的过程中会导致位宽越来越大。

乘法器
加法器

这时就需要对定点小数进行适当的位宽截断来满足计算过程中的位宽不变的需求,而同时不对计算结果造成影响。

首先是如何进行截断和扩充,当然对于有符号的定点小数,都要保证符号位不变。

  • 截断:整数部分从次高位开始去掉若干位,小数部分从最低位开始去掉若干位。截断可能会造成数值的改变。
  • 扩充:当小数为非负数时:整数部分在次高位之前扩充若干个0,小数部分在最低位之后扩充若干个0。扩充不会造成数值的改变;当小数为负数时:整数部分在次高位之前扩充若干个1,小数部分在最低位之后扩充若干个0。扩充不会造成数值的改变。

然后是如何确定整数部分的位宽和小数部分的位宽。当然你可能都想要,但是你资源又不够,因此最好的方法就是pc上的仿真。以模型计算过程中的最大值来确定整数部分的位宽,最后拿全部位宽减去整数位宽就得到了小数位宽。

over~~~

异构计算 软硬协同设计_优雅的设计CNN并行架构-软硬协同之位宽设置(2)相关推荐

  1. java闹钟程序设计_JAVA课程设计_闹钟的设计与实现项目-报告_附源代码.doc

    JAVA课程设计_闹钟的设计与实现项目-报告_附源代码 第2章 MACROBUTTON AcceptAllChangesInDoc [双击此处键入1级标题] PAGE 2 - PAGE 1 - .. ...

  2. flex如何做响应式设计_响应式设计-您做错了!

    flex如何做响应式设计 Responsive design is not just about the web that automatically adjusts to different scr ...

  3. ddd领域驱动设计_领域驱动设计(DDD)理论启示

    过去几年通天塔一直处于快速的业务能力建设和架构完善的阶段,以应对不断增长的业务需求和容量.高可用等技术需求,现在通天塔平台已经能满足集团主站的大部分活动.频道搭建和运营能力,主流程的新需求越来越少,个 ...

  4. 小型蘑菇定向切片机设计_鲜枣去核机的设计_玉米脱粒机的设计_振动式马铃薯收获机的设计_谷物干燥机的设计_锤片式饲料粉碎机的设计_山楂去核机的设计_萝卜切丝机设计_板栗去皮机设计_锤式破碎机设计……

    棉花打包机的设计[说明书(论文)+CAD+solidworks] 毕业设计_气动四自由度机械手结构设计(设计说明书+CAD图纸)    套类零件自动上下料机构 玉米脱粒机的设计(说明书+cad图纸+p ...

  5. dcdc模块降额设计_模块电源应用设计的可靠性和注意事项

    我们在选择电源上,常常把重心放在参数与性能上,容易忽视这是通用型设计.电源模块本身的可靠性很重要,但事实上,由于电源系统工作环境的复杂性,如果没有可靠的系统应用设计,电源最终会失效.下面介绍电源系统应 ...

  6. 基于linux的贪吃蛇游戏设计_基于ECS的游戏引擎架构设计「译」

    摘要 游戏编程设计和组织是困难而复杂的,为了简化开发进程,会使用被称为游戏引擎的游戏框架(framework),该框架包含了一组实用工具.本项的目的是探索游戏引擎设计和开发一个模块化和可扩展的游戏引擎 ...

  7. 动态网站的制作与设计_动态网站设计要注意那些细节

    细节部分如页面的访问速度,客户的使用反馈和交流,内容的更新等都对于用户来说能够起到不小的作用.客户在浏览网页时,很少会进入需要等候的网页,在网络上的三秒的等候时间都显得久了.网站在进行设计时应该留有用 ...

  8. 壁行式起重机设计_玉米播种机的设计_残疾人轮椅设计_破冰除雪机设计_单转子可逆式锤式破碎机设计_全液压升降机设计_振动压路机振动轮设计_旋转型灌装机设计_搬运机械手及其控制系统设计……

    组合机床主轴箱及夹具设计(论文+DWG图纸) 机械毕业设计-玉米播种机的设计(开题报告+任务书+说明书+CAD图纸+答辩PPT) 机械毕业设计-残疾人轮椅设计(含全套CAD图纸)    残疾人轮椅的设 ...

  9. python人工智能课程设计_中小学课程设计:以计算思维培养为核心的人工智能课程设计与实践...

    面对国际日趋紧张的科技竞争,发展新一代人工智能已成为各国的重要国家战略.人工智能人才的梯队建设是我国发展人工智能技术和推动产业应用的重要基础. 01存在问题 近年来教育部和各省市教育主管部门发布了一系 ...

最新文章

  1. Linux非阻塞IO(二)网络编程中非阻塞IO与IO复用模型结合
  2. 数据恢复:解决ORA-600[kghstack_free2][kghstack_err+0068]一例
  3. APPLE框架之高效便捷的Repository解决方案
  4. FMDB:中的用法介绍
  5. Oracle truncate table 与 delete tabel的区别(转)
  6. 或许是因为本科不是学cs的HTML5原因
  7. 深入理解Java虚拟机--中
  8. VRAR产业峰会暨第二届华为VR开发应用大赛颁奖典礼在和平区成功举办
  9. 阿里巴巴招募鉴黄体验官,日薪1000元,小姐姐优先,要求阅“片”无数
  10. 实现可拖拽,拉伸,吸附功能的甘特图(时间/任务表)
  11. JAVA System.getProperty()参数
  12. ubuntu18.04安装虚拟显示器,不接显示器可远程桌面
  13. Python 读取加密后的xlsl
  14. Facebook的新算法可以预测出你的贫富阶级
  15. iphone通讯录的备份与恢复
  16. 只要花3K 手把手教你制作炫酷的MR混合现实视频
  17. JavaScript交互式网页设计 • 【第3章 JavaScript浏览器对象模型】
  18. Charles手机端抓包,抓取小说软件整本小说的示例
  19. 2018/5/25-2018/6/7
  20. SQL Server 中的身份认证讲解

热门文章

  1. 微信上线「行程查询」服务;钉钉 CEO 回应被打「一星」;Go 1.14 发布 | 极客头条...
  2. 携程的 Dubbo 之路
  3. 阿里披露 AI 完整布局,飞天 AI 平台首次亮相!
  4. AI 会替代程序员?超好用的自动补全代码工具 Deep TabNine!
  5. 联通辟谣“不支持华为 5G”;罗永浩称索尼手机不如锤子;Linux 5.2.1 发布 | 极客头条...
  6. 所有的 iPhone 和高端 Android 设备都被破解了!
  7. 阿里撬得动“印度版”抖音吗?
  8. 程序员拯救乐坛?OpenAI 用“逆天”GPT2.0 搞了个 AI 音乐生成器
  9. 如何阻止机器人杀害人类?
  10. 当科学家遇上流氓,被喧哗炒作的量子通信技术又将何时落地?