【问题标题】:How to create a simple cpu benchmark?如何创建一个简单的 CPU 基准测试?
【发布时间】:2017-12-11 22:35:53
【问题描述】:

对于与我们的 A-Level 高度相关的学校项目,我们希望对 Raspberry Pi 的 CPU 进行超频,并在超频之前和之后评估 CPU 的性能,并使用自己编写的基准测试。

这个基准应该尽可能简单,因为它只代表我们演示的一小部分。

我们认为使用 c++ 作为语言可能是个好主意,因为它使用的资源更少(?)。 对于基准测试本身,我们考虑使用某种算法,例如计算 Pi 或素数到特定点并查看需要多长时间。

我们如何使用多核/单核?

我们的想法有更好/更简单的替代方案吗?

提前致谢。

【问题讨论】:

  • 是 Pi(数字),而不是 Pie(烤好的糕点)。
  • 基准测试可以随心所欲。如果您只想要与时钟速度线性扩展的东西,for(uint64_t i = 0; i< MAX_COUNT ; i++) {} 是一个简单的微基准,仅表示相对意义上的任何东西,或者如果您查看编译器生成的 asm。 (你必须避免让它优化到一无所有。例如,使用 gcc -O1 或更低版本编译。godbolt.org/g/aejRPt
  • 您可以运行单线程可执行文件的多个实例,例如在 bash for i in {1..4};do ./benchmark & done 中启动 4 个后台作业。
  • @PeterCordes 抱歉,已修复
  • 顺便说一句,随时钟时钟速度线性扩展的基准测试可能更有趣。例如部分取决于内存带宽/延迟。 CPU 越快,缓存未命中所需的 CPU 时钟就越多。 Eratosthenes 的素数筛可能很好,并且易于实施。或快速排序或合并排序。 (合并排序很容易并行化。)

标签: c++ cpu benchmarking multicore


【解决方案1】:

基准测试可以随心所欲。如果您只想要与时钟速度线性扩展的东西,以下是一个简单的微基准:

for(uint64_t i = 0; i< MAX_COUNT ; i++) {}

它只意味着相对意义上的任何东西,或者如果您查看编译器生成的 asm。

你必须避免让它优化到什么都没有,例如使用gcc -O1 或更低版本编译。

Example

您可以运行单线程可执行文件的多个实例,例如在 bash 中:

for i in {1..4};do ./benchmark & done

启动 4 个后台作业。

– Peter Cordes 的回答。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多