繁体   English   中英

可扩展性和加速之间的区别?

[英]Difference between scalability and speedup?

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

在此输入图像描述

有人可以告诉我区别吗? 对我来说,Tseq在语义上(和实际上)等于Tpar(1)

答案后更新:

我认为我理解了差异,但我还有一个问题:我正在优化这段代码。 为了使我的并行版本平衡良好,使用了近似结果。 差异非常小,可以忽略不计,但工作量大大平衡,可扩展性大大提高。

另外,我做了一些优化,比如使用原始指针而不是原始代码中使用的原始指针(例如cv::Mat )。

所以我的问题是:如果我使用原始代码(我链接的代码)或者像作弊那样来衡量加速?

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

gcc code.c
./a.out

VS

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

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

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

关于你的编辑:

最重要的是要明确和诚实地比较你所做的事情! 我认为最好的方法是将一般优化的加速与并行化工作分开。 如果您只有未优化的串行和优化并行版本,请使用优化的并行版本,例如在没有OpenMP的情况下编译,作为并行加速的基准。

Speedup告诉你并行算法比顺序算法快多少。 可伸缩性告诉您并行算法的性能在添加硬件时的行为方式。

请注意,在两个公式对的并行算法相比不同之处:扩展性公式中,你是并行算法和N个CPU对本身的性能与1个CPU比较。 在加速公式中,您将并行算法与N CPU的性能与不同算法 (即算法的顺序版本)进行比较。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM