AI芯片学习小结4-谷歌TPU与脉动阵列

2023-11-05

AI芯片学习小结4-谷歌TPU与脉动阵列

文章:In-Datacenter Performance Analysis of a Tensor Processing Unit
时间:2017
Reference:深入理解Google TPU的脉动阵列架构,炼数成金_小数

终于迎来了鼎鼎大名的谷歌TPU。由于谷歌在其论文中没有对脉动阵列进行详细讲述,而有关脉动阵列及其具体实现的论文也五花八门,所以我主要参考了Reference中的大神博客并进行以下学习记录。

脉动阵列

脉动阵列的核心思想:

  1. 进行大量的数据复用,包括activation以及weight。其复用依赖于片上网络的性质,即PE单元可以向周围的PEs传递数据。
  2. 部署大规模的PE阵列。每个PE单元结构简单,一般只包含乘法器、加法器以及寄存器三部分,适合大量堆砌。

在这里插入图片描述
上图为脉动阵列的简单实现。可以看到,weight已经被预先固定在了PE的寄存器中,中间和不断向右累加便可得到最终的结果。
在这里插入图片描述
上图展示了如何使用脉动阵列来计算两个3*3矩阵的乘法。在经过一系列这样的过程后,最终得到的形式如下图所示。因为这些数据在阵列中传输的形式类似于波阵面在不断推进的过程,因此也与“脉动阵列”的名字相呼应。
在这里插入图片描述

谷歌TPU

TPU内部实现
上图是google论文中展示的TPU实现模块图。位于图片右上方的Matrix Multiply Unit为整个实现的核心计算部分。阵列中一共含有惊人的256*256,也就是64k个PE单元;每一个计算单元可以实现两个8bit有符号或无符号数的乘加操作。
在这里插入图片描述
上图为Matrix的具体结构图。由于TPU是基于脉动阵列架构实现的,因此其基本工作流程也与前面提到的脉动阵列的相同。weight被固定在了PE中,psum从上到下逐步累积,activation从左到右在PE之间进行传递。
由于二维卷积操作与矩阵乘法的工作方式不一样,因此在进行卷积前需要对ifmap和filter进行适当的变换使得对应位置的数值能够正确相乘。在TPU中这一变换操作具体由User Space drive负责实现,下面援引文章中的一段话来印证:

The User Space driver changes frequently. It sets up and controls TPU execution, reformats data into TPU order, translates API calls into TPU instructions, and turns them into an application binary. The

其具体的变换方式在参考博客的最后使用了一张图片来进行描述,但由于其变换方式较为复杂,且与我们所要学习记录的核心内容关系不大,所以我不再详细记录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AI芯片学习小结4-谷歌TPU与脉动阵列 的相关文章

  • Linux MQTT 物联网通信

    目录 MQTT 报文 MQTT 简介 MQTT 协议 上 MQTT 通信基本原理 连接MQTT 服务端 MQTT 客户端连接服务端的两个步骤 CONNECT 请求报文 CONNACK 回复报文 断开连接 发布消息 订阅主题与取消订阅主题 P
  • Qt源码分析之QObject

    在分析源码之前 我们先来介绍下Pimpl机制 Pimpl机制介绍 Pimpl private implementation 字面意思是私有实现 具体实现是将类的 假设类A 私有数据和函数放入一个单独的类 假设类Pimpl 中 然后在类A的头

随机推荐

  • dubbo——管理员指南

    原文地址 http blog csdn net wilsonke article details 39935801 2014 10 09 18 36 3613人阅读 评论 0 收藏 举报 目录 管理员指南 安装手册 示例提供者安装 示例消费
  • FFT (快速傅里叶变换)

    FFT FFT FFT的全称是 Fast Fourier Transform 即快速傅里叶变换 傅里叶变换是复变函数的重要内容 傅里叶变换分为离散和连续傅里叶变换 傅里叶变换实现从时域到频域的转换 是信号与系统重要的分析工具 连续傅里叶变换
  • 设备管理 USB ID

    发现个USB ID站点 对于做设备管理识别的小伙伴特别实用 http www linux usb org usb ids 附录 List of USB ID s Maintained by Stephen J Gowdy
  • pytorch低版本找到并安装torch_geometric对应版本

    一 找到官网的安装命令 不同版本的torch geometric 对应的安装命令不完全一致 因此我们需要首先找到所需torch geometric版本的正确安装命令 然后再去找对应的版本 目前torch geometric官网上只有pyto
  • Win10环境下CPU+GPU版本基于YOLOv5的行人检测研究(包括Anaconda安装超详细)

    安装Anaconda 直达链接Anaconda 点击get started 点击Download Anaconda Installers 点击Download 然后保存执行文件即可 开始安装Anaconda 双击执行文件 Anaconda3
  • Java中的“+“运算符

    前言 前面已经对各类运算符有了一个总的认知 运算符用处很多 一 关于Java中的 运算符 1 当 两边确定都是数字的话一定是进行加法运算 2 当 两边的数据是字符串 1个 一定会进行字符串的连接运算 并且连接过后运算结果一 定 还是一个字符
  • 关于IP分片的一篇小论文

    关键字 IP分片 MTU MSS 引言 分片是分组交换的思想体现 也是IP协议解决的两个主要问题之一 在IP协议中的分片算法主要解决不同物理网络最大传输单元 MTU 的不同造成的传输问题 但是分组在传输过程中不断地分片和重组会带来很大的工作
  • 使用C语言操作环境变量

    获取环境变量内容 char getenv char name 参数 name欲获取的环境变量名称 返回值 环境变量值 NULL表示没有找到环境变量 设置环境变量 int putenv char string 参数 string环境变量字符串
  • linuxsed替换字符串后保存_字符串方法——replace()

    1 字符串方法 replace str replace old new max 参数说明 Parameters old 被替换的字符串 new 新字符串 替换原来的old字符串 max 可选参数 替换不超过max次 例子 Example s
  • 什么是抖动?什么叫抖动

    什么是抖动 什么叫抖动 抖动的定义是 数字信号的各个有效瞬时对其当时的理想位置的短期性偏离 这意味着抖动是不希望有的数字信号的相位调制 相位偏离的频率称为抖动频率 与抖动有密切关系的第二个参数称为漂移 把它定义为 数字信号的各个有效瞬间相对
  • [NOI Online #3 入门组 T3]买表【二进制优化dp背包】

    题目链接 很可惜的一点就是 我正赛的时候好像把a和k看反了 于是一直想不到如何做 打了个暴力分 现在想想 暴力分也错了 因为a和k真的很关键 使得最后300变成200分 人生第一场OI就这样草草结束 或许这就是OI选手的刺激所在吧 得亏我不
  • DDR工作原理

    DDR SDRAM全称为Double Data Rate SDRAM 中文名为 双倍数据流SDRAM DDR SDRAM在原有的SDRAM的基础上改进而来 也正因为如此 DDR能够凭借着转产成本优势来打败昔日的对手RDRAM 成为当今的主流
  • csdn找到自己关注的人和关注自己的人-2021最新

    前言 csdn找到自己关注的人和关注自己的人 2021最新 入口 https my csdn net my follow 点进入以后是这样的 就是没办法查找具体某个人
  • JDK、IDEA等安装详解

    第一章 计算机基础知识 1 2 计算机简介 计算机俗称电脑 是第二次世界战争时 美国国防部利用它来进行弹道计算 第一台通用计算机叫做 ENIAC 当时计算机是一个庞然大物 用了18000个电子管 占地170平方米 重达30吨 耗电功率约15
  • nginx七层代理和四层转发的理解

    先来理解一下osi七层模型 应用层 应用层是ISO七层模型的最高层 它直接与用户和应用程序交互 提供用户与网络的接口 它包括各种应用协议 如HTTP FTP SMTP等 用于实现特定应用的功能和通信 表示层 表示层负责数据的格式转换 加密和
  • Introduction of moving block bootstrap (MBB)algorithm

    Because we can not use usual bootstrap sampling method to get subsamples from time series dataset then the MBB was propo
  • 软件测试人员的职业晋升之路

    关于软件测试行业的职业发展方向 在网络上总能看到各种各样的问题 有关注零基础能不能入行的 有关注25岁入行晚不晚的 还有关注35岁后的职业发展方向的 在此过程中 看到很多行业大佬分享了自己的工作经验 也给出了很多自己的建议 要想在测试行业有
  • Ubuntu18.04 安装 TensorFlow (GPU)

    重新在台式机上学习深度学习 Ubuntu18 04 Tensorflow gpu cuda8 0 cuDNN6 0 一 准备工作 有一些不是必需的 1 安装pip 打开终端输入命令 sudo apt get install python p
  • Netty实战(二)第一个Netty程序

    第一个Netty程序 一 环境准备 二 Netty 客户端 服务器概览 三 编写 Echo 服务器 3 1 ChannelHandler 和业务逻辑 3 2 引导服务器 四 编写 Echo 客户端 4 1 通过 ChannelHandler
  • AI芯片学习小结4-谷歌TPU与脉动阵列

    AI芯片学习小结4 谷歌TPU与脉动阵列 文章 In Datacenter Performance Analysis of a Tensor Processing Unit 时间 2017 Reference 深入理解Google TPU的