Nvidia GPU的浮点计算能力(FP64/FP32/FP16)

转自:http://weibo.com/ttarticle/p/show?id=2309403987017473113077

​​其实说到浮点计算能力,首先得区分不同精度的浮点数,虽然Linpack测试里只关心双精度的浮点计算能力,但在其他领域,有时候反而会更加关注单精度甚至是半精度的浮点计算能力。

半精度、单精度、双精度这些概念是在IEEE 754标准里定义的,浮点计数是利用浮动小数点的方式使用不同长度的二进制来表示一个数字,与之对应的是定点数。同样的长度下浮点数能表达的数字范围相比定点数更大,但浮点数并不能精确表达所有实数,而只能采用更加接近的不同精度来表达。单精度的浮点数中采用4个字节也就是32位二进制来表达一个数字,双精度浮点数采用8个字节也就是64bits来表达,当然半精度浮点数也就是采用16bits了。因为采用不同位数的浮点数的表达精度不一样,所以造成的计算误差也不一样,对于需要处理的数字范围大而且需要精确计算的科学计算来说,就要求采用双精度浮点数,而对于常见的多媒体和图形处理计算,32位的单精度浮点计算已经足够了,对于要求精度更低的机器学习等一些应用来说,半精度16位浮点数就可以甚至8位浮点数就已经够用了。

CPU和GPU最大的不同在于内部计算单元数量的差异以及处理方式的不同,CPU内部的核心数较少而且设计上更倾向于顺序串行处理数据,GPU则因为只需要支持相对单一的数据类型和计算方式,所以计算单元较小但数量更多而且更倾向于并行处理数据。一个简单的比较是现在的Intel CPU最多也就支持24核但GPU则动不动就支持几千个核了。

CPU vs GPUCPU vs GPU

对于浮点计算来说,CPU可以同时支持不同精度的浮点运算,但在GPU里针对单精度和双精度就需要各自独立的计算单元,一般在GPU里支持单精度运算的Single Precision ALU称之为FP32 core或简称core,而把用作双精度运算的Double Precision ALU称之为DP unit或者FP64 core,在Nvidia不同架构不同型号的GPU之间,这两者数量的比例差异很大。

Nvidia GPU Architecture evolutionNvidia GPU Architecture evolution

在第三代的Kepler架构里,FP64单元和FP32单元的比例是1:3或者1:24

第四代的Maxwell架构里,这个比例下降到了只有1:32

第五代的Pascal架构里,这个比例又提高到了1:2,但低端型号里仍然保持为1:32

这种比例在这些GPU的架构图表现也非常明显,比如下面Tesla P100采用的GP100架构图中,用黄色标记的DP Unit和绿色的Core比例很明显就是1:2,所以P100的单精度性能和双精度性能也相差了一倍。

Nvidia Pascal P100 ArchitectureNvidia Pascal P100 Architecture

GPU的浮点计算理论峰值能力测试跟CPU的计算方式基本一样,

理论峰值 = GPU芯片数量*GPU Boost主频*核心数量*单个时钟周期内能处理的浮点计算次数,

只不过在GPU里单精度和双精度的浮点计算能力需要分开计算,以最新的Tesla P100为例:

双精度理论峰值 = FP64 Cores * GPU Boost Clock * 2 = 1792 *1.48GHz*2 = 5.3 TFlops

单精度理论峰值 = FP32 cores * GPU Boost Clock * 2 = 3584 * 1.58GHz * 2 =  10.6 TFlops

因为P100还支持在一个FP32里同时进行2次FP16的半精度浮点计算,所以对于半精度的理论峰值更是单精度浮点数计算能力的两倍也就是达到21.2TFlops 。

Nvidia的Tesla P100基本也代表了如今GPU的最强性能,双精度5.3TFlops的计算能力也确实能秒掉采用Intel最高端E7 v4 CPU的四路X86服务器了,虽然这个理论峰值计算里面采用的GPU核心频率是Boost后的主频,相比一般计算CPU理论峰值计算能力时采用的基本主频来说并不太公平,但即使去掉Boost后提升的11%性能,单个Tesla P100的浮点计算能力也还是超过当前最高端的4路E7 v4服务器的3TFlops 了。

Tesla P100是Tesla系列里面最新的产品,相比前两代采用Kepler架构的K40和Maxwell架构的M40两款产品来说,P100不仅在单精度浮点计算性能超过前两代产品,双精度浮点性能相比Kepler更有3倍多的提升,相比Maxwell就更是高到不知道哪里去了。这三者详细的参数对比可以看下表

K40 vs M40 vs P100K40 vs M40 vs P100

Nvidia的GPU产品主要分成3个系列产品,分别面向不同的应用类型和用户群体,这三个系列产品分别是:

1.主要面向3D游戏应用的GeForce系列,几个高端型号分别是GTX1080、Titan X和GTX980,分别采用最新的Pascal架构和Maxwell架构,因为面向游戏玩家,对双精度计算能力没有需求,所以双精度计算单元只有单精度计算单元的1/32,但同时也因为受众群体较大,出货量也大,单价相比采用相同架构的Tesla系列产品要便宜很多,也经常被用于机器学习

Nvidia GeForceNvidia GeForce

2.面向专业图形工作站应用的Quadro系列,主要是针对CAD、3DMaxs、Maya这一类的设计软件做过驱动层的优化,因为针对专业用户人群,出货量少,所以采用相同架构的Quadro售价比GeForce高出许多,也很少有人会拿它去用作别的用途

3.专用GPU加速计算的Tesla系列,Tesla本是第一代产品的架构名称,后来演变成了这个系列产品的名称了,最新的第五代架构名为Pascal,对应的产品型号就是前面提到的P100。而采用前两代架构Kepler和Maxwell的产品目前也还在销售,分别对应K系列和M系列的产品,目前市面上常见的也就是K40/K80、M4/M40/M60等几个型号。K系列更适合用作HPC科学计算,M系列则更适合机器学习用途。

另外Nvidia还有一个专门针对虚拟化环境应用的GRID GPU产品,目前只有K1和K2两个型号,同样采用Kepler架构,实现了GPU的硬件虚拟化,可以让多个用户共享使用同一张GPU卡,适用于对3D性能有要求的VDI或云环境下多租户的GPU加速计算场景。K1上集成了4颗入门级的Kepler GPU,支持的CUDA核心数量较少只有768核,但提供更大的总显存容量16GB,K2则集成了2颗高端的Kepler GPU,支持3072个CUDA核心数,显存容量虽然较少只有8GB但因为采用GDDR5相比K1的DDR3提供更高的带宽能力。

Nvidia GRID K1&K2Nvidia GRID K1&K2

以两者中性能更好的K2来看,使用了2颗Kepler GK104 的GPU芯片,每个GK104的GPU内含1536个FP32 CUDA Core和64个FP64  Units (24:1)

单精度浮点数 理论峰值 = 2 GPU * 1536 FP32 Core * 2 * 745MHz  = 4.58TFlops

双精度浮点数 理论峰值 = 2 GPU * 64 FP64 core * 2 * 745MHz = 0.19TFlops


  • 23
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
INT8、FP16FP32是不同的数据类型用于表示数字的精度和存储方式。 INT8是指八位整型数据类型,占用1个字节,用8位二进制表示一个数字,它是一种定点计算方式,适用于对整数进行运算,虽然精度较低,但数据量小、能耗低,计算速度相对更快,适合在移动终端进行AI计算。 FP16是指半精度浮点数数据类型,占用2个字节,用16位二进制表示一个数字,其中1位为符号位,5位为指数位,10位为有效数字位。与FP32相比,FP16的访存消耗仅为1/2,因此在一些GPU中可以加速计算速度,但也容易造成溢出。 FP32是指单精度浮点数数据类型,占用4个字节,用32位二进制表示一个数字,其中1位为符号位,8位为指数位,23位为尾数位。FP32精度相对较高,但相应地需要更多的存储空间和计算资源。 因此,INT8适用于对整数进行计算的场景,FP16适用于移动终端等资源受限的场景,而FP32适用于需要较高精度的计算场景。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [FP32FP16和INT8](https://blog.csdn.net/weixin_44942126/article/details/115014754)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [深度学习模型权重数值精度FP32,FP16,INT8数值类型区别](https://blog.csdn.net/baidu_39629638/article/details/121460896)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值