跳转至

基准测试套件

benchmarks/ 目录树是 实测结果 中每一行数据背后的 可执行证据库,按负载语义分组,绝不按 provider 分组:Triton、Torch、 厂商库与 Tiga 生成的代码在同一用例内是平级参与者,而非顶层分类。

历史图使用已提交的输入存档;原始 revision/环境不完整,不能用本页运行命令声称精确复测。先阅读复现图表,区分重画和新测量。

目录布局

目录 范围 入口点
sparse_compute/ SpMV/SpMM、稀疏归约、扩散、融合 weighted_aggregation, cpu_relation, diffusion_roofline, fusion
graph_operations/ 拓扑构建/重建与生成的关系 radius_build, radius_pipeline, radius_roofline, knn_build
graph_algorithms/ 代表性的编译器探针,而非 NetworkX 式的全覆盖 PageRank(循环/收敛)、BFS(前沿)、三角形计数(交集)
neural_networks/ 具有通用 Tiga 语义的 NN 负载 dense_attention, linear_attention, sparse_attention, online_softmax, dense_matmul
compiler/ 编译/JIT/缓存/provider 转译——不是算法结果 provider_gate, jit_latency, tensor_fusion, cpu_pointwise
memory_hierarchy/ 寄存器/shared/HBM/RAM/NVMe 的放置与流水化 pinned↔HBM DMA 与 RAM↔NVMe 换出
distributed/ 分区/halo/集合通信/重叠 基于 stdlib 与真实 MPI 的双进程精确 halo 交换
large_graphs/ 十亿边数据集、验证契约、内存分层规划 plan,声明式 suite.json
autograd/ 生成的反向 kernel 与框架、手写 backward 的对比 message_passing_backward, reducer_product_backward, dynamic_radius_backward
visualization/ 渲染相关的预处理 kernel heatmap
providers/ provider 一致性,而非性能 conformance
common/ roofline 校准、公平性门禁、输出 schema、绘图 支撑模块
kernels/ 手写性能 oracle 从不被 tiga 导入

运行用例

benchmark 模块不随库 wheel 安装,需要源码 checkout。先按安装指南 安装 Tiga,再从仓库根目录运行下列命令。benchmarks extra 包含 Torch 与 Matplotlib; CUDA 用例另需 cuda extra 与受支持的硬件,先单独安装匹配的 Torch。 缺少 SciPy、PyG、Warp 等可选对标实现时须记录为 skipped,不能算作胜出。

入口点以模块方式从仓库根目录运行。 大多数入口支持 --quick(减少采样数量)和 --fail-on-gate (验收门禁不通过时以非零码退出):

python -m benchmarks.sparse_compute.weighted_aggregation --quick
python -m benchmarks.sparse_compute.weighted_aggregation --topology lognormal --locality random --features 1
python -m benchmarks.graph_operations.radius_pipeline --quick --fail-on-gate
python -m benchmarks.graph_operations.knn_build --quick --fail-on-gate
python -m benchmarks.neural_networks.dense_attention --quick --fail-on-gate
python -m benchmarks.neural_networks.dense_attention --quick --causal --fail-on-gate
python -m benchmarks.neural_networks.linear_attention --quick --fail-on-gate
python -m benchmarks.neural_networks.sparse_attention --quick --fail-on-gate
python -m benchmarks.neural_networks.radius_edge_mlp --quick
python -m benchmarks.compiler.provider_gate --quick
python -m benchmarks.autograd.message_passing_backward --quick
python -m benchmarks.autograd.dynamic_radius_backward --quick
python -m benchmarks.memory_hierarchy.transfer --quick
python -m benchmarks.distributed.halo_exchange --quick
python -m benchmarks.distributed.automatic_overlap --quick
python -m benchmarks.providers.conformance
python -m benchmarks.large_graphs.plan
python -m benchmarks.common.check_outputs

benchmarks.compiler.provider_gate 还需要构建好的 gf-opt 与 gf-translate;它们会从 build/*/bin/ 自动发现,也可通过 TIGA_OPT / TIGA_TRANSLATE 显式指定。

benchmarks.neural_networks.radius_edge_mlp 还需要 warp-lang 包(pip install warp-lang);NVIDIA Warp 是手写 的对标 kernel,绝不是 Tiga 的依赖。

产物与公平性规则

  • 每一项性能声明都基于完全相同的语义进行对比,产物保存在 output/roofline/<operation>/<case>/ 下——原始样本、 中位数、bootstrap 置信区间、设备/软件元数据,以及 算术强度模型。
  • 机器可读 JSON 是权威数据,但不是给人看的界面:每个 实测目录都会生成一份 SVG 可视化(带 PNG 回退), 正式 roofline 用例还会生成操作级的 summary.svg。
  • kernels/ 下的手写 oracle 代码可以设定性能目标,但 绝不会作为 Tiga 编译器的输出计入报告。
  • evidence_manifest.json 声明了汇总编译器报告的面板过滤器、 provider 顺序与基线;若缺少精确匹配的分组或 provider,渲染就会失败, 因此无法悄悄拿有利的测量结果顶替。
  • 静态稀疏生成器覆盖固定、有界均匀、离散幂律、 连续对数正态与指数等度分布族。连续用例均设置种子、 按请求的均值重新缩放、显式设置上限,并在每个结果中记录 min/mean/p50/p95/p99/max、零度占比与变异系数。

方法论页面 定义了语义匹配、缓存状态、 冷 JIT 开销核算、验收门禁、通用产物布局与复现命令。