zoukankan      html  css  js  c++  java
  • TPU深入学习1


    CPU、GPU、TPU区别


    CPU

      CPU的最大好处是它的灵活性。采用冯·诺依曼架构。但是,由于CPU如此灵活,因此硬件在从软件读取下一条指令之前,并不总是知道下一步的计算。 对于每次计算,CPU必须将计算结果存储在CPU内部的内存中(所谓的寄存器或L1高速缓存)。 这种内存访问成为冯诺依曼的瓶颈。尽管神经网络的计算步骤可以预测,但是CPU的ALU每次计算都会访问内存,从而造成吞吐量巨大,限制了运算量。


    GPU

      为了获得比CPU更高的吞吐量,GPU使用一种简单的策略:处理器中包含数千个ALU.这种GPU架构在具有大规模并行性的应用程序(例如神经网络中的矩阵乘法)上运行良好。但是,GPU仍然是通用处理器,还是有冯·诺依曼瓶颈. 对于数千个ALU中的每个计算,GPU需要访问寄存器或共享内存以读取和存储中间计算结果.由于GPU在其数千个ALU上执行更多的并行计算,因此它也成比例地花费更多的精力访问内存,并且还增加了GPU用于复杂接线的占用空间。


    TPU

      Google设计TPU时,建立了特定于域的架构。这意味着,与其设计通用处理器,不如将其设计为专门用于神经网络工作负载的矩阵处理器。TPU可以以超快的速度处理神经网络的大量乘法和加法,同时消耗更少的功率并且占用的空间更小。关键因素是大幅减少了冯·诺依曼瓶颈。因为此处理器的主要任务是矩阵处理,所以TPU的硬件设计人员知道执行该操作的每个计算步骤。因此,他们能够放置数千个乘法器和加法器,并将它们直接彼此连接,以形成这些运算符的大型物理矩阵。这称为脉动阵列架构。对于Cloud TPU v2,有两个128 x 128的脉动阵列,在单个处理器中为16位浮点值聚合32,768个ALU。
      脉动阵列如何执行神经网络计算:
      1、TPU将参数从内存加载到乘法器和加法器矩阵中。
      2、TPU从内存加载数据。在执行每个乘法时,结果将被传递到下一个乘法器,同时求和。因此,输出将是数据和参数之间所有乘法结果的总和。在海量计算和数据传递的整个过程中,根本不需要内存访问
     这就是为什么TPU可以在神经网络计算上以低得多的功耗和较小的占用空间实现高计算吞吐量的原因。


    参考链接

    https://cloud.google.com/tpu/docs/beginners-guide动画很形象!!
    https://medium.com/sciforce/understanding-tensor-processing-units-10ff41f50e78

  • 相关阅读:
    Javascript异步数据的同步处理方法
    《Node.js In Action》笔记之流程控制
    《第一行代码》笔记
    【转向Javascript系列】深入理解Web Worker
    【转向Javascript系列】从setTimeout说事件循环模型
    以todomvc为例分析knockout、backbone和angularjs
    25个国内顶级技术开发团队Github
    配置Redis作为缓存(六种淘汰策略)
    JVM性能优化 初识JVM
    JVM性能优化垃圾回收算法详解
  • 原文地址:https://www.cnblogs.com/kyshan/p/14318878.html
Copyright © 2011-2022 走看看