文档
注册

调度性能分析及优化

优化原则

调度性能的分析通常围绕“Device侧算子运行排布紧密,没有由调度引起的空泡”这一目标进行分析。首先需要观察Profiling侧的流水是否达到目标,如果流水上算子已经排布紧密,则可以跳过该步骤;否则需要进一步分析调度侧的阻塞点。

图1 排列紧密的device侧流水
图2 排列不紧密的device侧流水

优化方法

常见的优化方法如下所示:

  1. 减少Stream同步函数调用,Stream同步函数调用耗时高,尽量多往一个Stream上下发多个Kernel后做一次同步。
  2. 针对PyTorch框架的模型,尽量把Python逻辑使用加速库替换,例如将模型Sampling逻辑使用加速库的一个Operation替换来提高性能。
  3. Plan Execute异步化,Plan逻辑包含Setup和Execute两部分逻辑,如果Plan的Setup和Execute在一个线程执行,调度的时间是两阶段总和;将Execute在单独一单独的线程异步执行,那总的调度时间就减半。
  4. PyTorch框架默认开启算子异步下发来达到Plan Execute异步化的目的,该功能为加速库提供的调度侧多线程功能,能有效提高调度侧运行速度。
    图3 算子异步下发后Host侧流水
  5. 针对其他框架,例如PaddlePaddle,可以启动一个后台线程来执行Plan的Execute来达到Plan Execute的异步化目的,同时注意Stream同步时清空后台线程的队列里任务。
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词