January
9th,
2019
scaling(衡量性能)
加速比
并行程序在多核上的性能 VS 最佳串行程序
影响“加速比-核数”的因素:
- 问题计算量:计算量小使得多核机器性能偏低,计算量大使得单核机器性能偏低
- 缓存:核越多,子问题越小,可能完全容纳在L1-cache中,使得加速比大于核数量
- GPU例子:不同型号选用不同的SMM核数目

限制条件下的scaling
可能碰到的限制条件:
- 应用(由实际情况决定)
- 计算量/核
- 通信/核
- 资源(通用问题)
- 问题限制
- 时间限制
- 内存限制
问题限制(主要)
- 加速比=固定工作量,单核花费时间/多核花费时间,即更快地处理问题
- 问题大小使得加速比的衡量与理论有偏差(见影响“加速比-核数”的因素)
时间限制
- 加速比=固定时间内,多核工作量/单核工作量,即固定时间内处理更多的问题
- 例子:实时系统
内存限制
- 加速比=最大可支持内存下,(p工作量*1时间)/(1工作量*p时间)
- 例子:机器学习中最大batch-size
simulation
- execution-driven:用软件模拟硬件结构
- trace-driven:在实际硬件结构中运行,并记录内存信息等
得到准确性能的技巧:
- 从最简单的方案开始
- 确定性能受限于计算、带宽、同步
- 确定理论上的最佳效果
- 用屋顶图衡量性能(斜线-带宽,水平线-计算能力)
- 其他技巧
- 增加纯粹的运算
- 使用纯粹的load/save
- 检查内存局部性,从A[0]读数
- 检查同步性,移除锁、同步
