算力相关的概念和常见问题

1. 算力的概念

        算力顾名思义是“计算能力”的缩写,指的是IT设备的计算能力

        工信部数据,截至 2023 年 6 月底,全国在用数据中心机架总规模超过 760 万标准机架,算力总规模达到 197 百亿亿次 / 秒(即 197EFLOPS=197*1000P,1P= 每秒 1000 万亿次计算速度)。10 月初,工信部等六部门联合印发《算力基础设施高质量发展行动计划》,提出到 2025 年,计算力方面,算力规模超过300EFLOPS,智能算力占比达到 35% ,东西部算力平衡协调发展。

2. 算力的分类和单位

  • 基础算力:以 CPU 的计算能力为主,适用于各个领域的计算
  • 智能算力:以 GPU 、FPGA 、ASIC 芯片等输出的计算能力为主,侧重人工智能领域
  • 超算算力:以超算( HPC )集群输出的计算能力为主,科研、国防、高端制造等领域

        上述算力分类是从狭义的角度进行的统计,目前和信息技术有关的一切,其实都可以笼统称为算力领域,算力及服务的时代,除了狭义上的算力,还包括存储的存力、网络的传输能力、算法的能力等等。

        算力的单位通常采用 FLOPS (FloatingPoint Operations Per Second )表示每秒钟能够完成的浮点运算或指令数,例如一台计算机每秒钟可以完成10 亿次浮点运算,那么它的 FLOPS值就是 10 GFLOPS。

除了 FLOPS 还有其他多种不同的衡量方法。主要有如下:

  • MIPS(每秒钟执行的百万指令数)
  • DMIPS(Dhrystone 每秒钟执行的百万指令数)
  • OPS(每秒操作次数,Operations Per Second)
  • Hash/s(每秒哈希运算次数, Hash Per Second )

3. 怎么理解“浮点运算”

        浮点运算是指计算机处理带“小数位”的加减乘除运算

        例如:1.1加2.2就是属于浮点运算的范畴,我们人脑很好处理,直接就得出 3.3的结果了,但是对计算机来说,是一个非常复杂的过程。因为计算机的能读懂语言都是以 0 和 1构成的二进制数字进行运算的。比如在基础的二进制里,1就是 1,2是“10”,3 是“11”,这也带来一个问题:计算机能够处理的数字只有整数。解决这个问题的办法很简单:0.1 可以看成是 1 除以 10 的结果,我们想让计算机计算一个带小数点的数字,只要告诉CPU这是一个被1后面加了多少个 0 整除的整数就行。因此,计算机在处理小数点的时候,就多了好几个运算步骤,浮点运算的速度也就成了衡量计算机性能的标准。

4. 算力的计算方式

CPU 算力计算公式:

        Flops=【CPU核数】*【单核主频】*【CPU单个周期浮点计算能力】

以 6348 CPU 为例,支持 AVX512 指令集,且FMA系数 =2 ,所以 CPU 每周期算力值为:

  • CPU 单周期双精度浮点计算能力 = 2 ( FMA 数量)*2 (同时加法和乘法) * 512 / 64 = 32
  • CPU 单周期单精度浮点计算能力 = 2 ( FMA 数量)*2 (同时加法和乘法) * 512 / 32 = 64
  • 6348 双精算力 = 28 x 2.6(10^9)x(32)/(10^12)= 2.3 Tflops
  • 6348 单精算力 = 28 x 2.6(10^9)x(64)/(10^12)= 4.6 Tflops

GPU 算力计算公式:

A100 的核心参数:

  • CUDA核心数: 6912 个
  • 加速频率:1.41 GHz
  • GPU 每核心单个周期浮点计算系数: 2

A100 的标准算力(FP32单精)= 6912 x 1.41 x 2 = 19491.84 Gflots = 19.5 Tflops 双精算力 = 19.5 Tflops / 2 = 9.7 Tflops

5. 常见的不同精度浮点型数据格式

        最早在科学计算 HPC 领域,FLOPS通常指双精度浮点数( FP64 )。现在也被用于 AI 领域,但通常指的是其他精度( FP32/FP16/BF16/INT8等类型),同时还引入了一些新的浮点数格式。

  • FP64:双精度占用 64位空间,通常用于大规模科学计算、工程计算等需要高精度计算的算法
  • FP32:单精度占用 32位空间。与双精度浮点数相比,存储空间较小但精度较低,部分科学计算和工程计算也可以使用 FP32
  • FP16:半精度浮点数占用 16位空间。存储空间更小但精度进一步降低,通常用于模型训练过程中参数和梯度计算
  • BF16:用于半精度矩阵乘法计算的浮点数格式,占用 16位存储空间。相对于FP16,在保持存储空间相同的情况下能够提高运算精度和效率
  • TF32:TensorFLoat-32 ,是 NVIDIA 定义的使用 TensorCore 的中间计算格式
  • INT8:8 位整数,用于量化神经网络的计算,由于存储和计算都相对于浮点数更加高效,在低功耗、嵌入式系统和边缘设备等领域有着广泛的应用。用TOPS(Tera Operations Per Second,每秒处理的万亿级别的操作数)作为计算性能的单位。

猜你喜欢

转载自blog.csdn.net/daydayup858/article/details/141165509