讲解一下GPU的内存带宽与CPU的不同

在先前的文章中我们谈到GPU相比CPU有更大的内存带宽,此言不虚,这也是众核GPU有源源不断数据弹药供给,能够发挥强大算力的主要原因。如下表所示(GDDR和HBM都是GPU的显存规格),基本上GPU的内存带宽要比CPU多一个数量级。但是考虑到GPU运算核心的数量,平均下来显存带宽真的足够富裕吗?参考资料1的《Memory bandwidth》文章提供了很有趣的视角,我们在这里介绍下。MOS 6502发布于1975年,是微型计算机发展史上非常重要的一块芯片。6502一般运行在1M时钟频率,每个时钟可以访问1Byte内存数据,6502的一条指令需要花费3~5个时钟,所以平均下来每条指令大概可以获得4B内存数据。与此相对照,Intel的Core i7-7700K是一款目前比较主流的桌面CPU,运行频率4.2G,内存带宽大概50GB/s。i7-7700K一共有4个处理核心,所以每个核心大概可以均摊到12.5GB/s的内存带宽,也就是每个时钟可以访问约3B的内存数据。该CPU的IPC(Instruction Per Clock)为1,极优化的代码可以达到的IPC为3,按此计,每条指令可得1B的内存数据,跟老前辈6502相比,已经落后不少。更进一步,现代CPU支持256位长度的SIMD指令,每个时钟最多执行3条指令,类比GPU,我们以32位为一个通道作为单独执行线程,这样每个时钟我们一共有24条指令执行,所以每条指令可以访问0.125B内存数据或者说每8条指令得到1B内存数据。我们再回过头来看看GPU的情形。以NVidia GeForce GTX 1080Ti为例,内存带宽484GB/s,处理单元工作频率为1.48G,所以对整个GPU来说,每个时钟大概可以访问327B内存数据。这个GPU一共有28个SM(类似CPU的处理核心),每个SM有128个SP,所以总共有3584个SP(类似先前SIMD32位通道)。这样每个SM一个时钟大概可以访问11.7B的内存数据,平均到128个SP,一个SP一个时钟得到0.09B数据,换个好听的说法就是每11条指令可以得到1B内存数据,比CPU的指标还恶劣。需要再次重申的是,因为设计目标的问题,CPU其实更关注访存延迟指标,所以相形之下,内存带宽的压力对GPU更为显著。这也是为什么我们先前说过的GPU也开始配置多级Cache的原因,除了改善访存延迟,也可以降低内存带宽压力。另外我们在《GPU历史之二三事》里也提到Nvidia和AMD都开始拥抱移动GPU常用的TBR(Tile Based Rendering)的绘制技术,内存带宽的压力也应该是重要的驱动因素。而作为软件人员,在设计算法的时候,我们要重视算法的运算强度(见《Roofline模型初步》),要充分利用片上内存包括硬件Cache和软件Cache(Shared Memory),以及注意内存的合并访问(Memory Coalescing)等等来优化内存带宽。

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/6478.html

(0)
晴川运维晴川运维
上一篇 2025年6月8日
下一篇 2025年6月8日

相关推荐

  • 如何使用 Linux anacron 命令

    与其手动执行重复性的任务,不如让 linux 为你做。 在 2021 年,人们有更多的理由喜欢 Linux。在这个系列中,我将分享使用 Linux 的 21 个不同理由。自动化是使…

    Linux系统 2025年6月8日
  • 面向系统管理员的网络管理指南

    一个使管理服务器和网络更轻松的 linux 工具和命令的参考列表。 如果你是一位系统管理员,那么你的日常工作应该包括管理服务器和数据中心的网络。以下的 Linux 实用工具和命令 …

    Linux系统 2025年6月8日
  • Python中非常重要的5个特性

    Python 是近十年来兴起的编程语言,并且被证明是一种非常强大的语言。我用 Python 构建了很多应用程序,从交互式地图到区块链。 Python 是近十年来兴起的编程语言,并且…

    Linux系统 2025年6月14日
  • Linux常用命令mzip命令具体使用方法

    Linux mzip命令是Zip/Jaz磁盘驱动器控制指令。 mzip为mtools工具指令,可设置Zip或Jaz磁盘驱动区的保护模式以及执行退出磁盘的动作。 语法 mzip&nb…

    Linux系统 2025年6月8日
  • Linux下部署VPS

    VPS技术,将一台服务器分割成多个虚拟专享服务器的优质服务。实现VPS的技术分为容器技术,和虚拟化技术 。在容器或虚拟机中,每个VPS都可选配独立公网IP地址、独立操作系统、实现不…

    Linux系统 2025年6月13日
  • Linux下下配置svn的https访问

    Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统,Subversion 在 2000 年由 CollabNet Inc 开发,现在发展成为 …

    Linux系统 2025年6月20日
  • 详解HTTPS

    HTTPS其实是有两部分组成:HTTP SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后…

    Linux系统 2025年7月8日
  • RHEL7 or CentOS7重设系统密码

    我们有时会忘记linux系统的root密码,有的人不会重置密码只能重置系统了,本篇文章重点为大家讲解一下RHEL7 or CentOS7重设系统密码具体方法。 介绍 目的 在 RH…

    Linux系统 2025年6月8日
  • 详解服务器负载

    平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load、cpu、mem、qps、rt等。每个指标都有其独特的意义,很多时候在线上出现问题时,往往会伴随着某些指标的异常。…

    Linux系统 2025年6月8日
  • 在Django中使用ElasticSearch

    Elasticsearch可以使我们快速,近乎实时地存储,搜索和分析大量数据,并在几毫秒内给出答复。之所以能够获得快速的搜索响应,是因为它可以直接搜索索引,而不是直接搜索文本。 什…

    Linux系统 2025年6月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注