对于异构计算的几个优化点
- 计算掩盖IO的延迟
- 例如 像 transpose 这种访存相关的操作,我们通过对一个特殊的矩阵乘,进行一次转换,达到transpose的结果,而非从片外存储中,来进行load。
- 矩阵分块与合并
- 进行与硬件的规格相匹配,例如GPU 中 warp的概念(32 thread 同步执行),shared memory 这种可编程的存储。
- 计算与load/store流水起来,减少气泡的等待
- 充分利用dsp资源,如果有效利用率达到80%以上,那么就已经很成功了。