💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
🎁完整资源、论文复现、期刊合作、论文辅导及科研仿真定制事宜点击:
👉👉👉本文完整资源下载
⛳️座右铭:行百里者,半于九十。
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥第一部分——内容介绍
一、问题背景与研究动机
随着人工智能模型规模持续增长,单个AI核心在制造成本、功耗与散热等方面面临越来越强的约束,难以独立满足不断攀升的算力需求。多核NPU因此成为提升并行能力与能效的主流架构。然而,多核架构的优势并不会自动转化为性能收益,其关键在于如何将完整的计算图合理划分为若干子图,并将这些子图分配到多个核心上执行,同时协调跨核依赖、核内缓存复用与共享主存带宽之间的复杂关系。
本题所关注的核心问题是:在由多个同构AI核心与共享DDR主存构成的多核NPU平台上,如何设计高效的多核切图与调度算法,在满足数据依赖、缓存容量、计算流水线和共享带宽等约束的前提下,尽可能缩短总体任务执行时间,并控制额外数据搬运量。这一问题不仅决定多核算力能否得到有效利用,也直接影响任务时延、数据搬运开销和系统能效。
二、多核NPU平台与计算图模型
2.1 硬件平台结构
多核NPU平台由若干同构AI核心与共享核外主存DDR组成。每个核心配置Cube矩阵计算单元、Vector向量计算单元、数据搬运单元以及私有的L1和UB缓存。Cube与Vector可并行执行,但受数据依赖和各自流水线占用约束。所有核心对DDR的读取与写入共同竞争固定的总物理带宽。此外,在问题三中还引入了所有核心共享的只读二级缓存L2,用于复用多核共享输入,其带宽独立于DDR带宽。
2.2 计算图表示
待调度对象是一张有向无环计算图。图中包含两类节点:张量节点与操作节点。张量节点表示一块数据,可以是计算图的输入、输出或中间结果;操作节点表示一次计算或数据搬运,如COPY_IN、COPY_OUT、ADD、MUL等。有向边只允许张量节点与操作节点相连,表示数据依赖关系。边本身不设置通信量,当依赖跨越子图或执行任务时,搬运字节数由关联张量的大小决定。
计算图的输入、输出张量位于DDR,中间张量的逻辑位置为核内缓存。实际神经网络的计算数据通常远大于单核缓存容量,因此需要将计算拆解为可在核内执行的细粒度操作和数据块。以分块矩阵乘法为例,每个数据分块依次经历从DDR搬入L1、由Cube计算、将结果写回DDR的过程,由此形成计算图。
2.3 任务与子图
任务指CPU主控向单个NPU核心一次下发并统一调度的最小执行单元。一个任务可包含一个或多个子图,具体对应关系由硬件场景决定。子图是切图的基本单位,切图方案以每个核内操作节点到子图标识的映射表表示。评估程序根据原始计算图和切图结果自动重建边界数据搬运。子图调度方案以各核心上的子图执行顺序列表表示,每个子图必须且只能出现一次,且同核内的子图调度顺序不得违反子图间依赖关系。
三、问题目标与评估指标
本题要求提出高效且效果良好的多核切图与调度方法,在给定计算图和核心数量后,能够在合理时间内生成符合要求、可执行的多核切分与调度方案,并尽可能缩短总体任务执行时间,同时控制额外数据搬运。
主要评估指标为总体任务执行时间,即Makespan,由赛题提供的评估程序统一计算,单位为时钟周期。次要指标包括总额外数据搬运量与Cache命中率。总额外数据搬运量表示多核调度相对于原始计算图新增的DDR搬运字节数,主要来自跨越任务边界的数据、多个任务对同一输入的重复读取,以及核内调度中缓存容量不足时自动产生的换出与换入。Cache命中率表示可由只读Cache服务的COPY_IN访问中,命中字节数占总访问字节数的比例,用于观察Cache对共享输入访问的覆盖程度。
求解困难来自三个相互耦合的决策:切图、核心分配和同一核内的子图调度顺序。切图改变子图规模、并行空间和通信边界;核心分配决定负载均衡及跨核通信;同一核内的子图调度顺序影响依赖等待、张量驻留时间和缓存换入换出。减少切分可降低通信,却可能压缩并行度并增大缓存压力;增加切分可提供更多并行机会,却可能带来重复读取和更多DDR搬运。因此,不能孤立优化任一环节,而需在数据依赖、流水线、缓存和带宽约束下进行联合权衡。
四、两种硬件场景与问题划分
根据硬件平台是否具有核间同步信号传递机制,多核调度分为两种硬件场景。
4.1 场景A:无核间同步机制
在场景A中,一个任务只能包含一个子图,子图间的同步依赖由CPU主控通过任务调度完成。同一核上多个任务串行执行时,核内缓存状态会被清空,因此所有跨子图数据必须经DDR中转。任意两子图间的单位通信成本相同,且跨任务数据不驻留私有缓存。问题一要求在场景A下建立多核切图与调度模型并设计求解算法,为每个非COPY操作分配子图标识,同时确定各核心上的子图执行顺序,方案以缩短总体任务执行时间为主要目标,并兼顾总额外数据搬运量。
4.2 场景B:存在核间同步机制
在场景B中,一个任务可包含同一核心上的多个子图,前序子图的数据可驻留在L1或UB中供后续子图直接使用。跨核依赖由源核心将数据写入DDR并发送同步信号,目标核心收到信号后再从DDR读取。因此,同核单位通信成本小于跨核单位通信成本。但跨越多个子图的驻留数据会持续占用核内缓存,可能压缩中间子图的可用空间并降低执行效率。问题二要求在问题一的基础上,建立适用于场景B的切图与调度模型并设计求解算法,在严格满足核内缓存容量约束的前提下,进一步缩短总体任务执行时间并减少额外数据搬运。
4.3 问题三:共享L2资源
问题三在场景B的基础上引入所有核心共享的只读L2 Cache,要求研究其容量和带宽对多核切图与调度的影响,并建立相应模型、设计求解算法。L2容量为1MB、带宽为250 bytes/cycle,用于复用多核共享输入,其带宽独立于DDR带宽。参赛者需给出无L2与只读Cache两种配置的对比曲线,并报告相同核数下只读Cache相对无L2基线的加速比。
五、切图与调度的关键约束
5.1 子图间通信成本
跨子图边的通信数据量需要视场景插入额外的数据搬运节点,从而增加对DDR共享带宽的消耗。强通信依赖的两子图若被合并为一个子图,可显著降低通信开销,但会牺牲并行度。因此,切图需要在通信开销与并行度之间进行权衡。
5.2 多核并行度
核数固定时,子图划分方式与子图调度方案共同决定各核负载均衡程度与并行度上限。过度聚合子图会压缩多核并行空间,过度切分则会放大跨子图通信代价。合理的调度方案应把相互独立或资源不同的计算分散到不同核心并行执行,同时尽量保留计算过程中数据的核内复用。
5.3 数据重复读取代价
同一份数据可能被多个计算节点使用。如果这些节点被切分至多个子图中,则每份子图均需从核外主存或L2 Cache各自读取该数据,从而显著增加对共享DDR带宽的消耗。切图与子图调度应尽量将共享同一输入数据的节点聚合到同一子图或同一核,以减少重复读取带宽代价。
5.4 核内计算单元并行
同一AI核心内的Cube与Vector单元可同时独立执行。因此,在切图阶段需考虑同一子图内两个计算单元之间的负载均衡,以提升核心整体执行效率,避免某一计算单元长期空闲。
5.5 核内启发式调度的影响
现有核内调度算法为启发式算法。当单个子图规模过大时,核内调度算法需引入额外的数据搬运以缓解核内缓存容量压力。在超大规模子图上,启发式调度的非全局最优解可能导致大量中间数据被换入换出,由此带来额外的数据搬运,最终导致核内调度效率下降。一般情况下,两个子图合并后的子图执行时间会小于两子图各自单独执行的时间之和,时间收益来自合并后前后子图头尾数据搬运开销被计算流水掩盖以及通信成本的降低。但当子图合并后的规模超过一定程度时,可能出现合并后负时间收益的现象。
5.6 单核内通信对缓存资源的占用
在场景B中,同一核心上的多个子图可以通过核内缓存复用驻留数据,减少切分子图引入的数据搬运。然而,子图间的数据驻留会持续占用核内缓存,压缩其他子图执行时可用的缓存空间,从而可能降低单个子图的调度效率。
六、评估流程与方案输出
赛题提供的评估程序分为构建子图间数据通路、确定每个子图核内调度顺序、多核模拟执行给出指标三个阶段。首先按照场景规则构造任务图、补充跨任务的边界搬运;随后采用核内调度算法确定每个任务中操作的固定执行顺序,当缓存容量不足时自动插入缓存换出和缓存换入;最后多核模拟执行在遵循核内操作顺序和方案给出的子图间调度顺序的基础上,模拟所有核心的并行执行。评估程序结束时给出所有操作结束时刻的最大值作为Makespan,同时给出其余评估指标。
参赛算法输出多核调度结果文件,顶层包含两个字段:节点到子图的映射表与各核心的子图执行顺序列表。评估器会检查节点覆盖且无重复、子图标识为非负整数、每个子图恰好调度一次、子图依赖无环、同核顺序不违反依赖。任一检查失败即终止评估。
七、总结
本题围绕通用神经网络处理器下的多核调度问题,构建了一个融合切图、核心分配与核内调度顺序的联合优化框架。问题一与问题二分别对应无核间同步与有核间同步两种硬件场景,问题三进一步引入共享只读L2 Cache,考察缓存资源对调度策略的影响。求解的核心难点在于多核并行度、核内缓存容量与共享主存带宽之间的权衡。合理的调度方案需要在数据依赖、流水线、缓存和带宽约束下进行联合优化,以缩短总体任务执行时间并控制额外数据搬运。该问题不仅具有明确的工程应用背景,也为多核异构计算环境下的任务划分与资源调度提供了具有挑战性的研究课题。
📚第二部分——运行结果
【2026年华为杯A题】通用神经网络处理器下的多核调度问题(思路、代码、论文,持续更新)-CSDN博客https://blog.csdn.net/weixin_46039719/article/details/166453807?sharetype=blogdetail&sharerId=166453807&sharerefer=PC&sharesource=weixin_46039719&spm=1011.2480.3001.8118
🎉第三部分——参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)
🌈第四部分——本文完整资源下载
资料获取,更多粉丝福利,MATLAB|Simulink|Python|数据|文档等完整资源获取
本文完整资源下载