【发布时间】:2021-11-19 23:17:16
【问题描述】:
Intel intrinsics guide 列出的吞吐量是每个线程还是每个内核?
【问题讨论】:
标签: assembly x86 simd sse intrinsics
Intel intrinsics guide 列出的吞吐量是每个线程还是每个内核?
【问题讨论】:
标签: assembly x86 simd sse intrinsics
每个物理内核。
SMT(超线程)仅在您在后端执行端口以外的其他方面遇到瓶颈时才有助于整体吞吐量。如果线程有时会因缓存未命中或分支未命中而停止,SMT 可以更接近于保持执行单元由新的 uop 提供以启动每个时钟周期,从而实现列出的吞吐量限制。有两个指令流供乱序调度选择可以避免饥饿(停滞),即使一个逻辑核心上的线程被卡住等待某事。
请注意,您可以从 https://uops.info/ 获得有关指令时序的更详细信息,以及从 https://agner.org/ 和/或英特尔的优化手册中了解这些数字的含义。
单个指令的“吞吐量”并不能告诉您它是否与其他指令竞争。例如具有 0.5c 吞吐量的 FMA 在不同的端口(p0 和 p1)上运行,而不是在 Haswell 和 Skylake 等 Intel CPU 上具有 1c 吞吐量(p5)的 shuffle。 (如果我们谈论的是不能在辅助 shuffle 单元上运行的 shuffle,还有 Ice Lake。)这就是为什么查看后端 uops 更有用,有多少 uops 以及 哪个端口 .
另见
【讨论】: