kernel_eval 模块架构图
整体架构
┌─────────────────────────────────────────────────────────────────────────────┐
│ CLI 入口层 │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ cli.py │ │
│ │ 命令: eval | list | info | config | eval-child | simulate │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ simulation.py │ │
│ │ CPU 仿真评测入口(独立入口 / eval --device cpu 等价) │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 配置 + 版本层 │
│ ┌──────────────────────────┐ ┌──────────────────────────────────────┐ │
│ │ config.py │ │ _version.py │ │
│ │ Config 数据类: │ │ FRAMEWORK_VERSION (VERSION 文件) │ │
│ │ - device_type/warmup │ │ TASKS_VERSION (tasks/VERSION) │ │
│ │ - bench_name/checker │ │ │ │
│ │ - eval_seed │ │ │ │
│ │ - torch_op_guard_mode │ │ │ │
│ │ - perf_metric_strategy │ │ │ │
│ │ - enable_accuracy_retry │ │ │ │
│ └──────────────────────────┘ └──────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ Registry 层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │LoaderRegistry│ │GoldenRegistry│ │MatcherRegistry│ │CheckerRegistry│ │
│ │ Loader注册 │ │ Golden注册 │ │ Matcher注册 │ │ Checker注册 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ScoringRegistry│ │CaseSpecRegistry│ │PerfStrategyReg│ │ BenchRegistry │ │
│ │ Scoring注册 │ │ CaseSpec注册 │ │ 性能策略注册 │ │ BenchConfig │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │ 评测集聚合配置│ │
│ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ Base 层(基类) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ models.py │ │ result.py │ │ loaders.py │ │ checker.py │ │
│ │ TaskSpec │ │ AccuracyResult│ │ TaskLoader │ │ Checker基类 │ │
│ │ CaseSpec │ │ PerfResult │ │ CaseLoader │ │ │ │
│ │ InputSpec │ │ OutputResult │ │ GoldenLoader │ │ │ │
│ │ OutputSpec │ │ (ABC+注册表) │ │ OperatorDir │ │ │ │
│ │ SolutionSpec │ │ │ │ │ │ │ │
│ │ AttrSpec │ │ │ │ │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ ┌─────────────────────────────────┐ │
│ │ matcher.py │ │ scoring.py │ │ perf_strategy.py │ │
│ │ MatcherBase │ │ ScoringBase │ │ PerfMetricStrategy ABC │ │
│ │ │ │ CaseScoreInfo│ │ ProfFileLocations │ │
│ └──────────────┘ └──────────────┘ │ KernelDetailsStrategy (默认) │ │
│ │ TraceViewStrategy (PYPTO) │ │
│ ┌──────────────┐ │ MsProfSummaryStrategy (采集) │ │
│ │ enums.py │ │ Warmup过滤 / CSV/trace解析 │ │
│ │ 枚举定义 │ └─────────────────────────────────┘ │
│ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ Benches 层(CANN + Stanford 多评测集) │
│ ┌─────────────────────────────── CANN 评测集 ──────────────────────────┐ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │cann_loader.py│ │ cann_spec.py │ │cann_matcher.py│ │ │
│ │ │CannTaskLoader│ │CannTaskSpec │ │OperatorMatcher│ │ │
│ │ │CannCaseLoader│ │CannCaseSpec │ │ │ │ │
│ │ │GoldenLoader │ │CannInputSpec │ │ │ │ │
│ │ │ │ │CannOutputSpec│ │ │ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐ │ │
│ │ │cann_scoring.py│ │cann_solution │ │ cann.py │ │ │
│ │ │CannScoringSch│ │CannSolution │ │ 导出 + Bench注册(入口) │ │ │
│ │ │SimpleCompar. │ │ │ │ │ │ │
│ │ │RecordingOnly │ │ │ │ │ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────────────────┘ │
│ ┌───────────────────── Stanford 评测集 ──────────────────────────────┐ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │stanford_loader│ │stanford_matcher│ │stanford_scoring│ │ │
│ │ │StanfordTaskL │ │StanfordMatch │ │StanfordScoring│ │ │
│ │ │StanfordCaseL │ │ │ │ │ │ │
│ │ │StanfordGolden│ │ │ │ │ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │
│ │ ┌──────────────────────────────────────────────────────────────┐ │ │
│ │ │ stanford.py │ │ │
│ │ │ 导出 + Registry 注册 │ │ │
│ │ └──────────────────────────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ Checkers 层(通用精度判断器,不绑定评测集) │
│ ┌──────────────────────────────┐ ┌──────────────────────────────┐ │
│ │ relative_error_checker.py │ │ allclose_checker.py │ │
│ │ RelativeErrorChecker │ │ AllCloseChecker │ │
│ │ RelativeErrorOutputResult │ │ AllCloseOutputResult │ │
│ │ (MERE/MARE + 小值域 + 相消) │ │ (torch.allclose 简化) │ │
│ │ 注册名: relative_error │ │ 注册名: allclose │ │
│ │ 兼容名: cann_default │ │ │ │
│ └──────────────────────────────┘ └──────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 评测核心层 │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ eval/evaluator.py │ │
│ │ 综合评测调度器(BenchConfig 依赖注入) │ │
│ │ Golden 精度策略三档 + 渐进设备恢复 │ │
│ │ 增量输出(OOM恢复) + 防作弊二次验证 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌───────────────────────────┼───────────────────────────┐ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ accuracy_eval│ │ perf_eval │ │ op_runner │ │
│ │ 精度评测 │ │ 性能评测 │ │ 算子执行 │ │
│ │ Checker三输入│ │ Strategy解析│ │ TorchOpGuard│ │
│ │ AI/Golden/ │ │ ProfFileLoc │ │ 返回值检查 │ │
│ │ 同精度参考 │ │ │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │
│ ┌───────────────────────────┼───────────────────────────┐ │
│ ▼ ▼ ▼ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ process_pool │ │input_pool │ │ results │ │
│ │ 进程池协调 │ │ 输入池管理 │ │ 结果数据 │ │
│ │ (TaskUnit调度│ │ (防缓存攻击) │ │ (failure_type│ │
│ │ eval-child) │ │ │ │ 增量输出) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ failure_synthesizer + subprocess_utils │ │
│ │ 失败合成(编译/安全/OOM) + OOM保护 + 部分结果恢复 │ │
│ └──────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 数据工具层 │
│ ┌──────────────┐ ┌──────────────────────────────────────────────────┐ │
│ │data_generator│ │ package_manager │ │
│ │ 数据生成 │ │ 包管理(迭代隔离编译、安装、接口扫描) │ │
│ │ (确定性种子) │ │ │ │
│ └──────────────┘ └──────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 工具支持层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │device_manager│ │param_builder │ │path_resolver │ │baseline_resolver│ │
│ │ 设备管理 │ │ 参数构建 │ │ 路径解析 │ │ 基线解析 │ │
│ │ (渐进恢复) │ │ (签名解析) │ │ (task-dir) │ │ (多硬件) │ │
│ │ light→full │ │ │ │ │ │ (平台别名) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │baseline_store│ │ compare │ │tensor_utils │ │ naming │ │
│ │ 集中存储 │ │ 张量对比 │ │ Tensor工具 │ │ 命名转换 │ │
│ │ metadata/json│ │ (MERE/MARE+ │ │ (FP64/CPU) │ │ (Pascal→snake│ │
│ │ 多平台fallback│ │ 小值域+相消) │ │ │ │ 多候选) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │dtype_mapper │ │ thresholds │ │
│ │ 类型映射 │ │ 精度阈值 │ │
│ │ (str→dtype) │ │ (单一来源) │ │
│ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 报告生成层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │report_generator│ │html_generator│ │ scoring │ │ setup_info │ │
│ │ 报告生成 │ │ HTML渲染 │ │ 评分计算 │ │ 配置采集 │ │
│ │ (JSON/MD/ │ │ (KPI+柱状图 │ │ (Eq.3/4/5) │ │ (NPU/CANN/ │ │
│ │ Summary) │ │ 认证印章) │ │ │ │ PyTorch版本)│ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │
│ ┌──────────────┐ │
│ │summary_gen │ │
│ │ Summary生成 │ │
│ │ (几何平均) │ │
│ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 安全防护层 │
│ ┌──────────────────────────────────────────────────────────────────────┐ │
│ │ api_guard │ │
│ │ Timing API 防护(快照+验证+恢复) │ │
│ └──────────────────────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────────────────────┐ │
│ │ torch_op_guard │ │
│ │ Torch 算子守卫(TorchFunctionMode + 多路径规约) │ │
│ │ 模式: off / warn / block;pause() 机制排除预热调用 │ │
│ └──────────────────────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────────────────────┐ │
│ │ type_checker │ │
│ │ 返回值类型检查(type() is torch.Tensor,拒绝 FakeTensor)│ │
│ └──────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
目录结构
src/kernel_eval/
├── __init__.py # 包入口,导出 Config + 版本号
├── cli.py # CLI 命令入口(eval/list/info/config/eval-child/simulate)
├── config.py # 全局配置(Config 数据类 + 全局配置实例)
├── simulation.py # CPU 仿真评测模块
├── _version.py # 版本管理(从 VERSION 文件动态读取)
│
├── base/ # 基类层(抽象定义,无特化依赖)
│ ├── __init__.py # 导出所有基类
│ ├── enums.py # DifficultyLevel, BackendType, SourceType, GoldenReference, EvaluationMode
│ ├── models.py # AttrSpec, InputSpec, OutputSpec, TaskSpec, CaseSpec, SolutionSpec
│ ├── result.py # OutputResult(ABC+注册表), AccuracyResult, PerfResult, compute_speedup
│ ├── loaders.py # TaskLoader, CaseLoader, GoldenLoaderBase, OperatorDirMixin
│ ├── checker.py # CorrectnessChecker (抽象基类)
│ ├── matcher.py # OperatorMatcherBase (抽象基类)
│ ├── scoring.py # ScoringScheme, CaseScoreInfo (抽象基类)
│ └── perf_strategy.py # PerfMetricStrategy ABC, ProfFileLocations,
│ # KernelDetailsStrategy, TraceViewStrategy, MsProfSummaryStrategy
│ # warmup过滤/CSV/trace_view/msprof解析函数
│
├── benches/ # 评测集插件层(CANN + Stanford 多评测集)
│ ├── __init__.py # 聚合导入,导入所有评测集模块触发注册
│ ├── cann.py # 导出 + Registry 注册(核心入口)
│ ├── cann_loader.py # CannTaskLoader, CannCaseLoader, GoldenLoader
│ ├── cann_spec.py # CannTaskSpec, CannCaseSpec, CannInputSpec, CannOutputSpec
│ ├── cann_matcher.py # OperatorMatcher(torch.ops.cann_bench 或 cann_bench 模块)
│ ├── cann_scoring.py # CannScoringScheme, SimpleComparisonScheme, RecordingOnlyScheme
│ # ScoringCalculator, OperatorScoreInfo, per_case_sol_score, aggregate_eq4
│ ├── cann_solution.py # CannSolutionSpec
│ ├── stanford.py # 导出 + Registry 注册
│ ├── stanford_loader.py # StanfordTaskLoader, StanfordCaseLoader, StanfordGoldenLoader
│ ├── stanford_matcher.py # StanfordMatcher
│ └── stanford_scoring.py # StanfordScoringScheme
│
├── checkers/ # Checker 层(通用精度判断器,不绑定评测集)
│ ├── __init__.py
│ ├── relative_error_checker.py # RelativeErrorChecker, RelativeErrorOutputResult
│ │ # 注册名: relative_error + 兼容名 cann_default
│ └── allclose_checker.py # AllCloseChecker, AllCloseOutputResult
│ # 注册名: allclose
│
├── registry/ # 注册机制层
│ ├── __init__.py # 导出所有 Registry + 便捷获取函数
│ ├── base.py # BaseRegistry (泛型基类: register/get/list_all/clear)
│ ├── loader_registry.py # LoaderRegistry: TaskLoader/CaseLoader 注册
│ ├── golden_registry.py # GoldenLoaderRegistry: GoldenLoader 注册
│ ├── matcher_registry.py # OperatorMatcherRegistry: Matcher 注册
│ ├── checker_registry.py # CheckerRegistry: Checker 注册
│ ├── scoring_registry.py # ScoringSchemeRegistry: ScoringScheme 注册
│ ├── case_spec_registry.py # CaseSpecRegistry: CaseSpec 子类注册
│ ├── perf_strategy_registry.py # PerfStrategyRegistry: 性能策略注册
│ └── bench_registry.py # BenchRegistry + BenchConfig(评测集配置聚合)
│ # get_bench_config, get_bench_components
│
├── data/ # 数据工具层
│ ├── __init__.py # 导出 DataGenerator + PackageManager
│ ├── data_generator.py # DataGenerator (确定性种子 tensor 生成)
│ └── package_manager.py # PackageManager (迭代隔离编译、安装、接口扫描)
│ # PackageInfo, InterfaceInfo
│
├── eval/ # 评测执行层
│ ├── __init__.py # 导出所有评测组件
│ ├── evaluator.py # Evaluator (综合调度: BenchConfig依赖注入 + 渐进设备恢复
│ # 增量输出 + 防作弊二次验证 + Golden精度策略)
│ ├── op_runner.py # OpRunner (算子执行器: TorchOpGuard + 返回值检查)
│ ├── accuracy_eval.py # AccuracyEvaluator (精度评测: Checker三输入模式)
│ ├── perf_eval.py # PerfEvaluator (性能评测: Profiler + Strategy委托解析)
│ ├── results.py # EvalCaseResult, EvalOperatorResult, EvalSessionResult
│ # summarize_case_results, CaseResultSummary, failure_type
│ ├── input_pool.py # InputPool (防缓存攻击: clone池 + 内存限制)
│ ├── process_pool.py # ProcessPoolCoordinator (多卡并行: TaskUnit调度)
│ # ProcessConfig, TaskUnit, build_task_units
│ ├── failure_synthesizer.py # FailureSynthesizer (编译/安全/子进程/OOM 失败合成)
│ └── subprocess_utils.py # OOM保护 + CANN环境变量 + 部分结果恢复
│ # _write_oom_score_adj, _is_oom_killed, _try_recover_partial_results
│
├── report/ # 报告生成层
│ ├── __init__.py
│ ├── report_generator.py # ReportGenerator (JSON+Markdown+Summary+HTML 多格式)
│ │ # EvalReport, OperatorReport; 语义前缀命名
│ ├── html_generator.py # render_html_report (4Section + KPI + 柱状图 + 认证印章)
│ ├── scoring.py # per_case_sol_score (Eq.3), aggregate_eq4 (Eq.4)
│ │ # _fallback_baseline_from_hw
│ ├── summary_generator.py # SummaryGenerator (几何平均加速比)
│ └── setup_info.py # collect_setup_info (metadata + environment 采集)
│
├── utils/ # 工具层
│ ├── __init__.py
│ ├── device_manager.py # DeviceManager, DeviceConfig (渐进恢复: light→full→unrecoverable)
│ ├── param_builder.py # ParamBuilder (签名解析 + 参数构建)
│ ├── path_resolver.py # 路径解析
│ ├── baseline_resolver.py # BaselineResolver (多硬件 dict + 平台别名映射)
│ ├── baseline_store.py # BaselineStore (metadata/<hw>.json 集中存储 + 多平台 fallback)
│ ├── compare.py # compare_tensors (MERE/MARE+小值域+相消+整数精确匹配)
│ │ # SingleOutputResult, CompareResult
│ ├── thresholds.py # PRECISION_THRESHOLDS (精度阈值表,单一事实来源)
│ ├── dtype_mapper.py # dtype 映射 (str→dtype)
│ ├── tensor_utils.py # tensors_to_cpu, tensors_to_fp64_cpu
│ └── naming.py # camel_to_snake, snake_case_candidates (多候选模糊匹配)
│
└── security/ # 安全防护层
├── __init__.py
├── api_guard.py # APIGuard (Timing API 快照+验证+恢复)
├── torch_op_guard.py # TorchOpGuard (TorchFunctionMode + 多路径规约 + pause)
│ # BUILTIN_COMPUTE_OPS, _LEAF_TO_CANONICAL
└── type_checker.py # 返回值类型检查
模块职责详解
1. Base 层 (base/)
基类定义,提供抽象接口和通用数据结构:
┌─────────────────────────────────────────────────────────────────┐
│ base/ │
│ 基类定义层 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ enums.py: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ DifficultyLevel - L1/L2/L3/L4 (难度级别) │ │
│ │ BackendType - torch/torch_npu/ascendc/… (后端) │ │
│ │ SourceType - file/code/module/generated │ │
│ │ GoldenReference - file/self/fp64_cpu/none │ │
│ │ EvaluationMode - accuracy/performance/full │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ models.py: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ AttrSpec - 算子属性规格 │ │
│ │ TaskSpec - 任务规格基类 (含 category/precision_thresholds) │ │
│ │ CaseSpec - 用例规格基类 (含 baseline_perf_us/t_hw_us) │ │
│ │ InputSpec - 输入规格基类 │ │
│ │ OutputSpec - 输出规格基类 (含 compare 标记) │ │
│ │ SolutionSpec - 解决方案规格基类 │ │
│ │ 全部支持 to_dict/from_dict 序列化 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ result.py: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ OutputResult (ABC) - 单输出结果基类 │ │
│ │ + 注册表: register_output_result / get_output_result_cls│ │
│ │ AccuracyResult - 精度结果 (passed/output_results/metadata) │ │
│ │ PerfResult - 性能结果 (elapsed_us/op_times) │ │
│ │ + 便捷方法: get_speedup/get_baseline_us/get_t_hw_us │ │
│ │ compute_speedup - 加速比计算函数 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ loaders.py: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ TaskLoader - 任务加载器 ABC (list_tasks/get_task)│ │
│ │ CaseLoader - 用例加载器 ABC (scan_all/scan_by_task)│ │
│ │ GoldenLoaderBase - Golden 加载器 ABC │ │
│ │ (get_golden_function / get_input_function / │ │
│ │ get_output_function) │ │
│ │ OperatorDirMixin - 算子目录扫描 (proto+cases+golden) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ checker.py: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ CorrectnessChecker - 精度判断器 ABC │ │
│ │ (get_name / check 三输入模式) │ │
│ │ 辅助: _normalize_outputs / _ensure_cpu / │ │
│ │ _check_output_count │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ matcher.py: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ OperatorMatcherBase - AI 算子匹配器 ABC │ │
│ │ (load_ai_operator / find_operator_info / clear_cache)│ │
│ │ (find_operator_info_by_snake — snake 反查) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ scoring.py: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ ScoringScheme - 评分方案 ABC │ │
│ │ (prepare_baseline / calculate_case_score / aggregate) │ │
│ │ CaseScoreInfo - 用例级得分信息 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ perf_strategy.py: │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ PerfMetricStrategy - 性能指标策略 ABC │ │
│ │ (parse / get_strategy_name) │ │
│ │ ProfFileLocations - 文件定位结果 (csv/trace/msprof) │ │
│ │ KernelDetailsStrategy - 默认策略 (CSV唯一源) │ │
│ │ TraceViewStrategy - PYPTO口径 (待收编) │ │
│ │ MsProfSummaryStrategy - 基准采集 (CSV→msprof fallback) │ │
│ │ 共享函数: │ │
│ │ extract_warmup_names_from_csv / parse_trace_view_ │ │
│ │ kernels / parse_csv_kernels / parse_tilefwk_metrics │ │
│ │ parse_msprof_op_summary │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
2. Benches 层 (benches/)
多评测集插件实现,每个评测集独立注册:
┌─────────────────────────────────────────────────────────────────────────────┐
│ benches/ 模块架构 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────── CANN 评测集 ────────────────────────────────────┐ │
│ │ cann.py(核心入口): │ │
│ │ ┌───────────────────────────────────────────────────────────────┐ │ │
│ │ │ 1. 导入所有 CANN 特化组件 │ │ │
│ │ │ 2. 注册到 Registry(Loader/Golden/Matcher/Checker/Scoring/ │ │ │
│ │ │ CaseSpec/PerfStrategy/BenchConfig("cann")) │ │ │
│ │ │ 3. 执行注册 _register_cann_components() │ │ │
│ │ └───────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ cann_loader.py: │ │
│ │ ┌───────────────────────────────────────────────────────────────┐ │ │
│ │ │ CannTaskLoader - CANN 任务加载器 (proto.yaml 解析) │ │ │
│ │ │ CannCaseLoader - CANN 用例加载器 (cases.yaml 解析+校验) │ │ │
│ │ │ GoldenLoader - Golden 函数加载器 (动态导入+命名转换) │ │ │
│ │ └───────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ cann_spec.py: │ │
│ │ ┌───────────────────────────────────────────────────────────────┐ │ │
│ │ │ CannTaskSpec - CANN 任务规格 (继承 TaskSpec) │ │ │
│ │ │ CannCaseSpec - CANN 用例规格 (继承 CaseSpec, │ │ │
│ │ │ 增加 baseline_perf_us dict / t_hw_us / golden_reference) │ │ │
│ │ │ CannInputSpec / CannOutputSpec / CannSolutionSpec │ │ │
│ │ └───────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ cann_matcher.py: │ │
│ │ ┌───────────────────────────────────────────────────────────────┐ │ │
│ │ │ OperatorMatcher - AI 算子匹配器 │ │ │
│ │ │ (torch.ops.cann_bench 或 cann_bench 模块加载) │ │ │
│ │ └───────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ cann_scoring.py: │ │
│ │ ┌───────────────────────────────────────────────────────────────┐ │ │
│ │ │ CannScoringScheme - hardware-anchored Eq.3/4/5 │ │ │
│ │ │ SimpleComparisonScheme - 加速比评分方案 │ │ │
│ │ │ RecordingOnlyScheme - 仅记录方案 │ │ │
│ │ │ ScoringCalculator / OperatorScoreInfo / per_case_sol_score │ │ │
│ │ │ aggregate_eq4 - Eq.4 聚合计算 │ │ │
│ │ └───────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ cann_solution.py: │ │
│ │ ┌───────────────────────────────────────────────────────────────┐ │ │
│ │ │ CannSolutionSpec - CANN 解决方案规格 (继承 SolutionSpec) │ │ │
│ │ └───────────────────────────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────── Stanford 评测集 ──────────────────────────────┐ │
│ │ stanford.py(核心入口): │ │
│ │ ┌───────────────────────────────────────────────────────────────┐ │ │
│ │ │ 注册到 Registry(BenchConfig("stanford")) │ │ │
│ │ └───────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ stanford_loader.py: │ │
│ │ ┌───────────────────────────────────────────────────────────────┐ │ │
│ │ │ StanfordTaskLoader / StanfordCaseLoader / StanfordGoldenLoader │ │
│ │ └───────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ stanford_matcher.py: │ │
│ │ ┌───────────────────────────────────────────────────────────────┐ │ │
│ │ │ StanfordMatcher │ │ │
│ │ └───────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ stanford_scoring.py: │ │
│ │ ┌───────────────────────────────────────────────────────────────┐ │ │
│ │ │ StanfordScoringScheme │ │ │
│ │ └───────────────────────────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
3. Checkers 层 (checkers/)
通用精度判断器,不与任何评测集绑定,通过注册机制供 BenchConfig 选择:
┌─────────────────────────────────────────────────────────────────────────────┐
│ checkers/ 模块架构 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ relative_error_checker.py: │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ RelativeErrorChecker - 相对误差精度判断器 │ │
│ │ (继承 CorrectnessChecker) │ │
│ │ │ │
│ │ 判断标准: │ │
│ │ - 浮点: MERE < threshold AND MARE < 10*threshold │ │
│ │ - 小值域: ErrorCount 比值标准 │ │
│ │ - 相消处理: CPU 同精度对照标准 │ │
│ │ - 整数: 精确匹配 │ │
│ │ - 多输出支持 │ │
│ │ │ │
│ │ RelativeErrorOutputResult: 逐输出详细结果 │ │
│ │ 注册名: relative_error + 兼容名 cann_default │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ allclose_checker.py: │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ AllCloseChecker - torch.allclose 简化对比 │ │
│ │ AllCloseOutputResult │ │
│ │ 注册名: allclose │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
4. Registry 层 (registry/)
注册机制,支持多评测集接入和组件动态选择:
┌─────────────────────────────────────────────────────────────────────────────┐
│ registry/ 模块架构 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ base.py: │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ BaseRegistry[T] - 泛型注册基类 │ │
│ │ register(name, item) / get(name) / list_all() / clear() │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ loader_registry.py: golden_registry.py: │
│ ┌───────────────────┐ ┌───────────────────┐ │
│ │ LoaderRegistry │ │ GoldenLoaderReg │ │
│ │ TaskLoader 注册 │ │ GoldenLoader 注册 │ │
│ │ CaseLoader 注册 │ │ │ │
│ │ get_task_loader │ │ get_golden_loader │ │
│ │ get_case_loader │ │ │ │
│ └───────────────────┘ └───────────────────┘ │
│ │
│ matcher_registry.py: checker_registry.py: │
│ ┌───────────────────┐ ┌───────────────────┐ │
│ │ MatcherRegistry │ │ CheckerRegistry │ │
│ │ Matcher 注册 │ │ Checker 注册 │ │
│ │ get_operator_match│ │ get_correctness_ │ │
│ │ │ │ register_correctn │ │
│ └───────────────────┘ └───────────────────┘ │
│ │
│ scoring_registry.py: case_spec_registry.py: │
│ ┌───────────────────┐ ┌───────────────────┐ │
│ │ ScoringRegistry │ │ CaseSpecRegistry │ │
│ │ ScoringScheme注册 │ │ CaseSpec 子类注册 │ │
│ │ get_scoring_scheme│ │ (反序列化用) │ │
│ └───────────────────┘ └───────────────────┘ │
│ │
│ perf_strategy_registry.py: │
│ ┌───────────────────┐ │
│ │ PerfStrategyReg │ │
│ │ 性能策略注册 │ │
│ │ get_perf_metric_ │ │
│ │ strategy │ │
│ └───────────────────┘ │
│ │
│ bench_registry.py: │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ BenchRegistry │ │
│ │ BenchConfig: │ │
│ │ - name: str (评测集名称) │ │
│ │ - task_loader: str (TaskLoader 注册名) │ │
│ │ - case_loader: str (CaseLoader 注册名) │ │
│ │ - golden_loader: str (GoldenLoader 注册名) │ │
│ │ - operator_matcher: str (Matcher 注册名) │ │
│ │ - scoring_scheme: str (ScoringScheme 注册名) │ │
│ │ - checker: str (Checker 注册名) │ │
│ │ - case_spec_cls: str (CaseSpec 子类注册名) │ │
│ │ - golden_precision: str (fp64_cpu/native_cpu/native_npu) │ │
│ │ - precision_thresholds: dict (自定义精度阈值) │ │
│ │ - perf_metric_strategy: str (kernel_details/trace_view/...) │ │
│ │ - default_tasks_root: str (默认数据目录) │ │
│ │ - description: str │ │
│ │ │ │
│ │ Methods: │ │
│ │ - get_task_loader(**kwargs) │ │
│ │ - get_case_loader(**kwargs) │ │
│ │ - get_golden_loader(**kwargs) │ │
│ │ - get_operator_matcher(operator_loader) │ │
│ │ - get_scoring_scheme() │ │
│ │ - get_checker() │ │
│ │ - get_case_spec_cls() │ │
│ │ - get_precision_thresholds() │ │
│ │ - get_perf_metric_strategy() │ │
│ │ │ │
│ │ 便捷函数: │ │
│ │ - get_bench_config(name) │ │
│ │ - get_bench_components(name, tasks_root) │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
5. 评测核心层 (eval/)
┌─────────────────────────────────────────────────────────────────────────────┐
│ eval/ 模块架构 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Evaluator (evaluator.py) │ │
│ │ 综合评测调度器 │ │
│ │ │ │
│ │ 构造: Config + BenchConfig 依赖注入 │ │
│ │ 通过 Registry 获取所有组件实例 │ │
│ │ │ │
│ │ evaluate_case(case): │ │
│ │ ┌─────────────────────────────────────────────────────────────┐ │ │
│ │ │ 1. 确定性种子 (SHA256 hash + eval_seed) │ │ │
│ │ │ 2. 生成输入张量 (DataGenerator, seed=case_seed) │ │ │
│ │ │ 2.5 get_input 预处理 (如有) │ │ │
│ │ │ 3. 构建调用参数 (ParamBuilder 或 golden 签名匹配) │ │ │
│ │ │ 4. Golden 执行 (精度策略: fp64_cpu/native_cpu/native_npu) │ │ │
│ │ │ 5. AI 算子执行 (TorchOpGuard 监听 + profiler 采集) │ │ │
│ │ │ 6. 同精度参考 (fp64_cpu时单独执行, 其他复用golden) │ │ │
│ │ │ 7. get_output 后处理 (如有, 对 golden/AI/同精度参考三路) │ │ │
│ │ │ 8. Checker 三输入模式 (AI/Golden/同精度参考) │ │ │
│ │ │ 8.5 防作弊二次验证 (enable_accuracy_retry, 偏移种子+微扰) │ │ │
│ │ │ 9. 性能数据 (从 profiler 运行中直接提取) │ │ │
│ │ │ 10. 生成 EvalCaseResult │ │ │
│ │ └─────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ run_cases(cases): 渐进设备恢复 │ │
│ │ ┌─────────────────────────────────────────────────────────────┐ │ │
│ │ │ healthy → recovering → unrecoverable │ │ │
│ │ │ 连续≥3失败 → recover_light → recover_full │ │ │
│ │ │ profiler活跃时不尝试 recover_full │ │ │
│ │ │ 增量输出: 每用例完成后写入 incremental_output_path │ │ │
│ │ └─────────────────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ OpRunner (op_runner.py) │ │
│ │ 算子执行器 │ │
│ │ │ │
│ │ run(func, params, ...) → OpRunResult (通用执行) │ │
│ │ run_ai_op(op_func, params, ...) → TorchOpGuard 监听 + profiler │ │
│ │ 返回值类型检查 + 设备迁移 │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────┐ ┌──────────────────────────────────┐ │
│ │ AccuracyEvaluator │ │ PerfEvaluator │ │
│ │ (accuracy_eval) │ │ (perf_eval) │ │
│ │ │ │ │ │
│ │ 精度对比: │ │ 性能采集: │ │
│ │ - Checker三输入 │ │ - Profiler 运行 │ │
│ │ - AI/Golden/ │ │ - 文件定位 (_locate_prof_files) │ │
│ │ 同精度参考 │ │ - 解析委托 PerfMetricStrategy │ │
│ │ - 注册机制选择 │ │ - 升频清cache + pause guard │ │
│ └──────────────────┘ └──────────────────────────────────┘ │
│ │
│ ┌──────────────────┐ ┌──────────────────────────────────┐ │
│ │ Results │ │ FailureSynthesizer │ │
│ │ (results) │ │ (failure_synthesizer) │ │
│ │ │ │ │ │
│ │ 数据结构: │ │ 失败结果合成: │ │
│ │ - EvalCaseResult│ │ - synthesize_compile_failure │ │
│ │ (failure_type)│ │ - synthesize_security_failure │ │
│ │ - EvalOperator │ │ - synthesize_subprocess_failure │ │
│ │ (compile_pass)│ │ - synthesize_oom_failure │ │
│ │ - EvalSession │ │ │ │
│ └──────────────────┘ └──────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ ProcessPoolCoordinator (process_pool.py) │ │
│ │ 进程池协调器 │ │
│ │ │ │
│ │ 多卡 × 多进程并行架构 (TaskUnit 调度): │ │
│ │ ┌────────────────────────────────────────────────────────────┐ │ │
│ │ │ TaskUnit = (算子, 用例组, device_id) │ │ │
│ │ │ 按 (算子×用例组) 均分到各卡 → 自然负载均衡 │ │ │
│ │ │ 子进程通过 eval-child 独立子命令执行 │ │ │
│ │ │ ThreadPoolExecutor + as_completed 动态调度 │ │ │
│ │ │ profiler 开启时每卡强制 1 进程 │ │ │
│ │ └────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ 异常处理: │ │
│ │ - 超时: SIGTERM → 10s → SIGKILL; 恢复部分结果 │ │
│ │ - OOM Kill: 恢复增量写入部分结果; 合成 oom_killed 失败 │ │
│ │ - 子进程异常退出: 合成 subprocess_failure 失败 │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────┐ ┌──────────────────────────────────┐ │
│ │ InputPool │ │ subprocess_utils │ │
│ │ (input_pool) │ │ (subprocess_utils) │ │
│ │ │ │ │ │
│ │ 防缓存攻击: │ │ OOM Killer 保护: │ │
│ │ - 预分配clone │ │ - _write_oom_score_adj │ │
│ │ - 轮换使用 │ │ - _is_oom_killed │ │
│ │ - 内存限制 │ │ CANN 环境变量继承: │ │
│ │ │ │ - _CANN_ENV_VARS │ │
│ │ │ │ 部分结果恢复: │ │
│ │ │ │ - _try_recover_partial_results │ │
│ │ │ │ - _synthesize_failure_cases │ │
│ └──────────────────┘ └──────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
6. 数据工具层 (data/)
┌─────────────────────────────────────────────────────────────────────────────┐
│ data/ 模块架构 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ data_generator.py: │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ DataGenerator │ │
│ │ - generate_input_tensors_from_case(input_shapes, dtypes, │ │
│ │ value_ranges, seed) │ │
│ │ - generate_tensor(shape, dtype, value_range, seed) │ │
│ │ - 确定性种子: hashlib SHA256 确保跨进程可复现 │ │
│ │ - 支持 FP64/CPU 生成 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ package_manager.py: │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ PackageManager │ │
│ │ - scan_source() → 扫描源码目录 │ │
│ │ - check_compile() → 检查编译状态 │ │
│ │ - build_whl/run() → 编译 whl 包和 run 包 │ │
│ │ - install() → 安装到环境 │ │
│ │ - scan_interfaces() → 扫描算子接口 │ │
│ │ - match_operators() → 匹配 tasks 算子定义 │ │
│ │ - prepare_from_source() → APIGuard.snapshot() + 完整流程 │ │
│ │ - prepare_skip_build() → 跳过编译直接评测 │ │
│ │ │ │
│ │ PackageInfo: 源码包信息 │ │
│ │ InterfaceInfo: 算子接口信息 │ │
│ │ │ │
│ │ 支持: │ │
│ │ - 迭代隔离编译(失败的算子隔离到 _quarantine/) │ │
│ │ - 多硬件 baseline 解析 │ │
│ │ - APIGuard snapshot 集成 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
7. 工具支持层 (utils/)
┌─────────────────────────────────────────────────────────────────────────────┐
│ utils/ 模块架构 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────┐ ┌───────────────────┐ │
│ │ DeviceManager │ │ ParamBuilder │ │
│ │ (device_manager) │ │ (param_builder) │ │
│ │ │ │ │ │
│ │ 功能: │ │ 功能: │ │
│ │ - 检测 NPU/CPU │ │ - 解析函数签名 │ │
│ │ - 设备切换 │ │ - 构建调用参数 │ │
│ │ - 张量迁移 │ │ - 处理 null 位 │ │
│ │ - health_check │ │ │ │
│ │ - 渐进恢复: │ │ │ │
│ │ recover_light │ │ │ │
│ │ recover_full │ │ │ │
│ │ │ │ │ │
│ │ API: │ │ API: │ │
│ │ get_device() │ │ build_call_params│ │
│ │ to_device() │ │ │ │
│ └───────────────────┘ └───────────────────┘ │
│ │
│ ┌───────────────────┐ ┌───────────────────┐ │
│ │ PathResolver │ │ BaselineResolver │ │
│ │ (path_resolver) │ │(baseline_resolver)│ │
│ │ │ │ │ │
│ │ 功能: │ │ 功能: │ │
│ │ - 解析 task-dir │ │ - 解析 baseline │ │
│ │ - 检测算子目录 │ │ - 多硬件 dict │ │
│ │ - 处理相对路径 │ │ - 平台别名映射 │ │
│ │ │ │ (Ascend910_9362→910b2) │
│ │ │ │ │ │
│ │ API: │ │ API: │ │
│ │ resolve_task_dir │ │ resolve_baseline │ │
│ └───────────────────┘ └───────────────────┘ │
│ │
│ ┌───────────────────┐ ┌───────────────────┐ │
│ │ BaselineStore │ │ Compare │ │
│ │ (baseline_store) │ │ (compare) │ │
│ │ │ │ │ │
│ │ 功能: │ │ 功能: │ │
│ │ - 集中存储 │ │ - compare_tensors │ │
│ │ - metadata/json │ │ - MERE/MARE 计算 │ │
│ │ - 多平台fallback │ │ - 小值域兜底 │ │
│ │ - 向上查找 │ │ - 相消处理 │ │
│ │ - 三级嵌套JSON │ │ - 整数精确匹配 │ │
│ │ │ │ - 多输出支持 │ │
│ │ API: │ │ │ │
│ │ get_perf() │ │ API: │ │
│ │ get_t_hw() │ │ compare_tensors() │ │
│ │ has_baseline() │ │ │ │
│ └───────────────────┘ └───────────────────┘ │
│ │
│ ┌───────────────────┐ ┌───────────────────┐ │
│ │ DTypeMapper │ │ Thresholds │ │
│ │ (dtype_mapper) │ │ (thresholds) │ │
│ │ │ │ │ │
│ │ 功能: │ │ 功能: │ │
│ │ - str → dtype │ │ - PRECISION_ │ │
│ │ - dtype → str │ │ THRESHOLDS │ │
│ │ │ │ - 单一事实来源 │ │
│ │ API: │ │ - Config 可拷贝 │ │
│ │ str_to_dtype() │ │ 覆盖单dtype │ │
│ │ dtype_to_str() │ │ │ │
│ └───────────────────┘ └───────────────────┘ │
│ │
│ ┌───────────────────┐ ┌───────────────────┐ │
│ │ TensorUtils │ │ Naming │ │
│ │ (tensor_utils) │ │ (naming) │ │
│ │ │ │ │ │
│ │ 功能: │ │ 功能: │ │
│ │ - FP64 转换 │ │ - Pascal→snake │ │
│ │ - CPU 迁移 │ │ - 多候选生成 │ │
│ │ - 批量处理 │ │ - 处理 3D/ROI等 │ │
│ │ │ │ │ │
│ │ API: │ │ API: │ │
│ │ tensors_to_fp64 │ │ camel_to_snake │ │
│ │ tensors_to_cpu │ │ snake_case_ │ │
│ │ │ │ candidates │ │
│ └───────────────────┘ └───────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
8. 报告生成层 (report/)
┌─────────────────────────────────────────────────────────────────────────────┐
│ report/ 模块架构 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ ReportGenerator │ │
│ │ 报告生成器 │ │
│ │ │ │
│ │ 输入: EvalSessionResult + setup_info │ │
│ │ 输出: │ │
│ │ ┌─────────────────────────────────────────────────────────────┐ │ │
│ │ │ JSON 格式: 详细结果数据 + 统计 + 时间戳 │ │ │
│ │ └─────────────────────────────────────────────────────────────┘ │ │
│ │ ┌─────────────────────────────────────────────────────────────┐ │ │
│ │ │ Markdown 格式: 表格 + 详细用例结果 │ │ │
│ │ └─────────────────────────────────────────────────────────────┘ │ │
│ │ ┌─────────────────────────────────────────────────────────────┐ │ │
│ │ │ Summary 格式: 通过率 + 几何平均加速比 │ │ │
│ │ └─────────────────────────────────────────────────────────────┘ │ │
│ │ ┌─────────────────────────────────────────────────────────────┐ │ │
│ │ │ HTML 格式: 4Section + KPI + 柱状图 + 认证印章 │ │ │
│ │ │ 动态字段替换: 通过率/得分/Agent/Skill/BaseModel │ │ │
│ │ └─────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ 语义前缀: cann_eval_ / stanford_eval_ / cpu_sim_cann_ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ HTML Generator │ │
│ │ (html_generator.py) │ │
│ │ │ │
│ │ 结构: │ │
│ │ Section 1: Abstract (description.html) │ │
│ │ Section 2: Experiment Setup (setup_info) │ │
│ │ Section 3: Results Analysis │ │
│ │ 3.1 KPI 指标卡 (通过率/算子数/得分/级联失败) │ │
│ │ 3.2 等级分析表 │ │
│ │ 3.3 柱状图 (得分/通过率/加速比) │ │
│ │ 3.4 Top 算子分析表 │ │
│ │ Section 4: Operator Details (按 Level 分组) │ │
│ │ Certification Seal │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Scoring │ │
│ │ (scoring.py) │ │
│ │ │ │
│ │ - per_case_sol_score (Eq.3): hardware-anchored │ │
│ │ score_i = (T_baseline - T_HW) / ((T_cand - T_HW) + │ │
│ │ (T_baseline - T_HW)) │ │
│ │ - aggregate_eq4 (Eq.4): 算子综合评分 │ │
│ │ - _fallback_baseline_from_hw: max(t_hw*10, 10) │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────┐ ┌──────────────────────────────────────────┐ │
│ │SummaryGenerator │ │ SetupInfo │ │
│ │(summary_generator)│ │ (setup_info.py) │ │
│ │ │ │ │ │
│ │ 几何平均加速比 │ │ 采集: │ │
│ │ 通过率统计 │ │ metadata: framework/date/agent_skill/ │ │
│ │ 综合得分汇总 │ │ base_model/benchmark/license │ │
│ │ │ │ environment: npu/cpu/cann/pytorch/ │ │
│ │ │ │ python/os/docker │ │
│ └──────────────────┘ └──────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
9. 安全防护层 (security/)
┌─────────────────────────────────────────────────────────────────────────────┐
│ security/ 模块架构 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ api_guard.py: │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ APIGuard │ │
│ │ - snapshot() → 快照关键 Timing API 身份 │ │
│ │ (torch.npu.Event.elapsed_time/record, synchronize, │ │
│ │ torch_npu.profiler.profile/schedule) │ │
│ │ - verify() → 验证是否被篡改,篡改则恢复原始API │ │
│ │ - 集成: PackageManager.prepare_from_source() (snapshot) │ │
│ │ Evaluator.evaluate_from_source() (verify) │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ torch_op_guard.py: │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ TorchOpGuard │ │
│ │ - TorchFunctionMode 上下文管理器 (PyTorch ≥1.11) │ │
│ │ - 检测 AI 算子调用 PyTorch 内置计算 API │ │
│ │ - BUILTIN_COMPUTE_OPS: matmul/mm/conv/softmax/attention/... │ │
│ │ - _LEAF_TO_CANONICAL: 多路径规约 │ │
│ │ (torch.matmul / torch.ops.aten.mm / @ / F.linear → │ │
│ │ 同一 canonical name, 防止绕过) │ │
│ │ - 模式: off / warn / block │ │
│ │ - pause() 机制: 排除 harness 自身预热调用 │ │
│ │ - 集成: OpRunner.run_ai_op() (with TorchOpGuard) │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ type_checker.py: │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ type_checker │ │
│ │ - type(output) is torch.Tensor 严格检查 │ │
│ │ - 拒绝 FakeTensor / 懒求值包装器 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
数据流图
┌─────────────────────────────────────────────────────────────────────────────┐
│ 评测数据流 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 输入: │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ tasks/ │ │
│ │ ├── level1/exp/ │ │
│ │ │ ├── proto.yaml # 算子定义 │ │
│ │ │ ├── cases.yaml # 测试用例 (含 baseline/t_hw) │ │
│ │ │ └── golden.py # Golden 函数 │ │
│ │ └── ... │ │
│ │ └── metadata/910b2.json # Baseline 集中存储 │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ CLI (cli.py) │ │
│ │ python -m kernel_eval eval --bench-name cann │ │
│ │ --operator Exp │ │
│ │ --eval-seed 0 │ │
│ │ --torch-op-guard-mode block │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ Evaluator (evaluator.py) │ │
│ │ │ │
│ │ for each case: │ │
│ │ ┌─────────────────────────────────────────────────────────────┐ │ │
│ │ │ │ │ │
│ │ │ ① BenchRegistry.get('cann') → BenchConfig │ │ │
│ │ │ (golden_precision=fp64_cpu, checker=relative_error, │ │ │
│ │ │ perf_metric_strategy=kernel_details) │ │ │
│ │ │ │ │ │
│ │ │ ② LoaderRegistry.get_case_loader('cann') → CannCaseLoader │ │ │
│ │ │ → CannCaseSpec(input_shapes, dtypes, attrs, │ │ │
│ │ │ baseline_perf_us, t_hw_us, golden_reference) │ │ │
│ │ │ │ │ │
│ │ │ ③ GoldenLoaderRegistry.get('cann') → GoldenLoader │ │ │
│ │ │ → golden_func (Callable) │ │ │
│ │ │ │ │ │
│ │ │ ④ 确定性种子 (SHA256 + eval_seed) → case_seed │ │ │
│ │ │ │ │ │
│ │ │ ⑤ DataGenerator.generate_input_tensors(case, seed) │ │ │
│ │ │ → input_tensors (List[Tensor]) │ │ │
│ │ │ │ │ │
│ │ │ ⑥ _apply_golden_precision(inputs) → fp64_cpu inputs │ │ │
│ │ │ │ │ │
│ │ │ ⑦ OpRunner.run(golden_func, params, to_device=False) │ │ │
│ │ │ → golden_output (Tensor, CPU fp64) │ │ │
│ │ │ │ │ │
│ │ │ ⑧ OperatorMatcher.load_ai_operator("exp") │ │ │
│ │ │ → op_func (torch.ops.cann_bench.exp) │ │ │
│ │ │ │ │ │
│ │ │ ⑨ OpRunner.run_ai_op(op_func, params, TorchOpGuard=block) │ │ │
│ │ │ → ai_output (Tensor, NPU) + perf_result │ │ │
│ │ │ │ │ │
│ │ │ ⑩ 同精度参考 (fp64_cpu 时单独执行 native_cpu Golden) │ │ │
│ │ │ → native_output (Tensor, CPU fp32) │ │ │
│ │ │ │ │ │
│ │ │ ⑪ CheckerRegistry.get('relative_error') → checker │ │ │
│ │ │ .check(ai_output, golden_output, native_output) │ │ │
│ │ │ → AccuracyResult(passed, output_results, threshold) │ │ │
│ │ │ │ │ │
│ │ │ ⑫ [可选] 二次验证 (_retry_with_fresh_inputs) │ │ │
│ │ │ 偏移种子 + 0.01微扰 → 两次都通过才记pass │ │ │
│ │ │ │ │ │
│ │ │ ⑬ PerfMetricStrategy.parse(prof_files, perf_result) │ │ │
│ │ │ → PerfResult(elapsed_us, op_times, metadata) │ │ │
│ │ │ │ │ │
│ │ │ ⑭ EvalCaseResult(success, accuracy, perf, failure_type) │ │ │
│ │ │ │ │ │
│ │ └─────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ run_cases 渐进设备恢复: │ │
│ │ healthy → (连续≥3失败+NPU不健康) → recovering → unrecoverable │ │
│ │ 每用例完成后 → 增量写入 incremental_output_path │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ 输出: │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ reports/ │ │
│ │ ├── cann_eval_20260616_143000.json # JSON 结果 │ │
│ │ ├── cann_eval_20260616_143000.md # Markdown 报告 │ │
│ │ ├── cann_eval_20260616_143000.html # HTML 可视化报告 │ │
│ │ └ prof_data/ # Profiling 数据归档 │ │
│ │ └ level1/exp/1/ │ │
│ │ └ kernel_details.csv │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
多卡并行架构
┌─────────────────────────────────────────────────────────────────────────────┐
│ ProcessPoolCoordinator │
│ 进程池协调器 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 主进程 (Coordinator): │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ① 检测 NPU 卡: torch.npu.device_count() │ │
│ │ ② 构建 TaskUnit: (算子×用例组) 均分到各卡 │ │
│ │ ③ ThreadPoolExecutor + as_completed 动态调度 │ │
│ │ ④ 每个 TaskUnit 启动 eval-child 子进程 │ │
│ │ ⑤ 监控进程状态,处理超时/OOM │ │
│ │ ⑥ 收集结果,aggregate_by_operator 聚合 │ │
│ │ │ │
│ │ OOM 保护: │ │
│ │ - 子进程 oom_score_adj=1000 (最优先被杀,保护主进程) │ │
│ │ - OOM Kill 时恢复增量写入的部分结果 │ │
│ │ - 剩余用例合成 oom_killed 失败 │ │
│ │ │ │
│ │ 超时处理: │ │
│ │ - SIGTERM → 10s 宽限 → SIGKILL │ │
│ │ - 恢复部分结果或合成 timeout 失败 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ 子进程分布 (profiler 开启时每卡 1 进程): │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Card 0 │ │ Card 1 │ │ Card 2 │ │ │
│ │ │ NPU:0 │ │ NPU:1 │ │ NPU:2 │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ │ │ │ │ │ │
│ │ ▼ ▼ ▼ │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │eval-child│ │eval-child│ │eval-child│ │ │
│ │ │ 算子 A │ │ 算子 C │ │ 算子 E │ │ │
│ │ │ 增量输出 │ │ 增量输出 │ │ 增量输出 │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ eval-child 子命令: │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ python -m kernel_eval.cli eval-child │ │
│ │ --bench-name cann │ │
│ │ --device-id 0 │ │
│ │ --cases-file /tmp/cases_0.json (CaseSpec JSON 列表) │ │
│ │ --output /tmp/cannbench_0.json (结果输出路径) │ │
│ │ --warmup 3 --repeat 5 │ │
│ │ [--no-perf] [--profiler-level Level1] │ │
│ │ [--torch-op-guard-mode block] [--eval-seed 0] │ │
│ │ │ │
│ │ ① torch.npu.set_device(device_id) │ │
│ │ ② Evaluator(incremental_output_path=output) │ │
│ │ ③ Evaluator.run_cases(cases) │ │
│ │ ④ 每用例完成后增量写入 output 文件 │ │
│ │ ⑤ 所有用例完成后写入完整结果 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
模块依赖关系
┌─────────────────────────────────────────────────────────────────────────────┐
│ 模块依赖图 │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ cli.py │
│ │ │
│ ├── config.py │
│ ├── _version.py │
│ ├── simulation.py │
│ ├── registry/bench_registry.py │
│ ├── registry/loader_registry.py │
│ ├── eval/evaluator.py │
│ ├── eval/process_pool.py │
│ ├── eval/results.py │
│ ├── eval/failure_synthesizer.py │
│ ├── report/report_generator.py │
│ ├── report/html_generator.py │
│ ├── report/scoring.py │
│ ├── report/setup_info.py │
│ └── utils/path_resolver.py │
│ │
│ simulation.py │
│ │ │
│ ├── config.py │
│ ├── eval/evaluator.py │
│ ├── report/report_generator.py │
│ ├── security/api_guard.py │
│ └── registry/loader_registry.py │
│ │
│ benches/cann.py │
│ │ │
│ ├── benches/cann_loader.py │
│ ├── benches/cann_spec.py │
│ ├── checkers/relative_error_checker.py │
│ ├── benches/cann_matcher.py │
│ ├── benches/cann_scoring.py │
│ ├── benches/cann_solution.py │
│ ├── registry/loader_registry.py │
│ ├── registry/golden_registry.py │
│ ├── registry/matcher_registry.py │
│ ├── registry/checker_registry.py │
│ ├── registry/scoring_registry.py │
│ ├── registry/case_spec_registry.py │
│ ├── registry/perf_strategy_registry.py │
│ └── registry/bench_registry.py │
│ │
│ benches/stanford.py │
│ │ │
│ ├── benches/stanford_loader.py │
│ ├── benches/stanford_matcher.py │
│ ├── benches/stanford_scoring.py │
│ └── registry/* (同上) │
│ │
│ eval/evaluator.py │
│ │ │
│ ├── config.py │
│ ├── _version.py (通过 benches 导入) │
│ ├── registry/* (获取所有组件实例) │
│ ├── data/data_generator.py │
│ ├── data/package_manager.py │
│ ├── eval/op_runner.py │
│ ├── eval/accuracy_eval.py │
│ ├── eval/perf_eval.py │
│ ├── eval/results.py │
│ ├── eval/failure_synthesizer.py │
│ ├── utils/device_manager.py │
│ ├── utils/param_builder.py │
│ ├── utils/tensor_utils.py │
│ ├── utils/baseline_resolver.py │
│ ├── utils/baseline_store.py │
│ ├── security/api_guard.py │
│ ├── security/torch_op_guard.py │
│ ├── base/models.py │
│ └── benches (触发注册) │
│ │
│ eval/op_runner.py │
│ │ │
│ ├── utils/device_manager.py │
│ ├── eval/perf_eval.py │
│ ├── eval/input_pool.py │
│ ├── utils/tensor_utils.py │
│ ├── security/torch_op_guard.py │
│ └── security/type_checker.py │
│ │
│ eval/accuracy_eval.py │
│ │ │
│ ├── base/checker.py │
│ ├── base/result.py │
│ ├── registry/checker_registry.py │
│ └── eval/input_pool.py │
│ │
│ eval/perf_eval.py │
│ │ │
│ ├── config.py │
│ ├── base/perf_strategy.py │
│ ├── utils/device_manager.py │
│ ├── eval/input_pool.py │
│ ├── security/torch_op_guard.py │
│ └── registry/perf_strategy_registry.py │
│ │
│ eval/process_pool.py │
│ │ │
│ ├── config.py │
│ ├── base/models.py │
│ ├── eval/results.py │
│ ├── eval/subprocess_utils.py │
│ └── registry/loader_registry.py │
│ │
│ checkers/relative_error_checker.py │
│ │ │
│ ├── base/checker.py │
│ ├── base/result.py │
│ ├── utils/compare.py │
│ └── utils/thresholds.py │
│ │
│ checkers/allclose_checker.py │
│ │ │
│ ├── base/checker.py │
│ ├── base/result.py │
│ └── utils/compare.py │
│ │
│ utils/compare.py │
│ │ │
│ ├── utils/thresholds.py │
│ │
│ benches/cann_scoring.py │
│ │ │
│ ├── base/scoring.py │
│ ├── base/result.py │
│ ├── eval/results.py │
│ └── utils/baseline_resolver.py │
│ │
│ report/report_generator.py │
│ │ │
│ ├── eval/results.py │
│ ├── report/scoring.py │
│ ├── report/summary_generator.py │
│ ├── report/html_generator.py │
│ ├── report/setup_info.py │
│ ├── registry/scoring_registry.py │
│ └── config.py │
│ │
│ security/torch_op_guard.py │
│ │ (独立模块, 无外部依赖) │
│ │
│ utils/baseline_store.py │
│ │ │
│ ├── utils/baseline_resolver.py │
│ │
│ utils/device_manager.py │
│ │ │
│ ├── config.py (DeviceConfig) │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
文件职责汇总
| 模块 | 文件 | 核心职责 |
|---|---|---|
| root | init.py | 包入口,导出 Config + 版本号 |
| root | cli.py | 命令行入口,参数解析,子命令路由(eval/list/info/config/eval-child/simulate) |
| root | config.py | Config 数据类(含 eval_seed/torch_op_guard_mode/perf_metric_strategy_override/checker_name 等) |
| root | simulation.py | CPU 仿真评测模块(独立入口 / eval --device cpu 等价) |
| root | _version.py | 版本管理(从 VERSION + tasks/metadata/VERSION 动态读取) |
| base | enums.py | 通用枚举(DifficultyLevel/BackendType/SourceType/GoldenReference/EvaluationMode) |
| base | models.py | 数据模型基类(AttrSpec/InputSpec/OutputSpec/TaskSpec/CaseSpec/SolutionSpec + to_dict/from_dict) |
| base | result.py | 结果基类 + OutputResult 注册表(AccuracyResult/PerfResult/OutputResult ABC + register/get_output_result_cls) |
| base | loaders.py | 加载器基类(TaskLoader/CaseLoader/GoldenLoaderBase/OperatorDirMixin) |
| base | checker.py | CorrectnessChecker ABC(三输入模式 + _normalize_outputs/_ensure_cpu/_check_output_count) |
| base | matcher.py | OperatorMatcherBase ABC(load_ai_operator/find_operator_info/clear_cache/find_operator_info_by_snake) |
| base | scoring.py | ScoringScheme ABC + CaseScoreInfo(prepare_baseline/calculate_case_score/aggregate) |
| base | perf_strategy.py | PerfMetricStrategy ABC + 三策略实现 + ProfFileLocations + warmup/CSV/trace/msprof解析函数 |
| benches | cann.py | CANN 组件导出 + BenchConfig("cann") 注册 |
| benches | cann_loader.py | CANN 加载器(CannTaskLoader/CannCaseLoader/GoldenLoader) |
| benches | cann_spec.py | CANN 特化数据模型(CannTaskSpec/CannCaseSpec 等) |
| benches | cann_matcher.py | CANN Matcher(torch.ops.cann_bench / cann_bench 模块) |
| benches | cann_scoring.py | CANN 评分(CannScoringScheme/SimpleComparisonScheme/RecordingOnlyScheme + Eq.3/4/5) |
| benches | cann_solution.py | CANN 解决方案规格 |
| benches | stanford.py | Stanford 组件导出 + BenchConfig("stanford") 注册 |
| benches | stanford_loader.py | Stanford 加载器 |
| benches | stanford_matcher.py | Stanford Matcher |
| benches | stanford_scoring.py | Stanford 评分 |
| checkers | relative_error_checker.py | RelativeErrorChecker + RelativeErrorOutputResult(注册名: relative_error + 兼容名 cann_default) |
| checkers | allclose_checker.py | AllCloseChecker + AllCloseOutputResult(注册名: allclose) |
| registry | base.py | BaseRegistry 泛型基类 |
| registry | loader_registry.py | TaskLoader/CaseLoader 注册 + 便捷函数 |
| registry | golden_registry.py | GoldenLoader 注册 + 便捷函数 |
| registry | matcher_registry.py | OperatorMatcher 注册 + 便捷函数 |
| registry | checker_registry.py | Checker 注册 + register_correctness_checker 装饰器 |
| registry | scoring_registry.py | ScoringScheme 注册 + 便捷函数 |
| registry | case_spec_registry.py | CaseSpec 子类注册(反序列化用) |
| registry | perf_strategy_registry.py | PerfMetricStrategy 注册 + 便捷函数 |
| registry | bench_registry.py | BenchConfig 聚合配置 + BenchRegistry + get_bench_config/get_bench_components |
| data | data_generator.py | 确定性种子输入张量生成 |
| data | package_manager.py | 迭代隔离编译、安装、接口扫描、APIGuard snapshot 集成 |
| eval | evaluator.py | 综合调度(BenchConfig 依赖注入 + Golden精度策略 + 渐进设备恢复 + 增量输出 + 二次验证) |
| eval | op_runner.py | 算子执行(TorchOpGuard + 返回值检查 + profiler 同步采集) |
| eval | accuracy_eval.py | 精度评测(Checker 三输入模式:AI/Golden/同精度参考) |
| eval | perf_eval.py | 性能评测(Profiler 运行 + PerfMetricStrategy 委托解析) |
| eval | results.py | 结果数据结构(failure_type + 增量输出 JSON 格式 + from_dict 反序列化) |
| eval | input_pool.py | 输入池(clone 池 + 内存限制) |
| eval | process_pool.py | 多卡并行(TaskUnit 调度 + eval-child 子命令 + OOM 保护) |
| eval | failure_synthesizer.py | 失败结果合成(编译/安全/子进程/OOM 四种类型) |
| eval | subprocess_utils.py | OOM 保护 + CANN 环境变量 + 部分结果恢复 |
| report | report_generator.py | 报告生成(JSON+Markdown+Summary+HTML 四格式 + 语义前缀命名) |
| report | html_generator.py | HTML 渲染(4Section + KPI + 柱状图 + 认证印章 + 动态字段替换) |
| report | scoring.py | 评分计算(hardware-anchored Eq.3/4/5 + fallback baseline) |
| report | summary_generator.py | Summary 生成(几何平均加速比) |
| report | setup_info.py | 评测配置采集(metadata + environment) |
| utils | device_manager.py | 设备管理(渐进恢复:light→full→unrecoverable + health_check) |
| utils | param_builder.py | 参数构建(签名解析 + null 位处理) |
| utils | path_resolver.py | 路径解析 |
| utils | baseline_resolver.py | Baseline 解析(多硬件 dict + 平台别名映射) |
| utils | baseline_store.py | BaselineStore(metadata/.json 集中存储 + 向上查找 + 多平台 fallback) |
| utils | compare.py | 张量对比引擎(compare_tensors + MERE/MARE + 小值域 + 相消 + 整数匹配 + 多输出) |
| utils | thresholds.py | PRECISION_THRESHOLDS 精度阈值表(单一事实来源,Config 可覆盖) |
| utils | dtype_mapper.py | dtype 字符串映射 |
| utils | tensor_utils.py | tensors_to_cpu / tensors_to_fp64_cpu |
| utils | naming.py | camel_to_snake + snake_case_candidates(多候选模糊匹配) |
| security | api_guard.py | APIGuard(Timing API 快照+验证+恢复) |
| security | torch_op_guard.py | TorchOpGuard(TorchFunctionMode + 多路径规约 + pause 机制) |
| security | type_checker.py | 返回值类型检查 |
导入路径示例
# 版本
from kernel_eval._version import FRAMEWORK_VERSION, TASKS_VERSION
# 基类
from kernel_eval.base import TaskSpec, CaseSpec, TaskLoader, CaseLoader
from kernel_eval.base import AccuracyResult, PerfResult, OutputResult
from kernel_eval.base import CorrectnessChecker, OperatorMatcherBase, ScoringScheme
from kernel_eval.base import DifficultyLevel, BackendType, GoldenReference
# CANN 特化组件
from kernel_eval.benches.cann import CannTaskLoader, CannCaseLoader, RelativeErrorChecker
from kernel_eval.benches.cann import OperatorMatcher, CannScoringScheme
# 或从 benches 直接导入(重新导出)
from kernel_eval.benches import CannTaskLoader, RelativeErrorChecker
from kernel_eval.benches import StanfordTaskLoader, StanfordMatcher
# Checker(通用,不绑定评测集)
from kernel_eval.checkers import RelativeErrorChecker, AllCloseChecker
from kernel_eval.checkers import RelativeErrorOutputResult, AllCloseOutputResult
# Registry
from kernel_eval.registry import LoaderRegistry, BenchRegistry, BenchConfig
from kernel_eval.registry import get_bench_config, get_bench_components
# 性能策略
from kernel_eval.base.perf_strategy import KernelDetailsStrategy, MsProfSummaryStrategy
# 评测组件
from kernel_eval.eval import Evaluator, OpRunner, AccuracyEvaluator, PerfEvaluator
from kernel_eval.eval import EvalCaseResult, EvalOperatorResult, EvalSessionResult
from kernel_eval.eval import ProcessPoolCoordinator, FailureSynthesizer
# 安全
from kernel_eval.security import APIGuard, TorchOpGuard
# 数据工具
from kernel_eval.data import DataGenerator, PackageManager
# 工具
from kernel_eval.utils import DeviceManager, BaselineStore, compare_tensors
from kernel_eval.utils import tensors_to_fp64_cpu, camel_to_snake
# 报告
from kernel_eval.report import ReportGenerator, render_html_report, collect_setup_info
# 配置
from kernel_eval.config import Config, get_config, set_config