原文: https://tlkh.dev/benchmarking-the-apple-m1-max
HN 讨论:https://news.ycombinator.com/item?id=29310509
这篇文章挑了一些测试项目,
推测 M1 Max 在 100W 功耗有如此表现的原因。
他的结论是赢在内存频宽够大, 有10核心,
以及各种 co-processor (AMX, ANE, ...)帮忙 offload。
CPU<->MEM 100GB/s (单 thread), 200GB/s (多 thread), 对比 5600x 约 40GB/s
GPU<->MEM 大约 200~300GB/s,最高 330GB/s
CPU+GPU<->MEM 因为两个共用内存,竞争后总和最高 360GB/s
Zero-Copy: 理论上因为共用内存,GPU, CPU 分享资料应该很快
但是 TensorFlow Zero-copy Memory Access
却和需要走 PCIE 的 5600X+3090 在同一数量级,可能M1在这部分没做到硬件加速。
M1 Max 5600X+3090
CPU->GPU 48 30
GPU->CPU 19 19
因此可以看出在 memory-bound 工作+硬件加速有支援时,M1 Max 速度就很惊人
例如 NumPy 用上 GEMM 的工作就赢 5600x 一票
但是 SVD, VecMul, eigendecomp 这些就只是不相上下
5600x 在 HTTP server 这种无法加速的也领先
另外 M1 Max 靠着核心多的优势,在 Pandas 某些项目领先。
TensorFlow GPU 的话效能只有 3090x 1/8,不过耗电也差不多 1/8
所以每瓦效能差不多。但是 M1 max 等于是有巨大内存的显示卡:
https://news.ycombinator.com/item?id=29311522
因此在需要算大量资料时还是有他的优势 (例如 4k/8k 影片转档?)
以及一些 TensorFlow 工作也可以交给 ANE 去算
ANE只耗费 2-4w, 但可以做到 GPU 60% 左右的效能