【问题标题】:Difference between scalability and speedup?可扩展性和加速之间的区别?
【发布时间】:2017-10-30 18:59:19
【问题描述】:

我正在阅读我的并行系统课程的教科书,我发现了这两个流行的概念:

谁能告诉我区别?对我来说,Tseq 在语义上(实际上)等于 Tpar(1)

回答后更新:

我想我理解了其中的区别,但我还有一个问题:我正在优化this 代码。为了使我的并行版本平衡良好,使用了近似结果。差异非常很小,可以忽略不计,但工作负载得到了极大的平衡,可伸缩性也因此大大提高。

此外,我做了一些优化,比如使用原始指针而不是原始代码中使用的基于它们的数据结构(例如cv::Mat)。

所以我的问题是:为了衡量加速,我应该使用原始代码(我链接的那个)还是像作弊一样?

【问题讨论】:

    标签: performance parallel-processing scalability


    【解决方案1】:

    与顺序执行相比,并行度为 1 的并行执行仍会产生一些开销。想象一下:

    gcc code.c
    ./a.out
    

    gcc code.c -fopenmp
    OMP_NUM_THREADS=1 ./a.out
    

    由于需要在每个并行部分上执行代码,检查应生成的线程数,后者可能会更慢。

    与顺序代码相比,您甚至可能需要完全不同的并行代码实现。

    关于您的编辑:

    最重要的是要清楚和诚实地说明您要比较的内容!我认为最好的方法是将一般优化的加速与并行化工作分开。如果您只有未优化的串行和优化的并行版本,请使用优化的并行版本,例如编译时不使用 OpenMP 作为并行加速的基线。

    【讨论】:

    • 能否请您看一下更新后的问题?
    【解决方案2】:

    Speedup 告诉您并行算法可以比其顺序算法快多少。可扩展性告诉您添加硬件时并行算法的性能如何。

    注意两个公式与 what 的区别,您正在比较并行算法:在可扩展性公式中,您正在比较具有 N 个 CPU 的并行算法的性能与 本身 em> 有 1 个 CPU。在加速公式中,您将使用 N 个 CPU 的并行算法的性能与 不同算法(即算法的顺序版本)进行比较。

    【讨论】:

    • 能否请您看一下更新后的问题?
    猜你喜欢
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 2012-09-02
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    相关资源
    最近更新 更多