跳转至

基准结果

运行时间与内存对比、大图容量和分布式开销见性能与扩展性。本页为历史测量归档。

本页是历史测量,不是当前 checkout 的性能结果。存档包含 18 个 operation 的 44 个已注册 case,以及六个辅助数据文件。GPU 数据来自记录中的 RTX 5070 Ti 环境,CPU 数据属于配套主机;不计算跨设备综合分数。

复现图表 · 下载原始证据 · 逐图输入索引 · 完整矩阵

范围与来源

部分历史文件缺少原始代码 revision、驱动/包版本或逐次采样。存档可以复现图表,但不保证新测量得到相同性能。--quick 是 smoke 测量,不是所有存档 case 的精确复现命令。

怎样读图

新的大图容量测量单列于十亿边实验。 它的完整前向计时不能与下方历史 warm operator 计时混用。

加速比大于 1 表示指定候选快于该行对标实现,图中同时保留毫秒数。不同工作负载、不同计时边界的比值不取平均。F 是 feature 宽度,不是浮点精度;内存图区分逐边中间量估算和实测峰值分配。小屏幕可横向滚动图表;点击图可打开完整 SVG。

GPU

Weighted CSR aggregation 对每个目标行计算加权和。选中的拓扑切片为 131,072 行、平均度 16、FP32 数值;索引宽度以各存档 case 为准。F=1/16/64 表示 feature 宽度。

选定稀疏工作负载:prepared Tiga 对比 torch.sparse.mm

候选为 tiga.prepared_auto,对标为 torch.sparse.mm,cache 为 hot;准备阶段不计入这个 warm 时间。这是固定切片,不代表所有已注册拓扑都获胜。全部稀疏 case。

边 MLP 读取相对位置和源节点 feature,再按目标聚合。融合与 eager 路径计算同一个选定工作负载;手写 Triton tile 是 oracle,不是编译器生成代码。

边 MLP 前向时延与加速比

逐边中间量的内存估算

第二张图的零表示不物化逐边 activation 数组,不是总设备内存为零。GiB 来自中间 Tensor 尺寸估算,不是 allocator 峰值测量。

边 MLP 前向加反向与实测峰值内存

训练图比较完整前向+反向和实测峰值分配,计时口径不同于仅前向。前向 case · 反向 case · 程序例子。

这个图 attention case 包含逐边评分、按目标归一化和聚合,不是 dense SDPA。

GAT 训练时延与实测峰值内存

对标为同一个已记录图上的 eager autograd。这是辅助存档,不在 44 个已注册 case 中;准确输入路径见逐图索引。

Dense exact、linear、tile-pruned sparse attention 是不同的数学工作负载。每行只与自己的匹配实现比较,跨行不能用于排名。

三种 attention 工作负载及各自对标

Dense case · Linear case · Sparse case。完整矩阵给出 shape、精度和 provider 名称。

Radius 拓扑构建、已有拓扑上的计算、重建再计算,具有不同计时边界。Reuse 排除构建,end-to-end 包含构建。

明确阶段边界的 radius 管线时延

单阶段比值不能证明端到端加速比。构建 case · 消费 case。

编译器整体

以下每行都选择明确的存档工作负载及匹配基线。选择由生成器固定,不会自动扫描最大加速比。

选定编译器变换

专用原语对比

基线名称和精确筛选条件见 benchmarks/evidence_manifest.json 与 benchmarks/common/plot_docs_results.py;条形旁保留候选/对标的绝对时延。PageRank · kNN · Matmul 校准 · Heatmap。

CPU

同一个 FP32/i32、度 16 的 relation loop,在两种节点数下对比 SciPy CSR matvec 与 Torch sparse,线程数为 16;同时呈现胜出与落后的切片。

CPU relation 的结果随规模与对标变化

131k case 已注册,16k 对比属于辅助存档。此结果不能证明跨 CPU、线程数或 NUMA placement 的扩展性。已注册 CPU relation。

历史内部 overlap 探测,不代表公开执行策略(固定先通信、再计算)。两个 CPU 进程使用人为增加延迟的传输链路;这不是 NVLink、RDMA 或多 GPU 基准。

一条已记录的 CPU 重叠 trace

时间线取某个 rank 的首个 sample,中位数标注来自完整采样集合;不表示每次采样的重叠均相同。可运行分布式例子。

完整矩阵

表格从同一批已注册存档输入生成,包含较慢路径。这是详细证据视图,不是另一批独立测量;每个 operation 列出 case 条件、计时范围和对标实现。

邻居加权求和

计算内容:每个节点收集邻居的值,乘上边权后求和。下面固定比较 tiga.prepared_auto 与 torch.sparse.mm,只展示 hot 数据缓存;所有已注册图类型和 feature 宽度都保留,不挑最快的一行。

所有行均为 131,072 个节点、FP32 数值。F 是每个节点的数值个数,i32/i64 是节点索引的整数位宽,不是数值精度。耗时越小越好;加速比 = 对标耗时 ÷ Tiga 耗时,低于 1 表示 Tiga 更慢。

图类型 邻居分布 索引 F Tiga(ms) Torch sparse(ms) 加速比
等度 编号相近 i64 1 0.020 0.047 2.31×
等度 编号相近 i64 16 0.025 0.232 9.19×
等度 编号相近 i64 64 0.100 0.275 2.76×
不等度 随机编号 i32 16 0.057 0.263 4.63×
不等度 随机编号 i32 64 0.206 0.400 1.94×
幂律 编号相近 i32 1 0.020 0.041 2.00×
幂律 编号相近 i64 1 0.023 0.038 1.65×
幂律 随机编号 i32 1 0.054 0.070 1.30×
幂律 随机编号 i64 1 0.054 0.071 1.32×
对数正态 随机编号 i32 1 0.054 0.071 1.31×
指数 随机编号 i32 1 0.055 0.071 1.29×

等度表示每个节点的邻居数相同;其余图类型让邻居数量变化,用于检查负载不均衡。local/random 描述源节点编号是否集中,不代表跨机器通信。

prepared_auto 已提前完成绑定/准备;计时不含首次编译、准备和建图。hot 是反复使用数据,cold 是测量前主动扰动数据缓存;cold 不是首次 JIT 编译。这些历史路径不等于当前普通 Torch 调用的端到端性能。

下方保留全部原始实现与 hot/cold 结果。95% 置信区间描述采样的不确定性;“性能检查通过”表示达到该存档阈值,不表示所有功能正确或已经可以发布。

全部测量与实现细节
存档用例 测试条件 被测实现(ms) 对标实现(ms) 加速比 加速比的 95% 置信区间 性能检查
powerlaw_local_cuda_i32_n131072_degree16_f1 powerlaw · local · hot · F1 · N131072 tiga.compiler_chunked_tail 0.027 torch.sparse.mm 0.041 1.51× [1.39, 1.71] 通过
powerlaw_local_cuda_i32_n131072_degree16_f1 powerlaw · local · hot · F1 · N131072 tiga.prepared_auto 0.020 torch.sparse.mm 0.041 2.00× [1.89, 2.30] 通过
powerlaw_local_cuda_i32_n131072_degree16_f1 powerlaw · local · cold · F1 · N131072 tiga.compiler_chunked_tail 0.051 torch.sparse.mm 0.071 1.39× [1.36, 1.50] 通过
powerlaw_local_cuda_i32_n131072_degree16_f1 powerlaw · local · cold · F1 · N131072 tiga.prepared_auto 0.051 torch.sparse.mm 0.071 1.40× [1.35, 1.51] 通过
powerlaw_local_cuda_i64_n131072_degree16_f1 powerlaw · local · hot · F1 tiga.prepared_auto 0.023 torch.sparse.mm 0.038 1.65× [1.63, 1.72] 通过
powerlaw_local_cuda_i64_n131072_degree16_f1 powerlaw · local · cold · F1 tiga.prepared_auto 0.061 torch.sparse.mm 0.082 1.33× [1.30, 1.44] 通过
powerlaw_random_cuda_i32_n131072_degree16_f1 powerlaw · random · hot · F1 · N131072 tiga.compiler_chunked_tail 0.054 torch.sparse.mm 0.070 1.31× [1.28, 1.33] 通过
powerlaw_random_cuda_i32_n131072_degree16_f1 powerlaw · random · hot · F1 · N131072 tiga.prepared_auto 0.054 torch.sparse.mm 0.070 1.30× [1.27, 1.32] 通过
powerlaw_random_cuda_i32_n131072_degree16_f1 powerlaw · random · cold · F1 · N131072 tiga.compiler_chunked_tail 0.059 torch.sparse.mm 0.086 1.46× [1.45, 1.49] 通过
powerlaw_random_cuda_i32_n131072_degree16_f1 powerlaw · random · cold · F1 · N131072 tiga.prepared_auto 0.059 torch.sparse.mm 0.086 1.45× [1.42, 1.47] 通过
powerlaw_random_cuda_i64_n131072_degree16_f1 powerlaw · random · hot · F1 tiga.prepared_auto 0.054 torch.sparse.mm 0.071 1.32× [1.28, 1.35] 通过
powerlaw_random_cuda_i64_n131072_degree16_f1 powerlaw · random · cold · F1 tiga.prepared_auto 0.079 torch.sparse.mm 0.095 1.20× [1.19, 1.21] 通过
lognormal_random_cuda_i32_n131072_degree16_f1 lognormal · random · hot · F1 · N131072 tiga.compiler_chunked_tail 0.059 torch.sparse.mm 0.071 1.20× [1.17, 1.23] 通过
lognormal_random_cuda_i32_n131072_degree16_f1 lognormal · random · hot · F1 · N131072 tiga.prepared_auto 0.054 torch.sparse.mm 0.071 1.31× [1.26, 1.34] 通过
lognormal_random_cuda_i32_n131072_degree16_f1 lognormal · random · cold · F1 · N131072 tiga.compiler_chunked_tail 0.076 torch.sparse.mm 0.086 1.12× [1.11, 1.13] 通过
lognormal_random_cuda_i32_n131072_degree16_f1 lognormal · random · cold · F1 · N131072 tiga.prepared_auto 0.070 torch.sparse.mm 0.086 1.22× [1.20, 1.23] 通过
exponential_random_cuda_i32_n131072_degree16_f1 exponential · random · hot · F1 · N131072 tiga.compiler_chunked_tail 0.059 torch.sparse.mm 0.071 1.20× [1.18, 1.23] 通过
exponential_random_cuda_i32_n131072_degree16_f1 exponential · random · hot · F1 · N131072 tiga.prepared_auto 0.055 torch.sparse.mm 0.071 1.29× [1.26, 1.31] 通过
exponential_random_cuda_i32_n131072_degree16_f1 exponential · random · cold · F1 · N131072 tiga.compiler_chunked_tail 0.075 torch.sparse.mm 0.087 1.15× [1.14, 1.17] 通过
exponential_random_cuda_i32_n131072_degree16_f1 exponential · random · cold · F1 · N131072 tiga.prepared_auto 0.071 torch.sparse.mm 0.087 1.23× [1.21, 1.25] 通过

以下用例没有存档性能检查;每行是一种实测实现。对标优先采用预先指定的实现,否则采用相同测试条件下最快的非 Tiga 实现。

存档用例 测试条件 执行实现 中位耗时(ms) 对标实现 相对加速比
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F1 · nodes=131072 · edges=2097152 · index_dtype=i64 tiga.prepared_auto 0.020 torch.sparse.mm 2.31×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F1 · nodes=131072 · edges=2097152 · index_dtype=i64 tiga.auto 0.046 torch.sparse.mm 1.03×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F1 · nodes=131072 · edges=2097152 · index_dtype=i64 tiga.reference 0.216 torch.sparse.mm 0.22×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F1 · nodes=131072 · edges=2097152 · index_dtype=i64 torch.sparse.mm 0.047 torch.sparse.mm 1.00×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F1 · nodes=131072 · edges=2097152 · index_dtype=i64 torch.compile.index_add 0.083 torch.sparse.mm 0.57×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F1 · nodes=131072 · edges=2097152 · index_dtype=i64 torch.index_add 0.084 torch.sparse.mm 0.56×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F1 · nodes=131072 · edges=2097152 · index_dtype=i64 triton.csr 0.379 torch.sparse.mm 0.12×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F16 · nodes=131072 · edges=2097152 · index_dtype=i64 tiga.prepared_auto 0.025 torch.sparse.mm 9.19×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F16 · nodes=131072 · edges=2097152 · index_dtype=i64 tiga.auto 0.062 torch.sparse.mm 3.77×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F16 · nodes=131072 · edges=2097152 · index_dtype=i64 tiga.reference 3.115 torch.sparse.mm 0.07×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F16 · nodes=131072 · edges=2097152 · index_dtype=i64 torch.sparse.mm 0.232 torch.sparse.mm 1.00×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F16 · nodes=131072 · edges=2097152 · index_dtype=i64 torch.compile.index_add 0.234 torch.sparse.mm 0.99×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F16 · nodes=131072 · edges=2097152 · index_dtype=i64 triton.csr 0.427 torch.sparse.mm 0.54×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F16 · nodes=131072 · edges=2097152 · index_dtype=i64 pyg.message_passing 1.748 torch.sparse.mm 0.13×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F16 · nodes=131072 · edges=2097152 · index_dtype=i64 torch.index_add 1.832 torch.sparse.mm 0.13×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F64 · nodes=131072 · edges=2097152 · index_dtype=i64 tiga.auto 0.095 torch.sparse.mm 2.89×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F64 · nodes=131072 · edges=2097152 · index_dtype=i64 tiga.prepared_auto 0.100 torch.sparse.mm 2.76×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F64 · nodes=131072 · edges=2097152 · index_dtype=i64 tiga.reference 5.621 torch.sparse.mm 0.05×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F64 · nodes=131072 · edges=2097152 · index_dtype=i64 torch.sparse.mm 0.275 torch.sparse.mm 1.00×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F64 · nodes=131072 · edges=2097152 · index_dtype=i64 triton.csr 0.453 torch.sparse.mm 0.61×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F64 · nodes=131072 · edges=2097152 · index_dtype=i64 torch.compile.index_add 0.577 torch.sparse.mm 0.48×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F64 · nodes=131072 · edges=2097152 · index_dtype=i64 pyg.message_passing 3.561 torch.sparse.mm 0.08×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · hot · F64 · nodes=131072 · edges=2097152 · index_dtype=i64 torch.index_add 4.188 torch.sparse.mm 0.07×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F1 · nodes=131072 · edges=2097152 · index_dtype=i64 tiga.prepared_auto 0.046 torch.sparse.mm 1.72×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F1 · nodes=131072 · edges=2097152 · index_dtype=i64 tiga.auto 0.055 torch.sparse.mm 1.43×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F1 · nodes=131072 · edges=2097152 · index_dtype=i64 tiga.reference 0.216 torch.sparse.mm 0.36×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F1 · nodes=131072 · edges=2097152 · index_dtype=i64 torch.sparse.mm 0.079 torch.sparse.mm 1.00×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F1 · nodes=131072 · edges=2097152 · index_dtype=i64 torch.index_add 0.113 torch.sparse.mm 0.70×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F1 · nodes=131072 · edges=2097152 · index_dtype=i64 torch.compile.index_add 0.115 torch.sparse.mm 0.68×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F1 · nodes=131072 · edges=2097152 · index_dtype=i64 triton.csr 0.387 torch.sparse.mm 0.20×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F16 · nodes=131072 · edges=2097152 · index_dtype=i64 tiga.prepared_auto 0.058 torch.compile.index_add 3.40×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F16 · nodes=131072 · edges=2097152 · index_dtype=i64 tiga.auto 0.067 torch.compile.index_add 2.95×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F16 · nodes=131072 · edges=2097152 · index_dtype=i64 tiga.reference 3.098 torch.compile.index_add 0.06×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F16 · nodes=131072 · edges=2097152 · index_dtype=i64 torch.compile.index_add 0.197 torch.compile.index_add 1.00×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F16 · nodes=131072 · edges=2097152 · index_dtype=i64 torch.sparse.mm 0.233 torch.compile.index_add 0.84×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F16 · nodes=131072 · edges=2097152 · index_dtype=i64 triton.csr 0.449 torch.compile.index_add 0.44×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F16 · nodes=131072 · edges=2097152 · index_dtype=i64 pyg.message_passing 1.748 torch.compile.index_add 0.11×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F16 · nodes=131072 · edges=2097152 · index_dtype=i64 torch.index_add 1.841 torch.compile.index_add 0.11×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F64 · nodes=131072 · edges=2097152 · index_dtype=i64 tiga.prepared_auto 0.120 torch.sparse.mm 2.48×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F64 · nodes=131072 · edges=2097152 · index_dtype=i64 tiga.auto 0.130 torch.sparse.mm 2.28×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F64 · nodes=131072 · edges=2097152 · index_dtype=i64 tiga.reference 5.638 torch.sparse.mm 0.05×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F64 · nodes=131072 · edges=2097152 · index_dtype=i64 torch.sparse.mm 0.298 torch.sparse.mm 1.00×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F64 · nodes=131072 · edges=2097152 · index_dtype=i64 triton.csr 0.485 torch.sparse.mm 0.61×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F64 · nodes=131072 · edges=2097152 · index_dtype=i64 torch.compile.index_add 0.593 torch.sparse.mm 0.50×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F64 · nodes=131072 · edges=2097152 · index_dtype=i64 pyg.message_passing 3.571 torch.sparse.mm 0.08×
regular_local_cuda_i64_n131072_degree16_f1_16_64 regular · local · cold · F64 · nodes=131072 · edges=2097152 · index_dtype=i64 torch.index_add 4.216 torch.sparse.mm 0.07×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · hot · F16 · nodes=131072 · edges=2097960 · index_dtype=i32 tiga.prepared_auto 0.057 torch.sparse.mm 4.63×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · hot · F16 · nodes=131072 · edges=2097960 · index_dtype=i32 tiga.auto 0.090 torch.sparse.mm 2.91×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · hot · F16 · nodes=131072 · edges=2097960 · index_dtype=i32 tiga.reference 3.061 torch.sparse.mm 0.09×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · hot · F16 · nodes=131072 · edges=2097960 · index_dtype=i32 torch.sparse.mm 0.263 torch.sparse.mm 1.00×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · hot · F16 · nodes=131072 · edges=2097960 · index_dtype=i32 torch.compile.index_add 0.278 torch.sparse.mm 0.95×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · hot · F16 · nodes=131072 · edges=2097960 · index_dtype=i32 triton.csr 0.388 torch.sparse.mm 0.68×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · hot · F16 · nodes=131072 · edges=2097960 · index_dtype=i32 pyg.message_passing 1.673 torch.sparse.mm 0.16×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · hot · F16 · nodes=131072 · edges=2097960 · index_dtype=i32 torch.index_add 1.776 torch.sparse.mm 0.15×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · hot · F64 · nodes=131072 · edges=2097960 · index_dtype=i32 tiga.prepared_auto 0.206 torch.sparse.mm 1.94×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · hot · F64 · nodes=131072 · edges=2097960 · index_dtype=i32 tiga.auto 0.235 torch.sparse.mm 1.70×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · hot · F64 · nodes=131072 · edges=2097960 · index_dtype=i32 tiga.reference 5.711 torch.sparse.mm 0.07×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · hot · F64 · nodes=131072 · edges=2097960 · index_dtype=i32 torch.sparse.mm 0.400 torch.sparse.mm 1.00×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · hot · F64 · nodes=131072 · edges=2097960 · index_dtype=i32 triton.csr 0.413 torch.sparse.mm 0.97×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · hot · F64 · nodes=131072 · edges=2097960 · index_dtype=i32 torch.compile.index_add 0.669 torch.sparse.mm 0.60×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · hot · F64 · nodes=131072 · edges=2097960 · index_dtype=i32 pyg.message_passing 3.540 torch.sparse.mm 0.11×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · hot · F64 · nodes=131072 · edges=2097960 · index_dtype=i32 torch.index_add 4.253 torch.sparse.mm 0.09×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · cold · F16 · nodes=131072 · edges=2097960 · index_dtype=i32 tiga.prepared_auto 0.077 torch.sparse.mm 3.24×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · cold · F16 · nodes=131072 · edges=2097960 · index_dtype=i32 tiga.auto 0.088 torch.sparse.mm 2.86×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · cold · F16 · nodes=131072 · edges=2097960 · index_dtype=i32 tiga.reference 3.016 torch.sparse.mm 0.08×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · cold · F16 · nodes=131072 · edges=2097960 · index_dtype=i32 torch.sparse.mm 0.251 torch.sparse.mm 1.00×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · cold · F16 · nodes=131072 · edges=2097960 · index_dtype=i32 torch.compile.index_add 0.332 torch.sparse.mm 0.75×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · cold · F16 · nodes=131072 · edges=2097960 · index_dtype=i32 triton.csr 0.381 torch.sparse.mm 0.66×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · cold · F16 · nodes=131072 · edges=2097960 · index_dtype=i32 pyg.message_passing 1.665 torch.sparse.mm 0.15×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · cold · F16 · nodes=131072 · edges=2097960 · index_dtype=i32 torch.index_add 1.788 torch.sparse.mm 0.14×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · cold · F64 · nodes=131072 · edges=2097960 · index_dtype=i32 tiga.prepared_auto 0.313 torch.sparse.mm 1.19×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · cold · F64 · nodes=131072 · edges=2097960 · index_dtype=i32 tiga.auto 0.319 torch.sparse.mm 1.17×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · cold · F64 · nodes=131072 · edges=2097960 · index_dtype=i32 tiga.reference 5.708 torch.sparse.mm 0.07×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · cold · F64 · nodes=131072 · edges=2097960 · index_dtype=i32 torch.sparse.mm 0.373 torch.sparse.mm 1.00×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · cold · F64 · nodes=131072 · edges=2097960 · index_dtype=i32 triton.csr 0.445 torch.sparse.mm 0.84×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · cold · F64 · nodes=131072 · edges=2097960 · index_dtype=i32 torch.compile.index_add 0.695 torch.sparse.mm 0.54×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · cold · F64 · nodes=131072 · edges=2097960 · index_dtype=i32 pyg.message_passing 3.559 torch.sparse.mm 0.10×
irregular_random_cuda_i32_n131072_degree16_f16_64 irregular · random · cold · F64 · nodes=131072 · edges=2097960 · index_dtype=i32 torch.index_add 4.276 torch.sparse.mm 0.09×

radius_edge_mlp

PointNet++ 风格的边局部 MLP 消息传递,作用在半径关系上(MLP 11→16→8,FP32):MLP 由 tg.nn.trace 捕获并编译为融合 tile kernel。对标实现为手写 Triton tile oracle、手写 NVIDIA Warp 融合 kernel,以及 PyTorch eager 的 gather → MLP → index_add 回退。

存档用例 测试条件 执行实现 中位耗时(ms) 对标实现 相对加速比
n262144 hot · F8 tiga-compiled-tile 1.020 warp-fused 8.50×
n262144 hot · F8 tiga-eager 13.058 warp-fused 0.66×
n262144 hot · F8 triton-fused-tile 1.017 warp-fused 8.53×
n262144 hot · F8 warp-fused 8.670 warp-fused 1.00×
n262144 hot · F8 torch-eager 12.069 warp-fused 0.72×

edge_nn_backward

边局部 MLP 的一次前向+反向训练步:反向是编译器推导的符号 VJP 重算 tile,不物化任何 [E, ·] 激活。对标实现为 eager Torch autograd。

存档用例 测试条件 执行实现 中位耗时(ms) 对标实现 相对加速比
cuda_n131072_degree32 — tiga.fused_recompute_vjp 2.991 torch.eager_autograd 13.45×
cuda_n131072_degree32 — torch.eager_autograd 40.227 torch.eager_autograd 1.00×

diffusion

在 local 与 random 图切片上、度 2–64 的稀疏各向异性扩散步。每个 case 将编译器生成的 Tiga 数据点与 torch.sparse_laplacian、torch.index_add、triton.csr 等仅用于基准的对标实现分开。

存档用例 测试条件 被测实现(ms) 对标实现(ms) 加速比 加速比的 95% 置信区间 性能检查
regular_local_cuda_i64_n131072_degree2 regular · local · hot · F1 tiga.auto 0.018 torch.index_add 0.036 1.99× [1.98, 2.01] 通过
regular_local_cuda_i64_n131072_degree4 regular · local · hot · F1 tiga.auto 0.018 torch.index_add 0.036 2.04× [2.03, 2.07] 通过
regular_local_cuda_i64_n131072_degree8 regular · local · hot · F1 tiga.auto 0.017 torch.sparse_laplacian 0.036 2.09× [2.05, 2.11] 通过
regular_local_cuda_i64_n131072_degree16 regular · local · hot · F1 tiga.auto 0.024 torch.sparse_laplacian 0.037 1.51× [1.48, 1.54] 通过
regular_local_cuda_i64_n131072_degree32 regular · local · hot · F1 tiga.auto 0.052 torch.sparse_laplacian 0.081 1.55× [1.53, 1.56] 通过
regular_local_cuda_i64_n131072_degree64 regular · local · hot · F1 tiga.auto 0.134 torch.sparse_laplacian 0.144 1.07× [1.07, 1.07] 通过
irregular_local_cuda_i64_n131072_degree16 irregular · local · hot · F1 tiga.auto 0.034 torch.sparse_laplacian 0.037 1.07× [1.05, 1.08] 通过
skewed_local_cuda_i64_n131072_degree16 skewed · local · hot · F1 tiga.auto 0.035 torch.sparse_laplacian 0.036 1.03× [1.02, 1.05] 通过
regular_random_cuda_i64_n8192_degree16 regular · random · hot · F1 tiga.auto 0.026 triton.csr 0.032 1.23× [1.01, 1.33] 通过

radius_graph_build

从位置构建半径关系本身:生成的 cell 目录对比物化的 cell-list/CSR 构建。有效 FLOPs 只计精确的候选距离测试。

存档用例 测试条件 执行实现 中位耗时(ms) 对标实现 相对加速比
cuda_n32768_d3_degree32 radius · spatial · build-only · F1 · nodes=32768 · edges=978044 · index_dtype=int64 tiga.compact_cell_directory 0.335 tiga.materialized_cell_list_csr 9.46×
cuda_n32768_d3_degree32 radius · spatial · build-only · F1 · nodes=32768 · edges=978044 · index_dtype=int64 tiga.materialized_cell_list_csr 3.171 tiga.materialized_cell_list_csr 1.00×

radius_distance_aggregation

半径图上的距离加权聚合,按 consume、relation-reuse 与全新 build+consume 阶段分别报告。对标实现为物化 CSR 管线与 torch.sparse.mm。

存档用例 测试条件 执行实现 中位耗时(ms) 对标实现 相对加速比
cuda_n32768_d3_degree32 radius · spatial · consumer-only · F1 · nodes=32768 · edges=978044 · index_dtype=int64 tiga.direct_ttir_generated 0.334 torch.sparse.precomputed_distance 0.13×
cuda_n32768_d3_degree32 radius · spatial · consumer-only · F1 · nodes=32768 · edges=978044 · index_dtype=int64 tiga.triton_generated_oracle 0.338 torch.sparse.precomputed_distance 0.13×
cuda_n32768_d3_degree32 radius · spatial · consumer-only · F1 · nodes=32768 · edges=978044 · index_dtype=int64 torch.sparse.precomputed_distance 0.044 torch.sparse.precomputed_distance 1.00×
cuda_n32768_d3_degree32 radius · spatial · consumer-only · F1 · nodes=32768 · edges=978044 · index_dtype=int64 tiga.materialized_csr 0.058 torch.sparse.precomputed_distance 0.76×
cuda_n32768_d3_degree32 radius · spatial · relation-reuse · F1 · nodes=32768 · edges=978044 · index_dtype=int64 tiga.dynamic_auto 0.048 tiga.materialized_reuse 1.30×
cuda_n32768_d3_degree32 radius · spatial · relation-reuse · F1 · nodes=32768 · edges=978044 · index_dtype=int64 tiga.materialized_reuse 0.062 tiga.materialized_reuse 1.00×
cuda_n32768_d3_degree32 radius · spatial · fresh-build+consume · F1 · nodes=32768 · edges=978044 · index_dtype=int64 tiga.generated_build_consume 0.734 tiga.materialized_build_consume 4.43×
cuda_n32768_d3_degree32 radius · spatial · fresh-build+consume · F1 · nodes=32768 · edges=978044 · index_dtype=int64 tiga.materialized_build_consume 3.247 tiga.materialized_build_consume 1.00×

online_softmax

以 reducer 代数写成的数值稳定 online softmax reducer,被重结合为单个 TTIR tile。对标实现为匹配的手写融合 Triton kernel。

存档用例 测试条件 被测实现(ms) 对标实现(ms) 加速比 加速比的 95% 置信区间 性能检查
cuda_n131072_degree32_f1 fixed-degree-csr · random · hot · F1 tiga.compiler_ttir 0.168 triton.handwritten_fused 0.169 1.01× [1.01, 1.01] 通过

knn_graph

精确 kNN 图构建与消费归约融合——不物化 N×N 距离矩阵或 CSR。对标实现为 torch.cdist_topk_gather_sum。

存档用例 测试条件 被测实现(ms) 对标实现(ms) 加速比 加速比的 95% 置信区间 性能检查
cuda_n8192_d3_k32_consume uniform-random · all-pairs · hot · F3 tiga.knn_build_consume_prepared_ttir 2.950 torch.cdist_topk_gather_sum 3.915 1.33× [1.33, 1.33] 通过
cuda_n4096_d5_k16_consume uniform-random · all-pairs · hot · F5 tiga.knn_build_consume_prepared_ttir 0.659 torch.cdist_topk_gather_sum 1.071 1.63× [1.62, 1.63] 通过
cuda_n4096_d5_k13_consume uniform-random · all-pairs · hot · F5 tiga.knn_build_consume_prepared_ttir 0.663 torch.cdist_topk_gather_sum 1.074 1.62× [1.62, 1.63] 通过

dense_matmul_calibration

稠密 matmul 校准门禁:编译器自动选择无 Torch 的 cuBLASLt 运行时路径,并对 torch.mm/cuBLAS 设门禁。

存档用例 测试条件 被测实现(ms) 对标实现(ms) 加速比 加速比的 95% 置信区间 性能检查
m2048_n2048_k2048_fp16 dense · contiguous · hot · F2048 tiga.compiler_auto 0.192 torch.mm.cublas 0.193 1.00× [1.00, 1.01] 通过

dense_attention

写成 MessagePassing 的精确稠密 attention,经 Domain、Iter 与 Kernel IR lowering 为编译器生成的 TTIR(完整 Cartesian、causal 与 grouped-query 关系)。对标实现为 Flash SDPA(torch.sdpa.flash)。

存档用例 测试条件 被测实现(ms) 对标实现(ms) 加速比 加速比的 95% 置信区间 性能检查
b1_h16_n4096_d64_fp16 cartesian · dense · consumer-only · F64 tiga.direct_ttir 0.772 torch.sdpa.flash 0.829 1.07× [1.07, 1.08] 通过
b1_h16_n4096_d64_fp16_causal lower-triangular · dense · consumer-only · F64 tiga.direct_ttir 0.446 torch.sdpa.flash 0.498 1.12× [1.10, 1.13] 通过
b1_h16_n4096_d64_fp16_kvh4 cartesian · dense · consumer-only · F64 tiga.direct_ttir 0.777 torch.sdpa.flash 0.842 1.08× [1.08, 1.09] 通过

horizontal_fusion

同一共享关系上兄弟消息传递 kernel 的横向融合。对标实现为匹配的手写融合 Triton oracle。

存档用例 测试条件 被测实现(ms) 对标实现(ms) 加速比 加速比的 95% 置信区间 性能检查
cuda_n131072_degree16_i64 regular · local · hot · F1 tiga.compiler_fused 0.022 triton.fused_oracle 0.023 1.05× [1.04, 1.06] 通过

message_passing_backward

前向消息传递 UDF 的编译器推导 VJP,包括零安全的乘积 reducer VJP 与半径几何反向。对标实现为匹配的手写 Triton kernel 与 torch.autograd。

存档用例 测试条件 被测实现(ms) 对标实现(ms) 加速比 加速比的 95% 置信区间 性能检查
regular_random_cuda_i64_n131072_degree16_dx regular · random · hot · F1 tiga.generated_vjp 0.058 handwritten.triton 0.059 1.01× [1.01, 1.02] 通过
regular_random_cuda_i64_n131072_degree16_dweight regular · random · hot · F1 tiga.generated_vjp 0.016 handwritten.triton.saved 0.020 1.25× [1.25, 1.26] 通过
regular_random_cuda_i64_n131072_degree16_dweight_f16 regular · random · hot · F16 tiga.generated_vjp 2.054 handwritten.triton.saved 2.060 1.00× [1.00, 1.00] 通过
regular_random_cuda_i64_n131072_degree16_dweight_f64 regular · random · hot · F64 tiga.generated_vjp 2.304 handwritten.triton.saved 2.313 1.00× [1.00, 1.00] 通过
powerlaw_random_cuda_i64_n131072_degree16_dx powerlaw · random · hot · F1 tiga.generated_vjp 0.057 handwritten.triton 0.059 1.03× [1.03, 1.04] 通过
powerlaw_random_cuda_i64_n131072_degree16_dweight_f16 powerlaw · random · hot · F16 tiga.generated_vjp 1.996 handwritten.triton.saved 2.005 1.00× [1.00, 1.01] 通过
regular_edge_local_cuda_i64_n131072_degree16_product regular · edge-local · hot · F1 tiga.generated_vjp 0.072 handwritten.triton 0.073 1.02× [1.02, 1.03] 通过
radius_fixed_snapshot_cuda_n32768_d3_degree32 radius-fixed-snapshot · cell-list · hot · F4 tiga.generated_vjp 0.240 handwritten.triton 0.259 1.08× [1.07, 1.08] 通过

linear_attention

写成未归一化递推的因果线性 attention,融合为单个 scan TTIR kernel;秩四前缀状态从不物化。对标实现为官方 FLA 实现。

存档用例 测试条件 被测实现(ms) 对标实现(ms) 加速比 加速比的 95% 置信区间 性能检查
l64_t512_k16_v16_fp32 causal-prefix · dense-state · hot · F256 tiga.compiler_scan_contract 0.106 fla.chunk 0.109 1.04× [1.02, 1.05] 通过

sparse_attention

带语义准入阈值的 tile 剪枝稀疏 attention,阈值穿过 reducer IR 进入通用稠密流式 lowering。对标实现为相同剪枝阈值下的官方 flash-sparse-attn kernel。

存档用例 测试条件 被测实现(ms) 对标实现(ms) 加速比 加速比的 95% 置信区间 性能检查
b1_h16_n4096_d64_fp16 dynamic-score-tile · dense · hot · F64 tiga.compiler_tile_pruned 0.907 flash_sparse_attn.official 1.072 1.18× [1.18, 1.19] 通过

cpu_pointwise_fusion

CPU Tensor 逐点融合,lowering 为 512 位 LLVM 向量,运行在惰性创建的常驻 worker 池上。对标实现为 torch.compile/Inductor。

存档用例 测试条件 被测实现(ms) 对标实现(ms) 加速比 加速比的 95% 置信区间 性能检查
n4000000_f32_t16 contiguous · local · cold · F1 tiga.llvm.vector_parallel 0.951 torch.compile.inductor 1.020 1.07× [1.05, 1.12] 通过

cpu_relation

CPU 融合关系循环:gather、UDF 与 CSR 归约在单个嵌套 16 线程 LLVM 循环内完成。对标实现为 scipy.csr_matvec 与 CPU 上的 torch.sparse.mm。

存档用例 测试条件 被测实现(ms) 对标实现(ms) 加速比 加速比的 95% 置信区间 性能检查
regular_permuted_i32_n131072_degree16_t16 regular · permuted · hot · F1 tiga.llvm.parallel_relation 0.124 scipy.csr_matvec 0.781 6.32× [5.54, 6.66] 通过

pagerank

固定迭代 PageRank,捕获为单个 gf_control.repeat 递推,每轮迭代一个融合 TTIR kernel 加两个 ping-pong 缓冲区。对标实现为迭代次数完全相同的 torch.sparse.mm 递推。

存档用例 测试条件 被测实现(ms) 对标实现(ms) 加速比 加速比的 95% 置信区间 性能检查
cuda_fp32_iter20 regular-degree-16 · cyclic · hot · F1 · N262144 tiga.control 0.590 torch.sparse.mm 1.379 2.34× [2.31, 2.52] 通过
cuda_fp32_iter20 regular-degree-16 · cyclic · hot · F1 · N65536 tiga.control 0.190 torch.sparse.mm 0.352 1.85× [1.82, 1.88] 通过
cuda_fp32_iter20 regular-degree-32 · cyclic · hot · F1 · N262144 tiga.control 2.462 torch.sparse.mm 2.583 1.05× [1.04, 1.05] 通过
cuda_fp32_iter20 regular-degree-32 · cyclic · hot · F1 · N65536 tiga.control 0.244 torch.sparse.mm 0.380 1.56× [1.54, 1.58] 通过
cuda_fp32_iter20 regular-degree-4 · cyclic · hot · F1 · N262144 tiga.control 0.217 torch.sparse.mm 0.357 1.64× [1.61, 1.67] 通过
cuda_fp32_iter20 regular-degree-4 · cyclic · hot · F1 · N65536 tiga.control 0.190 torch.sparse.mm 0.354 1.86× [1.83, 1.92] 通过

visualization_heatmap

由普通 Tensor IR 组合的标量场 → RGB 热图准备。对标实现为 torch.compile/Inductor。

存档用例 测试条件 被测实现(ms) 对标实现(ms) 加速比 加速比的 95% 置信区间 性能检查
h2048_w2048_rgb_f32 image-grid · contiguous · consumer-only · F3 tiga.tensor_ttir 0.100 torch.inductor.fused 0.115 1.15× [1.14, 1.17] 通过