首页
返回主页

· DAG Scheduling · NPU

面向 NPU 的缓存感知 DAG 调度与流水优化

将 SIMD/NPU 算子依赖建模为有向无环计算图,在缓存受限条件下联合研究拓扑调度、数据驻留与流水优化,减少可避免的执行空隙与数据搬运。

  • DAG Scheduling
  • NPU
  • Combinatorial Optimization
  • Memory Allocation
  • Python

问题背景

面向 SIMD/NPU 架构,计算图调度既要满足算子的拓扑依赖与执行单元约束,也要处理片上缓存容量、数据驻留和 DMA 搬运开销;缓存受限时,简单的就绪队列策略容易产生重复换入换出和流水空隙。

数学与算法方法

将算子依赖建模为 DAG,在拓扑约束和缓存驻留条件下使用 WCB 类评分确定调度顺序;结合连续多池内存分配、SPILL 受害者选择与换入换出节点插入,并通过 ASAP 风格流水压缩在执行单元约束下前移任务。

个人贡献

参与问题抽象、算法设计、实验验证和代码库整理,重点关注图调度与缓存管理之间的耦合。

结果与产出

项目以总执行时钟和数据搬运量为主要优化目标,获得 2025 年“华为杯”研究生数学建模竞赛全国三等奖,并整理为带有统一 CLI、冒烟测试和中英文说明的可复现代码库。

方法流程

  1. 01

    图调度

    在拓扑依赖、数据驻留和执行单元约束下,以 WCB 类评分选择就绪算子。

  2. 02

    内存与 SPILL

    在多缓存池中分配连续地址,容量不足时选择 SPILL 对象并插入换入换出过程。

  3. 03

    流水压缩

    在执行单元约束下左移任务,减少可消除的流水空隙。