已关闭
[Feature]: 支持动态设置taskqueue #3678
nomiz创建于 8月5日关闭于 3 天前
8月6日 添加了label:bot-triaged
TorchNPU-Bot
8月6日 评论:
8月6日 评论:
检测到当前 issue 已关联 PR,自动添加标签:bot-triaged


8月8日 关联了pull request:Remove static variable assignment
chenrayray
3 天前 评论:
3 天前 评论:
因为关联 PR !43952、!44106、!44409、!44442、!45294、!45295、!45296,以及 Ascend/op-plugin !5833 已合入,本单先按关联开发/资料变更已交付关闭。如仍有未覆盖的事项或需要继续跟进,请补充具体情况并重新打开。


3 天前 issue状态由 TODO 改变为 DONE
3 天前 关闭了 issue
3 天前 添加了label:resolved
欢迎加入社区,感谢您对社区的贡献 🎉!
💻 需求背景、当前现状、期望实现的功能内容、具体的设计方案、以及测试方案
1.概述
1.1简介
当前taskqueue的设置为一个常量(一次性从环境变量读取后不允许更改),由于taskqueue=2的独立内存池设计暂时无法支持ACLgraph,本提案支持在Python侧灵活控制taskqueue设置的能力,具体为:
(1) 新增Python接口用户设置和获取taskqueue状态值(一个原子变量,默认-1),设置时需要清queue;
(2) 在get_task_enable的公共接口中,先读取该全局变量的值,如果为非-1,则以该值的结果为准,不再从环境变量读取;
(3) 环境变量的读取仍然是一次性的返回常量,保证默认状态下的性能
(4) 多个场景下的泛化测试和验证(多线程、perstream queue、ACLgraph和训练混用、确定性计算、taskqueue=0、1/2...),对于验证无法支持的场景,明确做限制和说明
2.方案设计
2.1 总体方案
# 设置模式 torch.npu.set_task_queue_enable(0) # 关闭 task queue torch.npu.set_task_queue_enable(1) # Level 1 优化 (默认) torch.npu.set_task_queue_enable(2) # Level 2 优化 (纯推理) # 查询当前模式 mode = torch.npu.get_task_queue_enable() # 返回 0/1/22.2技术选型
3.测试方案
一、TestTaskQueueEnableEnv(功能测试)
test_blocking_overrideASCEND_LAUNCH_BLOCKING=1时强制 mode 为 0(非该环境自动跳过)test_invalid_mode-1/3/-2抛出RuntimeErrortest_mode_roundtrip_and_switchtest_npu_graph_capture_rejected_at_mode2RuntimeError)test_per_stream_queue_interaction_mode0PER_STREAM_QUEUE=1+ 动态切换 mode=0 运行正常test_deterministic_level_not_reset_by_mode_switch公共机制
setUp:保存当前 task queue 模式tearDown:恢复原始模式,保证测试隔离二、TestGetTaskQueueEnableTiming(性能测试)
test_get_task_queue_enable_timing_all_pathstest_get_task_queue_enable_call_latencytest_multithread_get_dispatch替代方案
欢迎加入社区,感谢您对社区的贡献 🎉!
补充说明
欢迎加入社区,感谢您对社区的贡献 🎉!
欢迎加入社区,感谢您对社区的贡献 🎉!