jus*_*rld 2 parallel-processing performance scalability
我正在阅读并行系统课程的教科书,发现了以下两个流行的概念:
有人可以告诉我区别吗?对我而言,Tseq在语义上(和在实践上)等于Tpar(1)
回答后更新:
我认为我了解差异,但是仍然有一个问题:我正在优化此代码。为了使我的并行版本很好地平衡,使用了近似结果。所不同的是非常小,被认为是微不足道的,但工作量大大平衡和可扩展性,从它极大地提高。
另外,我做了一些优化,例如使用原始指针而不是cv::Mat原始代码所基于的原始数据结构(例如)。
所以我的问题是:要衡量加速率,我应该使用原始代码(我链接的代码)还是想作弊?
与顺序执行相比,并行度为1的并行执行仍会产生一些开销。想像:
gcc code.c
./a.out
Run Code Online (Sandbox Code Playgroud)
与
gcc code.c -fopenmp
OMP_NUM_THREADS=1 ./a.out
Run Code Online (Sandbox Code Playgroud)
由于需要在每个并行部分上执行代码,并检查应产生的线程数,因此后者可能较慢。
与顺序代码相比,您甚至可能要求并行代码的实现截然不同。
关于您的编辑:
最重要的是要对所比较的内容保持清晰和诚实!我认为最好的方法是将一般优化的加速与并行化工作分开。如果您只有未优化的串行版本和优化的并行版本,请使用优化的并行版本,例如在没有OpenMP的情况下编译为并行加速的基准。
| 归档时间: |
|
| 查看次数: |
403 次 |
| 最近记录: |