论文解析——异构多芯粒神经网络加速器
作者
朱郭益, 马胜,张春元, 王波(国防科技大学计算机学院)
摘要
随着神经网络技术的快速发展, 出于安全性等方面考虑, 大量边缘计算设备被应用于智能计算领域。首先,设计了可应用于边缘计算的异构多芯粒神经网络加速器其基本结构及部件组成. 其次, 通过预计算异构芯粒上的计算负载, 将计算任务在神经网络通道上进行划分, 不断加入新的任务, 逐芯粒测试并进行迭代, 选取异构芯粒组合以构建神经网络加速器. 最后, 分别在抽样构造的测试神经网络、MobileNet 以及 ShuffleNet 上使用这种粗粒度优化的方法构建了异构多芯粒神经网络加速器, 并测试了其能耗与性能表现. 实验结果表明, 这种异构的设计方法可以在控制能耗同时, 分别取得 7.43, 2.30 和 5.60 的加速比。
正文
现有神经网络加速器的弊端
部件耦合程度高导致设计制造成本高
使用单一的芯粒,未考虑多样性
芯粒技术在神经网络加速器中的应用优势
设计复用性强
制造不同计算性能需求的 CPU, 仅需设计一次计算芯粒; 因此在保持整体架构不变的条件下, 考虑通过在单个芯片上集成数量不同的计算芯粒, 实现多种性能的芯片制造。
加速器的硬件和数据流的关系
现有的神经网络加速器的主要层次结构为“DRAM-全局缓存-计算单元”,如图所示:

权重固定数据流
同一组权重会与多组输入的特征图进行计算, 权重在神经网络的计算过程中存在复用的机会。
该类型加速器在计算中先把权重放入计算单元的片上存储中进行存储, 再通过不断地更换输入特征图和输出的部分和完成神经网络的计算。例如NVIDIA的NVDLA。
输出固定数据流
输出固定数据流的神经网络加速器在片上寄存器中存放每个周期计算完成的部分和。 通过在计算过程中不断地更换计算时的输入数据与权重数据, 将结果累加到之前的部分和中, 最后完成输出数据的计算与数据的换入/换出操作。 例如Google 公司的 TPU。
行固定数据流
由于卷积运算中可以将高维的卷积操作拆分为一维的行卷积操作, 通过在依网格排布的计算单元中横向广播权重、斜向广播输入特征图, 在计算单元中实现输入特征图中一行与权重中一行的乘累加操作, 再在纵向进行一维卷积部分和的累加操作, 得到单层卷积计算的输出结果。例如 MIT 的 Eyeriss。
本文设计的神经网络加速器
异构多芯粒神经网络加速器的组成部分主要为 I/O 芯粒模块、控制单元以及计算芯粒阵列。

各类芯粒功能
IO芯粒
I/O 芯粒主要负责控制单元的信号传输以及计算芯粒阵列与 DRAM 间的数据交换。主要功能是传输数据信号至邻近的计算芯粒, 传输外部的控制信号至控制模块, 接收控制单元的控制信号, 并向外部设备传出计算完成的数据与设备中断信号。
计算芯粒
通过mesh网络互联。该阵列中的每一个芯粒单元均类似于传统的神经网络加速器, 每个芯粒拥有自己的片上缓存与片上计算单元, 可以异步执行分配的计算任务, 计算任务的数据包通过片上网络进行转发, 控制信号则由控制单元通过一对多的方式轮询与发送。
计算芯粒接口内联标准化
单个计算芯粒的外部连接接口均需要划分为接收块、发送块、时钟块与异步块, 并采用相同大小的接口设计。
每个计算芯粒通过异步块查询相邻的计算芯粒是否忙碌,从而判断是否接受数据
使用AIB作为芯粒间的接口
参考文献
[9] Shao Y S, Cemons J, Venkatesan R, et al. Simba: scaling deep-learning inference with chiplet-based architecture[J]. Communications of the ACM, 2021, 64(6): 107-116
[18] Wade M, Anderson E, Ardalan S, et al. TeraPHY: a chiplet technology for low-power, high-bandwidth in-package optical
I/O[J]. IEEE Micro, 2020, 40(2): 63-71
相关文章:
论文解析——异构多芯粒神经网络加速器
作者 朱郭益, 马胜,张春元, 王波(国防科技大学计算机学院) 摘要 随着神经网络技术的快速发展, 出于安全性等方面考虑, 大量边缘计算设备被应用于智能计算领域。首先,设计了可应用于边缘计算的异构多芯粒神经网络加速器其基本结构…...
MyBatisPlus(十六)逻辑删除
说明 实际生产中的数据,一般不采用物理删除,而采用逻辑删除,也就是将一条记录的状态改为已删除。 逻辑删除,本质上是更新操作。 MyBatis Plus 框架,提供了逻辑删除功能。在配置了逻辑删除后,增删改查和统…...
基于黏菌优化的BP神经网络(分类应用) - 附代码
基于黏菌优化的BP神经网络(分类应用) - 附代码 文章目录 基于黏菌优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.黏菌优化BP神经网络3.1 BP神经网络参数设置3.2 黏菌算法应用 4.测试结果:5.M…...
C语言基础语法复习08-位域bit-fields
在c2011 iso文档中,位域与struct、union是一起定义的: Structure and union specifiers Syntaxstruct-or-union-specifier:struct-or-union identifier opt { struct-declaration-list }struct-or-union identifierstruct-or-union:structunionstruct-d…...
3.2.OpenCV技能树--二值图像处理--图像腐蚀与膨胀
文章目录 1.文章内容来源2.图像膨胀处理2.1.图像膨胀原理简介2.2.图像膨胀核心代码2.3.图像膨胀效果展示 3.图像腐蚀处理3.1.图像腐蚀原理简介3.2.图像腐蚀核心代码3.3.图像腐蚀效果展示 4.易错点总结与反思 1.文章内容来源 1.题目来源:https://edu.csdn.net/skill/practice/o…...
基于FPGA的数字时钟系统设计
在FPGA的学习中,数字时钟是一个比较基础的实验案例,通过该实验可以更好的锻炼初学者的框架设计能力以及逻辑思维能力,从而打好坚实的基本功,接下来就开始我们的学习吧! 1.数码管介绍 数码管通俗理解就是将8个LED(包含…...
linux centos Python + Selenium+Chrome自动化测试环境搭建?
在 CentOS 系统上搭建 Python Selenium Chrome 自动化测试环境,需要执行以下步骤: 1、安装 Python CentOS 7 自带的 Python 版本较老,建议使用 EPEL 库或源码安装 Python 3。例如,使用 EPEL 库安装 Python 3: sud…...
mysql面试题20:有哪些合适的分布式主键方案
该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:有哪些合适的分布式主键方案? UUID:UUID通常是由一个二进制的128位整数表示,可以保证全局的唯一性。在Java中,可以通过UUID类生成一个UUID。例…...
git的基础操作
https://blog.csdn.net/a18307096730/article/details/124586216?spm1001.2014.3001.5502 1:使用场景 SVN,如果服务器里面的东西坏掉了,那么就全线崩盘了。 1:基本配置 git config --global user.name “luka” (自己的名字就行) git co…...
lua 中文字符的判断简介
一般在工作中会遇到中文字符的判断、截断、打码等需求,之前一直没有总结,虽然网上资料也多,今天在这里简单的总结一下。 1 .UTF-8简单描述 UTF-8 是 Unicode 的实现方式之一,其对应关系(编码规则)如下表所…...
SSM-XML整合
SSM-XML整合 核心配置文件 maven坐标 <dependencies><!--数据库驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.27</version></dependency><!--数据…...
线性代数小例子
这样做有什么问题呢: A 2 A > A ( A − E ) 0 > A E A 0 A^2 A > A(A - E) 0> A E \quad A 0 A2A>A(A−E)0>AEA0 上述做法是错误的,这是因为两个矩阵的乘积结果为0,并不能说明这两个矩阵就是0,即上述…...
ASP.NET Core 开发 Web API
2. Web Api 的创建与Http类型的介绍 2.1 ASP.Net Core Web API项目的创建 1.创建ASP.NET Core Web API项目 从“文件”菜单中选择“新建”“项目”。 在搜索框中输入“Web API”。 选择“ASP.NET Core Web API”模板,然后选择“下一步”。 在“配置新项目”对话框中…...
QImage函数setAlphaChannel
最近使用QImage的函数setAlphaChannel时遇到了一个坑,花了不少时间才弄清楚:在使用这个函数后,图像格式都会变成QImage::Format_ARGB32_Premultiplied。 先看下setAlphaChannel在帮助文档的说明: void QImage::setAlphaChannel(…...
区块链、隐私计算、联邦学习、人工智能的关联
目录 前言 1.区块链 2.隐私计算 3.联邦学习(隐私计算技术) 4.区块链和联邦学习 5.区块链和人工智能 展望 参考文献 前言 区块链公开透明,但也需要隐私,人工智能强大,但也需要限制。当前我们需要的是一个在保证…...
Unity可视化Shader工具ASE介绍——4、ASE的自定义模板使用
大家好,我是阿赵。 继续介绍Unity可视化Shader编辑工具ASE。之前的文章介绍了在ASE里面可以选择不同的Shader类型。这一篇来继续探讨一下,这些Shader类型究竟是什么。 一、所谓的Shader类型是什么 选择不同的Shader类型,会出现不同的选项…...
FastAPI学习-22.response 异常处理 HTTPException
前言 某些情况下,需要向客户端返回错误提示。 这里所谓的客户端包括前端浏览器、其他应用程序、物联网设备等。 需要向客户端返回错误提示的场景主要如下: 客户端没有执行操作的权限客户端没有访问资源的权限客户端要访问的项目不存在等等 … 遇到这些…...
75.颜色分类
原地排序:空间复杂度为1 class Solution { public:void sortColors(vector<int>& nums) {if(0){//法一:单指针两个遍历int nnums.size();int ptr0;for(int i0;i<n;i){if(nums[i]0){swap(nums[i],nums[ptr]);ptr;}}for(int iptr;i<n;i){…...
浅谈分散式存储项目MEMO
Memo本质上是互联网项目,应用了一些区块链技术而已,或者叫做包了层区块链皮的互联网项目。 最开始对标Filcoin,后来发现Filcoin也有问题,分布式存储解决方案并不完美,抑或者是自己团队的研发能力无法与IPFS团队PK&…...
ansible角色运行指定角色路径
众所周知ansible默认角色路径为:/usr/share/ansible/roles目录 而用户默认安装角色路径为$HOME/.ansible/roles/目录。 如果我们不想修改ansible配置文件又想在任意目录基于运行角色部署服务,需要在ansible剧本中 指定角色路径。 分享剧本如下&#x…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
