为什么编译起来 aarch64 比 x86_64 要慢,单核 benchmark 却相反

2022-01-14 07:18:10 +08:00
 dangyuluo

我手里有两台台式机,

  1. i9-9900K 3.6Ghz, 8 核,2 线程 /核,共 16 线程
  2. 某厂商 aarch64 CPU 1.7Ghz, 32 核,1 线程 /核,共 32 线程

CPU bench 结果:

x86_64: events per second:   637.69
aarch64: events per second:   745.31

看起来 Aarch64 机器算质数会更快一些,但实际上编译 CMake 来看:

x86_64: 1m12.78s
aarch64: 1m20.135s

另一个项目更加明显

x86_64: 5m14s
aarch64: 9m9s

显然 x86_64 机器会更快。我已经尽可能排除两台机器其他变量的干扰(均有 64GB 内存,NVME 固态硬盘)。

请问还有其他什么可能的原因么?谢谢

7529 次点击
所在节点    Linux
55 条回复
matolv
2022-01-14 07:50:12 +08:00
首先 1.7g 的 armv8 不可能打赢能 boost 5G 的 9900k ,ipc 持平就不错了。即便 m1 也做不到,你不如跑下 geekbench
其次 gcc/icc 等编译器是影响最大的因素,skylake 已经很老了,优化已经到位了,新出的 adl 有新编译器的加持,性能能增加 15%
编译主要为整数运算,这方面 skylake 并不弱,相反 zen2 没比它强多少。新出的 cpu 主要都是增加浮点能力,比如 avx512 和 amx 之类,arm 方面 v9 也要把 128bit 的指令宽度增加到 256bit
Rheinmetal
2022-01-14 08:29:21 +08:00
影响因素很多 软件优化 微架构实现
arm 优势是能耗比 而不是不考虑功耗情况下的性能
liprais
2022-01-14 08:48:03 +08:00
@matolv 要不是我两个都有我就信了
ziseyinzi
2022-01-14 08:48:12 +08:00
一个 benchmark 的结果只能代表一个 benchmark 的性能,甚至不能代表另一个 benchmark 的性能。编译的结果也只能代表编译的性能。
lixile
2022-01-14 10:05:38 +08:00
是 gcc vs ARM64 GCC
还是交叉编译器 vs ARM64 GCC
youxiachai
2022-01-14 10:24:45 +08:00
你应该,在算算功耗吧...
liuxu
2022-01-14 11:02:57 +08:00
x86-64 编译 64 位 x86 的目标程序,aarch64 编译 64 位 aarch 的目标程序吗,你说为什么
dangyuluo
2022-01-14 12:19:24 +08:00
@liprais 嗯?请说说见解?我感觉挺有道理的。

@lixile 都是编译本地架构下的程序,没有交叉编译

@liuxu 不会好好说话么? block 了
ragnaroks
2022-01-14 12:19:39 +08:00
不同架构基本不具备可比性,geekbench 上 m1 max 和 5950x 单核分相当接近,实际上嘛,就算考虑到模拟 x86 的损失,也基本处于不可用级别,当然 5950x 的功耗也是压死 m1 了

就如同楼上说的,arm 更考虑低功耗下能尽可能提供一个还不错的性能
dangyuluo
2022-01-14 12:22:34 +08:00
功耗和价格不是考虑的重点。是 AWS 找我们合作,希望我们团队转型到他们的云端 aarch64 来做编译,给了我们一台测试样机

我好奇的是,既然主频上 Aarch64 差这么多,为什么算质数居然比 i9 9900K 还要块
ragnaroks
2022-01-14 12:22:47 +08:00
白嫖王用 csgo 测试,用 1060 都比 m1max 帧数高,m1max 可是宣传有 3060 的水平(实际理论浮点相当于 1080 )
ragnaroks
2022-01-14 12:23:40 +08:00
@dangyuluo 指令集优化、编译器优化,想不到别的了
ragnaroks
2022-01-14 12:26:36 +08:00
想起来几个月前还有一个关于 jm9 国产显卡的争论,jm9 理论性能相当于 1080 (官方也是这么宣传的),结果有人搞到一个实测也就 gtx750
ch2
2022-01-14 12:26:53 +08:00
@dangyuluo #10 比赛跑马拉松被编译器优化成 1 米冲刺了
dangyuluo
2022-01-14 12:30:01 +08:00
好吧,只能从概念上理解算质数 i9 CPU 没有办法发挥强项。但是还是希望能够得到更多技术上的解释。
kera0a
2022-01-14 12:30:14 +08:00
@ragnaroks
你这举例也太离谱了,你咋不用 win 装 MacOS 虚拟机来和 MacOS 原生游戏比帧数呢
ragnaroks
2022-01-14 12:32:56 +08:00
@kera0a 冷知识,csgo 原生支持 windows/linux/macOS 平台
kera0a
2022-01-14 12:39:12 +08:00
@ragnaroks wow 博德之门 3 才叫原生支持
ragnaroks
2022-01-14 12:46:17 +08:00
@kera0a 古墓丽影还是编辑推荐呢,只能完美运行但是帧数不高的都不叫原生支持是吧,BUG 多还需要改各种设置但是帧数刚好能过 60 就算原生支持是吧,那你快去苹果给他们商店的运营开了,30fps 都跑不到的东西也敢编辑推荐
kera0a
2022-01-14 12:47:21 +08:00
@ragnaroks 行吧,你说的对

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/828141

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX