CANN/cannbot-skills AI Core和Vector Core限核功能

📅 2026/7/11 16:52:12
CANN/cannbot-skills AI Core和Vector Core限核功能
AI Core和Vector Core限核功能【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills功能简介多流场景下会出现所有核Core都被一个流占用的情况导致算子执行并行度降低因此需要把核分给不同的流使用从而保证算子并行执行收益。npugraph_ex提供Stream级核数配置用户可按实际情况配置最大AI Core数和Vector Core数。说明1运行过程中实际使用的核数可能少于配置的最大核数。说明2配置的最大核数不能超过AI处理器本身允许的最大AI Core数与最大Vector Core数。更多关于AI Core和Vector Core介绍参考AI Core/Cube Core/Vector Core简介如需了解Eager和图模式下的控核差异请参考Eager和图模式下控核介绍。使用约束本功能支持的产品型号参见使用说明。仅支持对Ascend C算子控核对于非Ascend C算子暂不支持控核并且micro batch多流并行场景下存在卡死可能或其他影响不推荐使用本功能。通信类算子仅支持对AI Vector算子控核。对于支持静态Kernel编译功能的算子在CANN版本小于等于CANN 8.5.0时在静态kernel和控核功能同时开启的情况下优先保证控核功能生效静态kernel功能将失效。主要适用于micro batch多流并行如果存在不支持控核的算子可能会影响多流并行效果。不支持多线程并发设置同一条流上的控核数无法保证算子执行时的控核生效值。配置核数不能超过AI处理器本身允许的最大核数假设最大AI Core数为max_aicore、最大Vector Core数量为max_vectorcore系统默认采用最大核数作为实际运行核数。您可通过“CANN软件安装目录/arch-linux/data/platform_config/soc_version.ini”文件查看如下所示说明AI处理器上存在24个Cube Core存在48个Vector Core。[SoCInfo] ai_core_cnt24 cube_core_cnt24 vector_core_cnt48使用方法分析模型脚本中需要指定核数的算子。使用如下with语句块配置Stream级核数。语句块内的算子运行按指定的核数为上限。with torch.npu.npugraph_ex.scope.limit_core_num(op_aicore_num: int, op_vectorcore_num: int):op_aicore_num算子运行时的最大AI Core数取值范围为[1, max_aicore]。op_vectorcore_num算子运行时的最大Vector Core数取值范围为[1, max_vectorcore]。当AI处理器上仅存在AI Core不存在Vector Core时此时仅支持取值为0。查看配置结果。配置结果可通过Ascend PyTorch Profiler推荐torch_npu.profiler.profile接口采集性能数据查看详细的使用方法和结果文件介绍请参考《CANN 性能调优工具用户指南》中的“Ascend PyTorch调优工具”章节具体操作样例参考性能分析案例。算子核配置结果位于kernel_details.csv中如果是AI Core或AI Vector算子对应的核使用的核数位于Block Num列。如果是Mix Core算子主加速器使用的核数位于Block Num列从加速器的核数位于Mix Block Num列。使用示例import torch import torch_npu class Model(torch.nn.Module): def __init__(self): super().__init__() def forward(self, in1, in2, in3, in4): # 指定Stream级核数 with torch.npu.npugraph_ex.scope.limit_core_num(4, 5): mm_result torch.mm(in3, in4) add_result torch.add(in1, in2) mm1_result torch.mm(in3, in4) return add_result, mm_result,mm1_result model Model().npu() model torch.compile(model, backendnpugraph_ex, dynamicFalse, fullgraphTrue) in1 torch.randn(1000, 1000, dtype torch.float16).npu() in2 torch.randn(1000, 1000, dtype torch.float16).npu() in3 torch.randn(1000, 1000, dtype torch.float16).npu() in4 torch.randn(1000, 1000, dtype torch.float16).npu() result model(in1, in2, in3, in4) print(fResult:\n{result}\n)【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考