Skip to content

APITest 测试基建:统一参数校验与 sanitizer 输出#656

Merged
cangtianhuang merged 5 commits into
PFCCLab:mainfrom
cangtianhuang:fix/enginev4-single-options
Jun 22, 2026
Merged

APITest 测试基建:统一参数校验与 sanitizer 输出#656
cangtianhuang merged 5 commits into
PFCCLab:mainfrom
cangtianhuang:fix/enginev4-single-options

Conversation

@cangtianhuang

Copy link
Copy Markdown
Collaborator

🧭 背景

  • engineV2.pyengineV4.py 都支持通过 --api_config 直接运行单条 API 配置,但 GPU 参数解析、错误提示和返回行为不完全一致
  • engineV4.py 额外支持 compute-sanitizer 包裹执行,单条用例场景下需要和普通执行路径保持一致的 GPU 选择与参数校验体验

🛠️ 实现方案

  • 在 V2/V4 中统一 GPU 参数解析与校验边界,将参数错误统一为 [argument error],兼容性提示统一为 [argument warning]
  • 为 single-case 执行路径增加独立 GPU 准备逻辑,确保只允许绑定一张 GPU,并把选中的设备写入 CUDA_VISIBLE_DEVICES
  • single-case sanitizer 由父进程捕获子进程输出;当 compute-sanitizer 返回错误码时过滤误导性的 [Pass] 行,保留 sanitizer error summary 并输出明确错误摘要

🔧 主要变更

1. 统一 GPU 参数解析与错误提示

  • 新增统一的参数错误与参数 warning 前缀,区分 CLI 参数问题和测试运行结果日志
  • 统一 --gpu_ids 解析,支持单个 id、逗号列表、闭区间 range 和 -1 全选
  • 对重复 GPU、越界 GPU、非法 range、-1 与显式 id 混用、空列表等场景输出带上下文的错误信息
  • --num_gpus--num_workers_per_gpu--required_memory 的非法取值输出包含当前值和期望范围的错误信息

2. 修复 single-case GPU 选择行为

  • --api_config 单条运行时,GPU 模式只允许解析出一张设备
  • 当指定单张 GPU 时,将该 GPU 写入 CUDA_VISIBLE_DEVICES,确保 V2/V4 single-case 路径使用用户指定设备
  • CPU 模式下跳过 GPU 参数准备,避免不必要的设备校验

3. 完善 V4 single-case sanitizer 行为

  • single-case sanitizer 执行前复用统一 GPU 校验逻辑
  • sanitizer command 增加空命令、引号解析失败、可执行文件不存在等参数错误提示
  • compute-sanitizer 返回错误码时过滤子进程中的 [Pass] 行,保留真实 sanitizer 错误输出并打印明确失败摘要

4. 优化 CLI help 文案

  • 统一 V2/V4 通用参数描述,使 --api_config_file--api_config_file_pattern--api_config、GPU/worker 参数和测试模式参数更直观
  • --use_cached_numpy 的布尔解析调整为更符合 CLI 直觉的显式布尔解析
  • V4 sanitizer 参数文案保持 V4-only,但语气和通用参数保持一致

📁 改动文件

类别 文件 功能说明
Engine 参数与校验 engineV2.py 统一参数错误前缀、GPU 参数解析校验、single-case GPU 准备逻辑和 CLI help 文案
Engine 参数与 sanitizer engineV4.py 同步 V2 通用参数校验风格,并完善 single-case sanitizer command 校验与错误输出过滤

@cangtianhuang cangtianhuang enabled auto-merge (squash) June 22, 2026 13:47
@cangtianhuang cangtianhuang merged commit a1a9879 into PFCCLab:main Jun 22, 2026
1 check passed
@cangtianhuang cangtianhuang deleted the fix/enginev4-single-options branch June 22, 2026 13:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant