详解GPU的内存带宽与CPU的不同

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解GPU的内存带宽与CPU的不同相关的知识,希望对你有一定的参考价值。

参考技术A 在先前的文章中我们谈到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)等等来优化内存带宽。

《从入门到精通云服务器》-3

从上期的内容中,我们知道云服务器有灵活扩展,满足需求的独特优势。那么企业如何根据自己的业务去更好地配置与升级云服务器呢?下面我们将从CPU、内存 、带宽 、线路与操作系统展开讨论。

  CPU + 内存 + 带宽篇

  按公司不同的发展阶段,采用不同的CPU、内存、带宽:

  公司建站初期,正处于初始阶段,并发访问量小。适合选择省钱适用的经济型配置, 可以从1核 CPU + 1G内存 + 2M带宽起步。当然了,即便都是建站初期,网站类型不同,配置也需适当升级。若是普通的网站,比如文字网站,图片网站,论坛等,占用的带宽非常 小,5000的访问量使用2M的带宽已足够。如果是视频,下载等为主的网站,就算只有500个人同时在线,都需要占用10M以上的带宽。

  发展阶段,公司用户数增长,并发提高,这里推荐选用2核 CPU + 2G内存 + 3M带宽。此配置适用于流量适中的网站应用,或间断开放环境,代码存储库等 。当用户达到同时在线10000人时,建议升级到4核CPU,4G内存。

  成熟阶段,企业也变得场景多样,需求多样。采用配置4核CPU + 4G内存 + 4M带宽已足够,其计算能力可满足90%云计算使用者需求。并适合于企业运营活动、并行计算应用、普通数据处理服务等。

  稳定阶段,企业更加追求稳定的性能,力求在生意场上稳中求胜。其应用场景对计算性能要求也变得很高,采用8核CPU + 8G 内存 + 5M带宽的高配将适合目前的业务需求,如大规模企业运营活动、批量处理、分布式分析、游戏APP等。

  单/双/BGP多线

  单/双/BGP多线:

  线路的选择对于企业来说也非常重要。如果只是针对于本地用户,那就只用选择单线路的服务器。

  双线服务器的优势一般在于双IP,并且对于一个城市来说,宽带有电信、网通不同的。以大连这个城市来举例,虽然处于北方,但是电信的用户也十分多,所以这个时候果断选择双线可以更好实现用户体验。

  BGP线路是目前为止的最优线路,它使网络具有很强的扩展性, 可以将IDC网络与其他运营商互联,实现单IP多线路,做到所有互联运营商的用户访问都很快。这又是双IP双线比不上的。

  操作系统篇

  Windows系统:

  window系统中常用的有Server 2003 以及Server 2008 R2这两大类操作系统,其中又分为了32位和64位。

  1、是选32位还是选64位?

  32位系统相比64位系统,最主要的限制体现在内存的大小上。因为32位本身的限制,其最大只可支持到4GB内存,如果公司网站要使用高于4G的内存或者以后有扩充内存寻到4G以上的打算,可以使用64位操作系统。

  2、是选2003还是选2008?

  对于windows来说,建议是选择版本越高的越好。相对来说新版本漏洞相对来说更少,而且会提供更多的功能以及更方便的控制台。但是考虑到企业的云服务器配置不同,在此给出几种选择:

  配置低于2核 2G内存:server2003

  配置2核4G内存: server 2003 或者 server 2008 R2 不带数据库

  配置高于2核 8G内存:serever 2008 R2

  Linux系统:

  Linux按照大类来分,具体分类为Debian,Ubuntu,CentOS

  Debian用的deb包,使用APT包管理系统。同时Debian提供了大多数软件比较新的版本,并且提供了更多的软件包(相对于原版Red Hat)。Debian的优点在于更新迅速,软件包完善(Ubuntu尤其),操作便利。缺点是部分时候稳定性欠佳,跟进最新软件有可能存在Bug。 Debian就给了一个版本,这里就不多说什么了。

  Ubuntu是基于Debian所开发,可以简单地认为Ubuntu是Debian的功能加强版。与Debian相比,Ubuntu提供了更人 性化系统配置,更强大的系统操作以及比Debian更激进的软件更新。Ubuntu与Debian比较,可以认为Debian更趋向于保守一 些,Ubuntu对新手友好度高,上手更容易。 用过Ubuntu的都会体会到它的易用,反之如果用过Ubuntu再换到别的系统,都会觉得不适应,Ubuntu会很方便。

  CentOS是Red Hat的开源版本。一般在Red Hat更新之后,CentOS会把代码中含有Red Hat专利的部分去掉,同时Red Hat中包含的种种服务器设置工具也一起干掉,然后重新编译就是CentOS。从某种意义上说,CentOS几乎可以完完全全看成是Red Hat,这两个版本的rpm包都是可以通用的。Red Hat系的最大特点就是稳定。因为CentOS需要在Red Hat更新后才能更新,所以一般补丁更新速度要落后于Red Hat,当然这个对大多数人来说等一段时间不是什么大问题。CentOS秉承Red Hat良好的衣钵,也有一流的稳定性,这点也是Debian所无法比拟的。这里建议选择CentOS 6.4版本,会带来了更多的新特性以及更多的新功能。

以上是关于详解GPU的内存带宽与CPU的不同的主要内容,如果未能解决你的问题,请参考以下文章

再谈GPU的内存带宽

再谈GPU的内存带宽

阿里云服务器ECS计算型c7实例CPU带宽网络收发包及云盘IOPS性能详解!

详解GPU虚拟化技术

nvidia-smi详解

详解Linux系统内存知识及调优方案