GPU测试
This commit is contained in:
200
.kiro/specs/fp16-benchmark-framework/tasks.md
Normal file
200
.kiro/specs/fp16-benchmark-framework/tasks.md
Normal file
@@ -0,0 +1,200 @@
|
||||
# 实现计划: FP16 性能评估 Benchmark 框架
|
||||
|
||||
## 概述
|
||||
|
||||
本实现计划将设计文档中的架构转化为可执行的编码任务。采用增量开发方式,每个任务都建立在前一个任务的基础上,确保代码始终可运行。使用 Python 作为实现语言,配合 TensorRT Python API、pynvml、OpenCV 等库。
|
||||
|
||||
## 任务
|
||||
|
||||
- [x] 1. 项目结构和基础配置
|
||||
- [x] 1.1 创建项目目录结构和核心模块文件
|
||||
- 创建 `benchmark/` 目录结构
|
||||
- 创建 `__init__.py`、`config.py`、`utils.py` 等基础文件
|
||||
- 创建 `requirements.txt` 依赖文件
|
||||
- _需求: 9.1, 9.4_
|
||||
- [x] 1.2 实现配置数据模型和 YAML 解析
|
||||
- 实现 `BenchmarkConfig` 数据类
|
||||
- 实现 YAML 配置文件加载和验证
|
||||
- 实现默认配置生成
|
||||
- _需求: 9.1, 9.3, 9.4_
|
||||
- [x] 1.3 实现命令行参数解析
|
||||
- 使用 argparse 实现命令行接口
|
||||
- 实现参数覆盖配置文件逻辑
|
||||
- 实现 --help 帮助信息
|
||||
- _需求: 9.2, 9.5_
|
||||
- [ ]* 1.4 编写配置验证属性测试
|
||||
- **Property 13: 配置参数验证**
|
||||
- **验证: 需求 9.6**
|
||||
|
||||
- [x] 2. TensorRT Engine 构建模块
|
||||
- [x] 2.1 实现 TRTEngineBuilder 类
|
||||
- 实现 YOLOv11n 模型到 ONNX 的导出
|
||||
- 实现 ONNX 到 TensorRT FP16 Engine 的转换
|
||||
- 支持动态 Batch Size (1-16) 和多分辨率 (320, 480)
|
||||
- _需求: 1.1, 1.3, 1.5_
|
||||
- [x] 2.2 实现 Engine 缓存和元数据管理
|
||||
- 实现 `EngineMetadata` 数据类
|
||||
- 实现 Engine 文件哈希校验
|
||||
- 实现缓存命中判断逻辑
|
||||
- _需求: 1.2, 1.6_
|
||||
- [ ]* 2.3 编写 Engine 构建属性测试
|
||||
- **Property 1: TensorRT Engine 构建往返一致性**
|
||||
- **验证: 需求 1.1**
|
||||
- [ ]* 2.4 编写动态 Batch Size 属性测试
|
||||
- **Property 2: 动态 Batch Size 推理正确性**
|
||||
- **验证: 需求 1.3**
|
||||
|
||||
- [ ] 3. 检查点 - 确保 Engine 构建模块正常工作
|
||||
- 确保所有测试通过,如有问题请询问用户。
|
||||
|
||||
- [x] 4. TensorRT 推理引擎模块
|
||||
- [x] 4.1 实现 TRTInferenceEngine 类
|
||||
- 实现 Engine 加载和上下文创建
|
||||
- 实现多 CUDA Stream 管理
|
||||
- 实现 GPU 内存分配和绑定
|
||||
- _需求: 1.4, 3.3, 3.4_
|
||||
- [x] 4.2 实现异步推理接口
|
||||
- 实现 `infer_async()` 方法
|
||||
- 实现 `get_results()` 方法
|
||||
- 实现 Stream 同步逻辑
|
||||
- _需求: 3.3, 3.5_
|
||||
- [ ]* 4.3 编写多 Stream 并行属性测试
|
||||
- **Property 6: 多 CUDA Stream 并行加速**
|
||||
- **验证: 需求 3.5**
|
||||
|
||||
- [x] 5. 视频解码模块
|
||||
- [x] 5.1 实现 DecodeThread 类
|
||||
- 实现 RTSP 流解码线程
|
||||
- 实现本地视频文件解码
|
||||
- 实现合成图像源生成
|
||||
- _需求: 2.1, 2.5, 10.1, 10.2_
|
||||
- [x] 5.2 实现帧队列管理
|
||||
- 实现可配置长度的帧队列
|
||||
- 实现队列满时的丢帧策略
|
||||
- 实现解码统计信息采集
|
||||
- _需求: 2.2, 2.3, 2.4_
|
||||
- [x] 5.3 实现错误恢复和重连逻辑
|
||||
- 实现 RTSP 断连检测
|
||||
- 实现自动重连机制
|
||||
- 实现视频循环播放
|
||||
- _需求: 2.6, 10.5_
|
||||
- [ ]* 5.4 编写解码线程属性测试
|
||||
- **Property 3: 解码线程数量不变性**
|
||||
- **Property 4: 帧队列数据流完整性**
|
||||
- **验证: 需求 2.1, 2.2, 2.4**
|
||||
- [ ]* 5.5 编写模拟源帧率属性测试
|
||||
- **Property 14: 模拟源帧率控制精度**
|
||||
- **验证: 需求 10.3**
|
||||
|
||||
- [ ] 6. 检查点 - 确保解码模块正常工作
|
||||
- 确保所有测试通过,如有问题请询问用户。
|
||||
|
||||
- [x] 7. Batch 组装和 GPU 预处理模块
|
||||
- [x] 7.1 实现 GPUPreprocessor 类
|
||||
- 实现 GPU 加速的 resize 操作
|
||||
- 实现 BGR 到 RGB 转换和归一化
|
||||
- 实现批量预处理接口
|
||||
- _需求: 3.6_
|
||||
- [x] 7.2 实现 BatchAssembler 类
|
||||
- 实现从多队列取帧逻辑
|
||||
- 实现 Batch 组装和填充
|
||||
- 实现帧丢失统计
|
||||
- _需求: 3.1, 3.2_
|
||||
- [ ]* 7.3 编写 Batch 组装属性测试
|
||||
- **Property 5: Batch 组装大小正确性**
|
||||
- **验证: 需求 3.1**
|
||||
|
||||
- [x] 8. 指标采集模块
|
||||
- [x] 8.1 实现 GPU 指标采集器
|
||||
- 使用 pynvml 采集 GPU 利用率
|
||||
- 采集显存占用和带宽利用率
|
||||
- 实现采样间隔配置
|
||||
- _需求: 5.1, 5.2, 5.3, 5.4, 5.5_
|
||||
- [x] 8.2 实现性能指标采集器
|
||||
- 实现延迟记录和统计
|
||||
- 实现吞吐量计算
|
||||
- 实现帧丢失率计算
|
||||
- _需求: 6.1, 6.2, 6.3, 6.4, 6.5, 6.6_
|
||||
- [x] 8.3 实现 MetricsCollector 统一接口
|
||||
- 整合 GPU 和性能指标
|
||||
- 实现统计值计算(平均、最大、最小、P95)
|
||||
- 实现指标导出接口
|
||||
- _需求: 5.6_
|
||||
- [ ]* 8.4 编写 GPU 指标属性测试
|
||||
- **Property 8: GPU 指标采集有效性**
|
||||
- **验证: 需求 5.1, 5.2, 5.3, 5.4, 5.6**
|
||||
- [ ]* 8.5 编写性能指标属性测试
|
||||
- **Property 9: 性能指标计算正确性**
|
||||
- **Property 10: 吞吐量计算一致性**
|
||||
- **验证: 需求 6.1, 6.2, 6.3, 6.4, 6.5**
|
||||
|
||||
- [ ] 9. 检查点 - 确保指标采集模块正常工作
|
||||
- 确保所有测试通过,如有问题请询问用户。
|
||||
|
||||
- [x] 10. Benchmark 主控程序
|
||||
- [x] 10.1 实现 BenchmarkRunner 类
|
||||
- 实现组件初始化和协调
|
||||
- 实现单次测试执行流程
|
||||
- 实现预热和稳定期处理
|
||||
- _需求: 4.5_
|
||||
- [x] 10.2 实现批量测试模式
|
||||
- 实现参数组合生成
|
||||
- 实现测试矩阵遍历
|
||||
- 实现进度显示和中断处理
|
||||
- _需求: 4.1, 4.2, 4.3, 4.4, 4.6_
|
||||
- [x] 10.3 实现 GPU 饱和检测
|
||||
- 实现饱和判定逻辑
|
||||
- 实现饱和点标注
|
||||
- 实现饱和原因记录
|
||||
- _需求: 7.3_
|
||||
- [ ]* 10.4 编写测试参数组合属性测试
|
||||
- **Property 7: 测试参数组合完整性**
|
||||
- **验证: 需求 4.6**
|
||||
- [ ]* 10.5 编写 GPU 饱和标注属性测试
|
||||
- **Property 12: GPU 饱和标注正确性**
|
||||
- **验证: 需求 7.3**
|
||||
|
||||
- [x] 11. 结果输出和报告生成模块
|
||||
- [x] 11.1 实现结果数据模型
|
||||
- 实现 `TestResult` 数据类
|
||||
- 实现结果序列化方法
|
||||
- _需求: 7.1, 7.2_
|
||||
- [x] 11.2 实现 JSON 和 CSV 导出
|
||||
- 实现 JSON 格式输出
|
||||
- 实现 CSV 格式输出
|
||||
- 实现文件命名和目录管理
|
||||
- _需求: 7.1, 7.2_
|
||||
- [x] 11.3 实现 Markdown 报告生成
|
||||
- 实现性能对比表格生成
|
||||
- 实现 GPU 饱和临界点分析
|
||||
- 实现参数选型建议生成
|
||||
- _需求: 7.4, 7.5, 7.6, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6_
|
||||
- [ ]* 11.4 编写结果序列化属性测试
|
||||
- **Property 11: 结果序列化往返一致性**
|
||||
- **验证: 需求 7.1**
|
||||
|
||||
- [x] 12. 集成和主入口
|
||||
- [x] 12.1 实现主入口脚本
|
||||
- 创建 `main.py` 入口文件
|
||||
- 整合所有模块
|
||||
- 实现完整的 Benchmark 流程
|
||||
- _需求: 4.5, 9.2_
|
||||
- [x] 12.2 实现混合视频源支持
|
||||
- 实现 RTSP 和模拟源混合配置
|
||||
- 实现源类型自动检测
|
||||
- _需求: 10.4, 10.6_
|
||||
- [ ]* 12.3 编写端到端集成测试
|
||||
- 测试单摄像头完整流程
|
||||
- 测试多摄像头并发场景
|
||||
- 测试结果输出完整性
|
||||
|
||||
- [ ] 13. 最终检查点 - 确保所有测试通过
|
||||
- 确保所有测试通过,如有问题请询问用户。
|
||||
|
||||
## 注意事项
|
||||
|
||||
- 标记为 `*` 的任务为可选任务,可跳过以加快 MVP 开发
|
||||
- 每个任务都引用了具体的需求编号以确保可追溯性
|
||||
- 检查点任务用于确保增量验证
|
||||
- 属性测试验证通用正确性属性
|
||||
- 单元测试验证具体示例和边界情况
|
||||
Reference in New Issue
Block a user