摘要: 随着深度学习的飞速发展,对处理器的性能要求也变得越来越高,随之涌现出了很多针对神经网络加速设计的AI芯片。卷积计算是神经网络中最重要的一类计算,本文分析了高性能卷积计算中的数据复用,这是AI芯片设计中需要优化的重点之一,具体思路如下 数据复用的动机 存储 计算分离框架下,针对卷积计算的优化思路 针对 阅读全文
posted @ 2019-08-28 02:27 暗海风 阅读(7774) 评论(2) 推荐(2) 编辑
摘要: 以往我分析了一些AI加速器的设计,包括TPU,FSD,华为达芬奇等,无一例外都是从已经给出的设计出发,去分析其优缺点和应用范围。在之前的文章中,关于这些设计是如何完成的,其背后是否有一定设计原则和理念的内容均没有进行探讨。而这两点,实则是设计一个优秀的,可持续迭代的加速器的基础。本文将从矩阵加速器出 阅读全文
posted @ 2020-03-10 00:09 暗海风 阅读(2128) 评论(2) 推荐(1) 编辑
摘要: 在 "AI芯片:高性能卷积计算中的数据复用" 曾提到,基于变换域的卷积计算——譬如Winograd卷积——并不能适应算法上对卷积计算多变的需求。但Winograd卷积依旧出现在刚刚公开的ARM Ethos N57和Ethos N37 NPUs的支持特性中,本文将利用Nvidia开源的NVIDIA D 阅读全文
posted @ 2019-10-30 21:13 暗海风 阅读(2547) 评论(0) 推荐(1) 编辑
摘要: 深度学习飞速发展过程中,人们发现原有的处理器无法满足神经网络这种特定的大量计算,大量的开始针对这一应用进行专用芯片的设计。谷歌的张量处理单元(Tensor Processing Unit,后文简称TPU)是完成较早,具有代表性的一类设计,基于脉动阵列设计的矩阵计算加速单元,可以很好的加速神经网络的计 阅读全文
posted @ 2019-07-26 21:37 暗海风 阅读(2610) 评论(1) 推荐(1) 编辑
摘要: 深度学习飞速发展过程中,人们发现原有的处理器无法满足神经网络这种特定的大量计算,大量的开始针对这一应用进行专用芯片的设计。谷歌的张量处理单元(Tensor Processing Unit,后文简称TPU)是完成较早,具有代表性的一类设计,TPU采用基于脉动阵列设计的矩阵计算加速单元,可以很好的加速神 阅读全文
posted @ 2019-07-26 02:45 暗海风 阅读(1959) 评论(0) 推荐(0) 编辑
摘要: 深度学习飞速发展过程中,人们发现原有的处理器无法满足神经网络这种特定的大量计算,大量的开始针对这一应用进行专用芯片的设计。谷歌的张量处理单元(Tensor Processing Unit,后文简称TPU)是完成较早,具有代表性的一类设计,基于脉动阵列设计的矩阵计算加速单元,可以很好的加速神经网络的计 阅读全文
posted @ 2019-07-03 21:53 暗海风 阅读(3597) 评论(0) 推荐(1) 编辑
摘要: 深度学习飞速发展过程中,人们发现原有的处理器无法满足神经网络这种特定的大量计算,大量的开始针对这一应用进行专用芯片的设计。谷歌的张量处理单元(Tensor Processing Unit,后文简称TPU)是完成较早,具有代表性的一类设计,基于脉动阵列设计的矩阵计算加速单元,可以很好的加速神经网络的计 阅读全文
posted @ 2019-06-11 09:41 暗海风 阅读(13742) 评论(6) 推荐(5) 编辑
摘要: 深度学习飞速发展过程中,人们发现原有的处理器无法满足神经网络这种特定的大量计算,大量的开始针对这一应用进行专用芯片的设计。谷歌的张量处理单元(Tensor Processing Unit,后文简称TPU)是完成较早,具有代表性的一类设计,基于脉动阵列设计的矩阵计算加速单元,可以很好的加速神经网络的计 阅读全文
posted @ 2019-06-11 09:40 暗海风 阅读(5162) 评论(1) 推荐(2) 编辑
摘要: 1. 概述 采用Xilinx HLS快速实现的部分并行,全流水的LDPC译码器。 环境:Vivado HLS 2018.2 码字:IEEE 802.16e 2/3A 算法:Min-Sum Algorithm 代码:https://github.com/cea-wind/hls_ldpc_dec/ 器 阅读全文
posted @ 2018-10-15 03:03 暗海风 阅读(4420) 评论(8) 推荐(0) 编辑
摘要: 上午在论坛看到个热帖,里头的题目挺有意思的,简单的记录了一下。 0. 题目 在FPGA上实现一个模块,求32个输入中的最大值和次大值,32个输入由一个时钟周期给出。(题目来自论坛,面试题,如果觉得不合适请留言删除) 从我个人的观点来看,这是一道很好的面试题目: 其一是这大概是某些机器学习算法实现过程 阅读全文
posted @ 2018-01-30 20:29 暗海风 阅读(5336) 评论(0) 推荐(1) 编辑
摘要: MATLAB是一个很好用的工具。利用MATLAB脚本进行科学计算也特别方便快捷。但是代码存在较多循环时,MATLAB运行速度极慢。如果不想放弃MATLAB中大量方便使用的库,又希望代码能迅速快捷的运行,可以考虑将循环较多的功能采用C编写,MATLAB调用。本文将概述这一过程。虽然本文以LDPC译码算 阅读全文
posted @ 2016-07-27 20:05 暗海风 阅读(3807) 评论(0) 推荐(0) 编辑
摘要: 本文由量化、数据类型、上溢和下溢衍生,将浮点数看作是实数域的一种量化方式,分析浮点数,尤其是非规则浮点数和规则浮点数之间的差异。 0. 背景、动机和目的 为了更好理解本文内容,可先行阅读《量化、数据类型、上溢和下溢》中内容。这里依旧将浮点数看作是一种量化方式,将连续的不可数的集合映射到有限的集合上去 阅读全文
posted @ 2016-06-13 20:17 暗海风 阅读(2666) 评论(0) 推荐(0) 编辑
摘要: 2016-04-26 发布初始版本 2016-06-13 更新了非规则浮点数内容 之前在写某个迭代算法的时候,发现算法在某些情况下会出错,后来调试过程中发现,计算过程中,某些理论上大于0的数值会在迭代过程中变为0,最后计算过程中出现了除0,导致结果出错。这篇文章的初始目的就是为了阐明为何某些理论上大 阅读全文
posted @ 2016-04-26 22:32 暗海风 阅读(2541) 评论(0) 推荐(1) 编辑
摘要: 本文将介绍利用蒙特卡罗方法对误码率进行仿真的基本原理和基本原则。 1. 简介 误码率是通信系统性能评价的一个重要指标,在给定信道、编译码方式下,误码率是一个固定取值。少部分情况下,可以通过理论推导得到理论的误码率,但是在大多数情况下,理论误码率无法推得,这时往往考虑采用蒙特卡罗方法对误码率进行仿真。(误比特率、误码率同理) 蒙特卡罗方法是一种通过随机采样获得数值解的一... 阅读全文
posted @ 2016-04-25 20:16 暗海风 阅读(2661) 评论(0) 推荐(0) 编辑
摘要: 《算法导论》中有一节讲的是“(比较)排序算法时间的下界”,本文将论述同一个问题,思路略有差异。本文将从信息熵的角度论述排序算法时间复杂度的下界。若本文论述过程中有错误或是不足,还请各位指正。1. 问题归约 排序,涉及到被排序的序列和排序的方法。(比较)排序算法时间的下界对被排序的序列和排序方法做了以... 阅读全文
posted @ 2015-12-22 18:57 暗海风 阅读(4135) 评论(0) 推荐(2) 编辑
摘要: 除了输入输出端口,FPGA中还有另一种端口叫做inout端口。如果需要进行全双工通信,是需要两条信道的,也就是说需要使用两个FPGA管脚和外部器件连接。但是,有时候半双工通信就能满足我们的要求,理论上来说只需要一条信道就足够了,而FPGA上实现这一功能的管脚就是inout端口。管脚相连时,input... 阅读全文
posted @ 2015-10-30 22:40 暗海风 阅读(11803) 评论(0) 推荐(0) 编辑
摘要: 本文将结合具体实例阐述OFFSET IN的使用方法。注意:这是我第一次写OFFSET IN约束,本文仅供参考。阅读本文前需要了解时序收敛的基本概念,OFFSET IN和Period的相关知识,可先阅读时序收敛:基本概念,OFFSET约束(OFFSET IN 和OFFSET OUT)这两篇内容。系列目... 阅读全文
posted @ 2015-08-15 23:35 暗海风 阅读(1971) 评论(0) 推荐(0) 编辑
摘要: 说实话这个不太懂,没用过也没有遇到相应的情况(或者说我不知道)。大家可以更多的去参考特定约束FROM TO和MicroZed开发板笔记,第72部分:多周期约束等内容。 本文待修正 系列目录 时序收敛:基本概念 建立时间和保持时间(setup time 和 hold time) OFFSET约束(OFFSET IN 和OFFSET OUT) C... 阅读全文
posted @ 2015-08-14 11:20 暗海风 阅读(1448) 评论(0) 推荐(0) 编辑
摘要: 本文将介绍FPGA中和时钟有关的相关概念,阅读本文前需要对时序收敛的基本概念和建立、保持关系有一定了解,这些内容可以在时序收敛:基本概念,建立时间和保持时间(setup time 和 hold time)中找到。 系列目录 时序收敛:基本概念 建立时间和保持时间(setup time 和 hold time) OFFSET约束(OFFSET IN 和OF... 阅读全文
posted @ 2015-08-14 11:19 暗海风 阅读(11359) 评论(0) 推荐(0) 编辑
摘要: OFFSET 的意思是偏移。对于同步时序电路来说,数据和时钟之间的偏移量是必须要关注的。OFFSET IN和OUT分别对应的是输入和输出FPGA数据和时钟之间的偏移关系,本文将分析这一种关系。阅读本文前需要对时序收敛的基本概念和建立、保持关系有一定了解,这些内容可以在时序收敛:基本概念,建立时间和保 阅读全文
posted @ 2015-07-27 20:41 暗海风 阅读(7773) 评论(0) 推荐(0) 编辑