0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

浅谈GPU: 衡量计算效能的正确姿势(2)

Linux阅码场 来源:面包板社区 作者:Linux阅码场 2021-04-16 11:12 次阅读

这次我们准备聊下决定系统计算性能的两大关键指标,1. 浮点运算能力(FLOPS), 2. 内存带宽(Memory Bandwidth)。

一· 为什么这两个指标很重要

目前无论是嵌入式系统,PC还是大型服务器都遵循了冯。诺依曼结构。

fe1778c8-9e22-11eb-8b86-12bb97331649.png

CPU密集型程序来说,执行时候系统的内部交互主要在处理器(包括控制器和运算器)和存储器之间展开,大概是如下图过程。

fe2a96c4-9e22-11eb-8b86-12bb97331649.jpg

所以CPU的处理能力以及访存的效率对程序的性能起到了关键作用。大家知道计算一个程序执行时间的公式如下(假设该程序是CPU Bound),

程序执行时间(time) = 程序指令数目(Intructions) * 指令的平均时钟数(CPI, Clock cycles/Instruction) * 时钟周期(Seconds/Clock cycle)

为支持计算所需的精度和广度,CPU/GPU ALU支持浮点运算,单精度甚至双精度都是必须的要求。这里我们引入FLOPS(floating point operations per second)的概念来表征CPU/GPU浮点运算能力,所以针对浮点计算密集型程序,把FLOPS套到上面公式,我们可以用浮点运算数目/FLOPS来估摸程序大概执行时间。

访存效率的重要性我们这里也可以再提一下,以GPU为例,无论是游戏还是深度学习,都有大量的内存读写数据量。比如graphics里,有三角面片模型装载,纹理采样,深度测试(depth test),Alpha混合,以及图像输出等等。深度学习训练的时候,巨大的训练集/测试集输入,迭代过程几十万,百万级别参数读写。如果访存成为瓶颈(Memory Bound),强大的计算能力也无从发挥。

二,如何知道FLOPS 和内存带宽

我们先看下如何得到两个指标的理论数值。

关于内存带宽,假设某款GPU,其显示内存的时钟频率为1546 MHZ,显存的位宽(Interface Width)为384 bit, 则其带宽的理论峰值计算如下,具体也可以参考https://en.wikipedia.org/wiki/Memory_bandwidth。

BW = 1546(clocks per second) * 384(memory interface width) * 2(DDR) / 8(In bytes) = 148GB/s

而GPU的理论FLOPS计算就要微妙很多,各个厂家对演算过程讳莫如深,一般不会公开,我们这里也不多着墨,大家参考厂家给出的数据罢了。ARM的网站写过一篇文章探讨FLOPS营销噱头一地鸡毛的状态,Flipping the FLOPS - how ARM measures GPU compute performance,搜来看看,可以起到心理预防的作用。

相比理论数值,对码农来说,我们更关心是我们程序运行的实际性能数值,这才是关系我们饭碗的要紧之处。假设一个程序的核心运算是如下SAXPY,恰当地部署到GPU或者多核CPU后,比如平均运行时间为1us,我们该如何计算实际访存带宽和FOPS?

int N = 1 《《 22;

void saxpy(float a, float *x, float *y){

for (int i = 0; i 《 n; ++i)

y[i] = a*x[i] + y[i];

}

我们可以看到每次迭代,有三次内存访问(x读一次,y读写各一次),而有两次浮点运算(乘加各一次)。所以实际BW和FOPS的计算如下,

BW = (3 * N * 4) / (1 / 1e9) = 120GB/s

FOPS = (2 * N) / (1 / 1e9) = 20GFLOPS

我们可以把实际数值和理论峰值比较下,确认运算瓶颈在何处,是memory bound还是cpu bound,然后进一步优化,关于这部分内容,我们以后介绍roofline模型的时候还会涉及。

三,ALU和访存的功耗水平

下图来自David A. Patterson的另一本著作《计算机体系结构:量化研究方法》,罗列45nm制程各种类型ALU和访存的功耗大小以及他们相对水平,可以看到32b的内存访问的功耗远超同样位宽大小的运算。

fe39f16e-9e22-11eb-8b86-12bb97331649.png

为什么我们要在这里留意功耗水平?移动设备由于电池供电,尺寸大小散热限制,对功耗异常敏感,功耗大小直接决定设备的使用价值。以后我们谈到移动GPU的设计的时候,可以了解如何在消除减少内存访问方面极尽所能。另外比特币矿场矿机,数据中心的服务器,其数目都是以万记,它们更是电老虎,每天的电力消耗才是运营的最大费用,会极大地影响了投资回报率,所以功耗水平有很重要的经济效果。最后目前全民倡导碳中和,绿色计算,身处产业链的我们,从硬件和软件角度,努力提升功耗水平,也有很大社会意义。
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10411

    浏览量

    206464
  • gpu
    gpu
    +关注

    关注

    27

    文章

    4402

    浏览量

    126562
  • ALU
    ALU
    +关注

    关注

    0

    文章

    32

    浏览量

    12996

原文标题:GPU: 衡量计算效能的正确姿势(2)

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    赋能产业互联网,高通量计算让世界更高效!

    随着互联网技术的迅猛发展,计算机的主要应用从以传统的科学与工程计算为主逐步演变为以数据处理为核心,以传统高性能计算机体系结构为核心技术的新型基础设施面临巨大挑战,高通量计算应运而生。中
    发表于 04-12 14:46 94次阅读
    赋能产业互联网,高通<b class='flag-5'>量计算</b>让世界更高效!

    怎么根据变压器容量计算出最大需量

    根据变压器容量来计算最大需量是一个重要的问题,尤其是在电力系统中。最大需量是指某一时间段内需求的最大电力负荷。 变压器容量是指变压器能够输出的最大功率。它通常以千伏安(kVA)为单位衡量。在计算最大
    的头像 发表于 03-24 10:16 1796次阅读

    量计算公式多少度电 电量和度数怎么换算

    量计算公式多少度电? 电量计算公式是通过电压和电流的乘积来计算的,单位为瓦特-小时(Wh)。公式为: 电量(Wh)= 电压(V) × 电流(A) × 使用时间(小时) 其中,电压是指电流通过的电器
    的头像 发表于 02-03 14:42 9838次阅读

    AMD将推新GPU效能媲美英伟达RTX 4080

    据悉,AMD正努力研制新品级GPU,性能堪比英伟达的RTX 4080,而售价却只有后者的一半。据多个在线社区反映,AMD即将发布的Radeon RX 8000系列GPU效能与NVIDIA几乎不相上下,定价却只是前者的一半。
    的头像 发表于 01-31 10:00 400次阅读

    LTM4620给fpga提供1.0V内核电源,4620输出电容量计算是否应该包含布局在fpga芯片附近的bulk电容?

    LTM4620给fpga提供1.0V内核电源,4620输出电容量计算是否应该包含布局在fpga芯片附近的bulk电容? 靠近FPGA布局的电容也比较大,比如470uF。但这些电容隔4620布局比较远,大于7cm。通过内电层铺铜连接。
    发表于 01-05 06:01

    【先楫HPM5361EVK开发板试用体验】性能测试基准---Dhrystone (3)

    1、Dhrystone介绍 Dhrystone是一种用于测量计算机性能的基准测试程序。它最初由Weicker和Emery编写于1984年,是一种用于衡量计算机处理器性能的标准测试
    发表于 12-20 22:14

    小型流量计正确安装方法

    正确安装小型流量计是确保其准确测量和长期稳定运行的关键步骤。以下是正确安装小型流量计的一些要点。
    的头像 发表于 12-19 15:44 352次阅读
    小型流<b class='flag-5'>量计</b><b class='flag-5'>正确</b>安装方法

    AD5933/AD5934阻抗测量不正确的问题怎么解决?

    本人在开发AD5933/AD5934阻抗测试板时遇到了以下问题: 1、按参考历程对控制寄存器写命令,则初始化后的输出波形峰峰值无法按命令改变,测量计算后的阻值会随实际值增大而增大,但不
    发表于 12-15 07:02

    采用AD5933进行阻抗测量,测量计算后的阻值会随实际值增大而增大的原因?

    您好,最近采用AD5933进行阻抗测量,电路如下图: 编程控制Vout 为2Vp-p,30kHz;PGA=1;校准电阻10k 测量计算后的阻值会随实际值增大而增大,但不成比例;具体数值如下: 请问出现这种问题的原因是什么?
    发表于 12-12 07:38

    铜排载流量计算方法

    铜排是工业中常用的一种导电材料,通常用于电路板、电缆和电器设备中。在设计和使用铜排的过程中,需要准确计算其载流量,以确保其正常工作和安全可靠。本文将详细介绍铜排载流量的计算方法。 铜排载流量计算
    的头像 发表于 12-08 14:06 2876次阅读

    高效稳定管理电源的正确姿势”!

    高效稳定管理电源的正确姿势”!
    的头像 发表于 11-23 09:04 200次阅读
    高效稳定管理电源的<b class='flag-5'>正确</b>“<b class='flag-5'>姿势</b>”!

    TI电量计算法流程学习笔记

    在了解电量计算法之前,我们需要先了解一些电池、电量计领域常见专有名词的缩写定义。
    的头像 发表于 10-16 16:23 1690次阅读
    TI电<b class='flag-5'>量计算</b>法流程学习笔记

    咖啡机流量计正确安装方法

    咖啡机流量计是一种用于测量咖啡机中水流量的设备,正确的安装方法可以确保咖啡机的正常运行和准确的水流量测量。 首先,选择合适的位置安装流量计。通常,流量计应安装在咖啡机的水管上,确保水流
    发表于 08-11 14:35

    AI芯片的应用场景和发展趋势

    AI芯片也被称为AI加速器或计算卡,即专门用于处理人工智能应用中的大量计算任务的模块(其他非计算任务仍由CPU负责)。当前,AI芯片主要分为 GPU 、FPGA 、ASIC。
    的头像 发表于 08-06 16:18 963次阅读

    AI芯片的优势和主要挑战 AI芯片和存储芯片的区别

      AI芯片也被称为AI加速器或计算卡,即专门用于处理人工智能应用中的大量计算任务的模块(其他非计算任务仍由CPU负责)。当前,AI芯片主要分为 GPU 、FPGA 、ASIC。
    的头像 发表于 08-03 17:19 2087次阅读