优化方法
常见的优化方法如下所示:
- 减少stream同步函数调用,stream同步函数调用耗时高,尽量多往一个stream上下发多个Kernel后做一次同步。
- 针对PyTorch框架的模型,尽量把Python逻辑使用加速库替换,例如将模型Sampling逻辑使用加速库的一个Operation替换来提高性能。
- Plan Execute异步化,Plan逻辑包含Setup和Execute两部分逻辑,如果Plan的Setup和Execute在一个线程执行,调度的时间是两阶段总和;将Execute在单独一单独的线程异步执行,那总的调度时间就减半。
- PyTorch框架默认开启算子异步下发来达到Plan Execute异步化的目的,该功能为加速库提供的调度侧多线程功能,能有效提高调度侧运行速度。
图1 算子异步下发后host侧流水
- 针对其他框架,例如PaddlePaddle,可以启动一个后台线程来执行Plan的Execute来达到Plan Execute的异步化目的,同时注意stream同步时清空后台线程的队列里任务。
父主题: 调度性能分析及优化