【发布时间】: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