【动手学深度学习】(十三)深度学习硬件

一、CPU和GPU

在这里插入图片描述
提升CPU利用率

  • 在计算a+b之前,需要准备数据
    • 主内存->L3->L2->L1->寄存器(数据只有进入寄存器才可以参与运算)
  • 提升空间和时间的内存本地性
    • 时间:重要数据使得保持它们在缓存里
    • 空间:按序读写数据使得可以预读取

GPU
在这里插入图片描述
CPU vs GPU
在这里插入图片描述
提升GPU利用率

  • 并行
    • 使用数千个线程
  • 内存本地性
    • 缓存更小,构建更加简单
  • 少用控制语句
    [总结]:
  • CPU:用于处理通用计算。性能优化考虑数据读写效率和多线程。
  • GPU:使用更小的核核更多的内存带宽,适合能大规模并行的计算任务。

二、更多的芯片

1.DSP:数字信号处理

在这里插入图片描述

2.可编程阵列(FPGA)

在这里插入图片描述

3.AI ASIC

在这里插入图片描述
在这里插入图片描述

三、单机多卡并行

  • 一台机器可以安装多个GPU(1-16)
  • 在训练和预测时,我们将一个小批量计算切分到多个GPU上来达到加速目的
  • 常用切分方案有:
    • 数据并行
    • 模型并行
    • 通道并行(数据+模型并行)

数据并行vs模型并行

  • 数据并行:将小批量分成n块,每个GPU拿到完整参数计算一块数据的梯度
    • 通常性能比更好
  • 模型并行:将模型分成n块,每个GPU拿到一块模型计算它的前向和方向结果
    • 通常用于模型大到单GPU放不下

相关推荐

  1. 动手深度学习深度学习计算

    2023-12-14 23:10:05       43 阅读
  2. 动手深度学习——pandas

    2023-12-14 23:10:05       29 阅读
  3. 动手深度学习——tensor

    2023-12-14 23:10:05       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-14 23:10:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-14 23:10:05       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-14 23:10:05       82 阅读
  4. Python语言-面向对象

    2023-12-14 23:10:05       91 阅读

热门阅读

  1. A Hard Trip

    2023-12-14 23:10:05       50 阅读
  2. 【Docker 的基本使用】

    2023-12-14 23:10:05       50 阅读
  3. InitializingBean初始化--Spring容器管理

    2023-12-14 23:10:05       47 阅读
  4. vue 零散记录之全局安装包

    2023-12-14 23:10:05       56 阅读
  5. 函数的名称空间与作用域

    2023-12-14 23:10:05       60 阅读