【问题标题】:Estimate parallel efficiency using unicore processor使用单核处理器估计并行效率
【发布时间】:2014-02-17 08:08:45
【问题描述】:

我们知道,在多核系统上运行的程序的并行效率可以计算为 speedup/N,其中 N 是内核数。所以为了首先使用这个公式,我们需要在多核系统上执行代码并且需要知道加速比。

我想知道如果我没有多核系统,那么是否可以仅通过在单核处理器上执行给定代码来估计多核系统上给定代码的加速比?

我可以访问性能计数器(每周期指令、缓存未命中数、指令数等),并且我只有代码的二进制文件。

[注意:我估计了parallel_running_time (T_P) = serial_running_time/N 但这个估计有不可接受的错误]

谢谢

【问题讨论】:

  • 不,这是不可能的,如果不在多处理器机器上运行,您可能不知道多处理性能
  • 顺便说一句,根据经验,我发现关系是非线性的。每次添加内核时,加速增加的幅度都会小一些。它更像是一个 n log n 关系。
  • 你说的这个“加速”是什么?你是指根据Amdahl's Law计算最大加速比吗?
  • @Jim,这里加速 =(单核运行时)/(多核运行时)

标签: performance architecture parallel-processing computer-architecture


【解决方案1】:

阅读Amdahl's Law,尤其是关于parallelization的部分。

要确定可以在多大程度上加快程序速度,您必须知道程序的哪些部分可以从并行化中受益,以及哪些部分必须按顺序执行。如果您知道这一点,并且如果您知道串行和并行部分在单个处理器上(分别)花费多长时间,那么您可以估计程序在多个处理器上的速度。

根据您的描述,您似乎不知道哪些部分可以使用并行处理,哪些部分必须按顺序执行。因此无法估计并行运行时间。

【讨论】:

    猜你喜欢
    • 2020-06-14
    • 2018-09-18
    • 2018-11-19
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    相关资源
    最近更新 更多