CPU 核心计数

了解可用的 CPU 资源是充分利用任何应用程序中 CPU 的关键。当今的许多 CPU 都拥有不止一个核心,并且许多 CPU 能够在这些物理核心上并行执行多个线程。Windows® 通过物理逻辑核心的概念向您展示了这一点。

尤其对于游戏而言,最大化可用的 CPU 性能尤为重要,因为游戏需要 CPU 来创建丰富、沉浸且极具交互性的游戏世界,然后高效地驱动 GPU 进行渲染。

此示例代码可正确检测当今现代处理器中的物理核心和逻辑处理器。

在 GitHub 上查看 CPU 核心数 v2.0 示例

其他说明

当今的许多 CPU 都拥有不止一个核心,并且可能并行执行多个线程。此外,高性能核心的利用率存在空隙,这可以通过额外的硬件线程来填补——这就是同步多线程 (SMT)。尽管每个硬件线程都有自己的程序计数器和架构寄存器集,但它们会共享核心资源。

此建议仅适用于 AMD 处理器,并非适用于所有处理器厂商的通用指南。

通常,应用程序会显示 SMT 的好处,并且建议使用所有逻辑处理器。但是,游戏在游戏过程中常常会在主线程或渲染线程上遇到 SMT 争用。一种减少这种争用的策略是根据物理核心数而不是逻辑处理器数创建线程。

请为您的应用程序或游戏进行性能分析,以确定理想的线程数。

  • 游戏初始化——包括解压缩资源和编译/预热着色器——可以从 SMT 双线程模式的逻辑处理器中受益。
  • 但是,游戏过程可能更偏好使用 SMT 单线程模式的物理核心数。

我们建议为游戏添加选项以

  • 设置最大线程池大小。
  • 强制设置线程池大小。
  • 强制 SMT。
  • 强制使用单个 NUMA 节点,这将隐含地强制使用单个处理器组。

最后:避免将线程池大小设置为常量。

V2.0 更新(2021 年 4 月)

  • 移除了 Windows XP 代码示例。需要 Windows 7 或更高版本。
  • 添加了 RYZEN_CORES_THRESHOLD
  • 澄清了游戏过程和游戏初始化的指导。
  • 为代码示例添加了命令行参数,并增加了更多处理器信息,包括名称和供应商。

资源

© . This site is unofficial and not affiliated with AMD.