0

问题

我正在尝试计算 CPU / GPU FLOPS 性能,但我不确定我是否做得正确。

假设我们有:

  • Kaby Lake CPU(时钟:2.8 GHz,内核:4,线程:8)
  • Pascal GPU(时钟:1.3 GHz,内核:768)。

这个 Wiki 页面说 Kaby Lake CPU 计算 32 FLOPS(单精度 FP32)和 Pascal 卡计算 2 FLOPS(单精度 FP32),这意味着我们可以使用以下公式计算它们的总 FLOPS 性能:

中央处理器:

TOTAL_FLOPS = 2.8 GHz * 4 cores * 32 FLOPS = 358 GFLOPS

显卡:

TOTAL_FLOPS = 1.3 GHz * 768 cores * 2 FLOPS = 1996 GFLOPS

问题

  1. [已解决]我见过的大多数指南(比如这个)在公式中都使用了物理内核。我不明白为什么不使用线程(逻辑核心)呢?线程不是专门为使浮点计算性能加倍而创建的吗?那我们为什么要忽视它们呢?

  2. 我做得对吗?我找不到一个可靠的来源来计算 FLOPS,互联网上的所有信息都是矛盾的。对于 i7 7700HQ Kaby Lake CPU,我发现 FLOPS 值低至29 GFLOPS,尽管上面的公式为我们提供了 358 GFLOPS。我不知道该相信什么。

  3. [编辑]Node.js / Python / C++ 中是否有一个跨平台(Win、Mac、Linux)库,可以获取所有 GPU 统计信息,如着色核心、时钟、FP32 和 FP64 FLOPS 值,以便我自己计算性能,或者一个库通过利用所有可用的 CPU / GPU 指令集(如 AVX、SSE 等)自动计算最大理论 FP32 和 FP64 FLOPS 性能?我们不能直接从 CPU / GPU 获取 FLOPS 统计数据,这非常荒谬,我们必须下载并解析一个 wiki 页面才能获取值。即使在使用 C++ 时,似乎(我实际上并不知道)我们必须下载 2 GB CUDA 工具包才能访问 Nvidia GPU 信息——这实际上不可能让其他人使用该应用程序,因为没有一个人会下载一个 2 GB 的应用程序。

4

0 回答 0