一、算力
“算力”(Computing Power)通常是指计算机或计算系统执行计算任务的能力。它是衡量系统处理数据、运行算法以及执行计算任务效率的重要指标。根据上下文,算力可以在以下几种场景中具体化:
1. 单机算力
- CPU算力:中央处理器的计算能力,通常用核心数量(cores)、时钟频率(GHz)、以及每秒浮点运算次数(FLOPS)等指标衡量。
- GPU算力:图形处理单元用于并行处理的能力,尤其是在深度学习和高性能计算领域中,用CUDA核心数量、显存大小及带宽等来衡量。
- ASIC/FPGA:为特定任务优化的硬件,比如AI芯片和比特币挖矿设备。
2. 集群算力
- 数据中心或高性能计算(HPC)集群的整体计算能力。其算力可以通过每秒浮点运算次数(如Teraflops、Petaflops)来描述。
- 包括分布式计算资源的集成,例如云计算平台(如AWS、Azure、Google Cloud)。
3. 深度学习算力
- AI和机器学习训练中常用算力指标。大模型训练任务通常用GPU集群(如NVIDIA A100)的规模来描述。
- 算力需求可能包括参数量(parameters)、数据集规模和训练时间。
4. 边缘算力
- 边缘设备(如嵌入式系统、智能传感器)的计算能力,通常能效比(算力/功耗)是关键指标。
5. 单位和指标
- FLOPS(每秒浮点运算次数):通常用于衡量CPU/GPU的性能。
- TOPS(每秒万亿次运算):在AI硬件中较常用。
- 能耗比(Perf/Watt):表示计算能力与功耗的关系。
在你的工作领域(如LiDAR、雷达、计算机视觉等),算力需求可能用于:
- 处理实时数据流(如点云、视频流)。
- 实现复杂的AI推理任务(如目标检测、轨道识别)。
- 优化高精度地图的构建和更新流程。
二、CPU算力
CPU算力通常用浮点运算能力(FLOPS, Floating Point Operations Per Second)来衡量,尤其在科学计算、高性能计算(HPC)和人工智能领域。
计算公式
CPU算力(理论峰值性能)可以通过以下公式计算:
FLOPS = CPU 核心数 × 每个核心的时钟频率(Hz) × 每个周期执行的浮点运算数 \text{FLOPS} = \text{CPU 核心数} \times \text{每个核心的时钟频率(Hz)} \times \text{每个周期执行的浮点运算数} FLOPS=CPU 核心数×每个核心的时钟频率(Hz)×每个周期执行的浮点运算数
1. 核心数(Number of Cores)
- CPU内的物理核心数量。
- 如果支持超线程(Hyper-Threading),则逻辑核心数可以是物理核心数的两倍,但计算算力时通常只考虑物理核心。
2. 时钟频率(Clock Frequency)
- 以 GHz 表示(1 GHz = 1 0 9 10^9 109 Hz)。
- 表示每秒钟一个核心的主频振荡次数。
3. 每周期浮点运算数(Operations per Cycle)
- CPU的指令集架构(如 x86, ARM)决定了每周期可执行的浮点运算数。
- 常见架构:
- 标量运算:1 FLOP/周期。
- SIMD 指令集(如 AVX, AVX-512):多个浮点数并行处理。
- AVX2:256位寄存器,最多处理 8 个单精度或 4 个双精度浮点数。
- AVX-512:512位寄存器,最多处理 16 个单精度或 8 个双精度浮点数。
示例:Intel i7-1255U 计算理论峰值算力
- 核心数:10(2 性能核心 + 8 效率核心)。
- 性能核心支持更高频率和更复杂的指令集。
- 效率核心主要执行简单任务。
- 时钟频率:
- 性能核心:最高 4.7 GHz。
- 效率核心:最高 3.5 GHz。
- 浮点运算数(AVX2指令集):
- 性能核心:8 单精度 FLOP/周期。
- 效率核心:4 单精度 FLOP/周期。
单个核心算力(性能核心):
FLOPS
=
4.7
GHz
×
8
FLOP/周期
=
37.6
GFLOPS
\text{FLOPS} = 4.7 \, \text{GHz} \times 8 \, \text{FLOP/周期} = 37.6 \, \text{GFLOPS}
FLOPS=4.7GHz×8FLOP/周期=37.6GFLOPS
所有核心总算力:
FLOPS(理论峰值)
=
(
2
×
37.6
+
8
×
(
3.5
GHz
×
4
)
)
GFLOPS
=
75.2
+
112
=
187.2
GFLOPS
\text{FLOPS(理论峰值)} = (2 \times 37.6 + 8 \times (3.5 \, \text{GHz} \times 4)) \, \text{GFLOPS} = 75.2 + 112 = 187.2 \, \text{GFLOPS}
FLOPS(理论峰值)=(2×37.6+8×(3.5GHz×4))GFLOPS=75.2+112=187.2GFLOPS
实际算力
理论算力往往高于实际算力,受限于:
- 内存带宽:数据加载速度不足以满足CPU吞吐需求。
- 分支预测失败或流水线阻塞。
- 非浮点运算占比,例如整数运算、条件判断。
- 散热与功耗限制:特别是移动设备(如笔记本)。
可以通过性能测试工具(如 LINPACK 或 Cinebench)测量实际算力。
三、GPU算力
GPU算力是衡量图形处理器在并行计算中执行浮点运算能力的重要指标,通常以**每秒浮点运算次数(FLOPS, Floating Point Operations Per Second)**表示。
GPU算力计算公式
FLOPS = CUDA 核心数 × 每个核心的时钟频率(Hz) × 每周期执行的浮点运算数 × 流水线数(Pipeline Count) \text{FLOPS} = \text{CUDA 核心数} \times \text{每个核心的时钟频率(Hz)} \times \text{每周期执行的浮点运算数} \times \text{流水线数(Pipeline Count)} FLOPS=CUDA 核心数×每个核心的时钟频率(Hz)×每周期执行的浮点运算数×流水线数(Pipeline Count)
计算步骤
1. CUDA 核心数
- 表示 GPU 中的并行计算单元数量。
- CUDA 核心数通常是 SM(Streaming Multiprocessor)中单元数的总和。例如,NVIDIA 的 GPU 具有多个 SM,每个 SM 包含多个 CUDA 核心。
2. 时钟频率
- GPU 的核心时钟频率,通常以 GHz 表示(1 GHz = 1 0 9 10^9 109 Hz)。
- GPU 的 Boost Clock 表示其在性能负载下的最高频率。
3. 每周期浮点运算数
- 具体取决于 GPU 的架构和支持的精度。
- 常见精度:
- FP32(单精度):主流深度学习任务使用。
- FP64(双精度):高精度科学计算。
- FP16(半精度)或 INT8:用于深度学习加速。
- 例如,在 NVIDIA Ampere 架构中,FP32 每周期支持 2 个浮点操作。
4. 流水线数
- 高性能 GPU 使用多条指令流水线以提高并行处理能力。例如,NVIDIA Ampere 架构中每个 CUDA 核心有两条执行流水线。
示例:NVIDIA A100 计算理论峰值算力
参数:
- CUDA 核心数:6,912。
- 时钟频率:1.41 GHz。
- 每周期浮点运算数(FP32):2。
- FP32 理论算力:
FLOPS = 6 , 912 × 1.41 GHz × 2 = 19 , 468.32 GFLOPS = 19.47 TFLOPS \text{FLOPS} = 6,912 \times 1.41 \, \text{GHz} \times 2 = 19,468.32 \, \text{GFLOPS} = 19.47 \, \text{TFLOPS} FLOPS=6,912×1.41GHz×2=19,468.32GFLOPS=19.47TFLOPS
FP64 和 FP16 算力:
- FP64(双精度):FP32 算力的 1/2。
FP64 FLOPS = 19.47 TFLOPS ÷ 2 = 9.735 TFLOPS \text{FP64 FLOPS} = 19.47 \, \text{TFLOPS} \div 2 = 9.735 \, \text{TFLOPS} FP64 FLOPS=19.47TFLOPS÷2=9.735TFLOPS - FP16(半精度):FP32 算力的 2 倍。
FP16 FLOPS = 19.47 TFLOPS × 2 = 38.94 TFLOPS \text{FP16 FLOPS} = 19.47 \, \text{TFLOPS} \times 2 = 38.94 \, \text{TFLOPS} FP16 FLOPS=19.47TFLOPS×2=38.94TFLOPS
实际算力
理论算力是 GPU 的上限,实际性能通常受以下因素影响:
- 内存带宽:数据吞吐能力不足可能限制算力。
- 指令调度:不均衡任务可能导致部分核心闲置。
- 散热与功耗:性能可能受限于温控策略。
- 编程优化:代码是否充分利用并行计算能力。
测试工具如 CUDA SDK, TensorRT,或基准测试工具(如 Geekbench 和 SPECviewperf)可用于测量实际 GPU 算力。