龙芯3A6000性能评测:中国CPU实力几何?

本文通过解析数字、SIMD字符串转码等多个基准测试,详细评测了基于LoongArch架构的龙芯3A6000处理器性能,并将其与英特尔至强处理器进行对比分析。

中国CPU性能如何?龙芯3A6000基准测试

我维护着一些广泛使用的库,这些库根据所使用的特定处理器提供了优化的代码路径。近年来,我们开始支持龙芯处理器,但直到现在我才接触到龙芯处理器。据我所知,它们在北美地区并不广泛流通。这使得我很难进行任何性能调优。幸运的是,龙芯爱好者社区的友好人士帮助我获得了一台搭载龙芯处理器的小型电脑。

我的理解是,龙芯处理器旨在减少中国对x64和ARM等架构的依赖。它们使用自己专有的架构,称为LoongArch。这些处理器拥有两代为并行处理设计的SIMD(单指令多数据)向量扩展:LSX和LASX。LSX(龙芯SIMD扩展)提供128位宽的向量寄存器和指令,大致可与ARM NEON或早期的x64 SSE扩展相媲美。LASX(龙芯高级SIMD扩展)首次出现在龙芯3A5000(2021年),是256位的后继者,与大多数x64(英特尔和AMD)处理器中的x64 AVX/AVX2有一定的可比性。

LoongArch架构尚未得到普遍支持。你可以运行大多数Linux(Debian)系统,但Visual Studio Code无法通过SSH连接到LoongArch系统,尽管在VSCodium中有社区支持。然而,新版本的GCC和LLVM编译器支持LoongArch。

我的龙芯3A6000处理器支持LASX和LSX。但是,我不知道如何在LoongArch下进行运行时分发:在程序运行时检查是否支持LASX并动态切换到LASX支持。我可以强制编译器使用LASX(通过使用-march=native编译),但我早期的实验表明,LASX例程并不比LSX例程快……这可能是我们优化不足的一个迹象。

我决定运行一些测试,看看这款中国处理器与相对较新的英特尔处理器(Ice Lake)相比如何。这个比较并不是为了追求公平。Ice Lake处理器虽然有些旧,但它是一款昂贵的服务器级处理器。此外,我使用的代码很可能针对x64处理器的优化程度远高于对龙芯处理器的优化。我也不是要做一个详尽的测试:我只是想有个大致的了解。

让我们首先考虑数字解析。我的测试是可重复的。

1
2
3
4
5
git clone https://github.com/lemire/simple_fastfloat_benchmark.git
cd simple_fastfloat_benchmark
cmake -B build 
cmake --build build
./build/benchmarks/benchmark # 使用sudo用于性能计数器

这将解析随机数字。我关注fast_float的结果。我在两个实例中都使用GCC 15。

处理器 指令数/浮点数 指令/周期 GHz
Loongson-3A6000 377 4.92 2.50
Xeon Gold 6338 295 5.07 3.19

因此,龙芯3A6000每个周期执行的指令数与英特尔处理器大致相当。然而,它需要更多的指令,并且其时钟频率更低。所以英特尔处理器在这一轮胜出。

如果我们用abseil的数字解析函数(来自谷歌)替换fast_float函数会怎样?我得到的结果是,除了时钟频率外,两款处理器基本相当。

处理器 指令数/浮点数 指令/周期 GHz
Loongson-3A6000 562 4.42 2.50
Xeon Gold 6338 571 5.08 3.19

英特尔仍然凭借更高的频率获胜,但优势较小。

我想在SIMD密集型任务上测试龙芯处理器。所以我使用simdutf库进行一些字符串转码。

1
2
3
4
5
6
git clone https://github.com/simdutf/simdutf/git
cd simdutf
cmake -B build -D SIMDUTF_BENCHMARKS=ON
cmake --build build --target benchmark

# 使用sudo用于性能计数器

我的结果如下,取决于使用了哪些指令。英特尔处理器有三种选项(128位SSSE3、256位AVX2和512位AVX-512),而龙芯处理器有两种选项(128位LSX和256位LASX)。

处理器 指令数/字节 指令/周期 GHz
Loongson-3A6000 (LSX) 0.562 2.633 2.50
Loongson-3A6000 (LASX) 0.390 1.549 2.50
Xeon Gold 6338 (SSSE3) 0.617 5.07 3.236
Xeon Gold 6338 (AVX2) 0.364 2.625 3.19
Xeon Gold 6338 (AVX-512) 0.271 1.657 3.127

总的来说,我认为这些结果对于龙芯处理器来说相当不错。

Chips and Cheese网站有一篇更广泛的评测。他们将这款中国处理器的单核性能定位在初代AMD Zen处理器和AMD Zen 2处理器之间。AMD Zen 2处理器是当前游戏机(如PlayStation 5)的核心。Chips and Cheese的结论是“龙芯的工程师有很多值得骄傲的地方”:我同意。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计