Add multi-op batch screening layer; fix cudagraph fallback regressions

run_batch.py drives run_pytest.sh per operator across GPUs (stable-hash
sharding, per-op subprocess isolation, process-group timeouts, retry with
deterministic-failure cutoff, two-level dtype fallback, .complete resume,
per-op REPLAY_FROM). batch_summary.py aggregates run.log tables into
summary.csv. ops/ holds the curated assets: dual-repo inventories rebuilt
via AST scan + pytest collect verification, shape sets migrated from the
old regression harness and merged with upstream core_shapes class-name
keys (upstream's set_shapes falls back op_name -> MRO class name ->
1-D DEFAULT_SHAPES, so replacing the shape file without class keys
crashes the BLAS family), and a dismiss list where all 76 entries carry
verified reasons. Validated end to end: 1036-op full screen with zero
failures.

Also fix two cudagraph plugin regressions: newer torch appends "enable
device-side assertions" to every CUDA error, so the loose fatal-error
marker disabled the documented do_bench fallback entirely; and an aborted
graph capture can leave the default CUDA RNG generator stuck in capturing
state, poisoning every later torch.randn - captures now run under a
throwaway RNG state. run_pytest.sh gains an optional DTYPES passthrough.
This commit is contained in:
2026-08-12 19:04:09 +00:00
parent 95895cea0e
commit da22885645
12 changed files with 14679 additions and 9 deletions
+120
View File
@@ -0,0 +1,120 @@
# 批量测试排除清单。每行一个算子:`op`(默认 main 仓)或 `repo:op`。
# run_batch.py --all 会跳过这里列出的算子;带无条件 pytest.mark.skip 的算子由
# inventory 的 marked_skip 列自动剔除,不必写在这里。
# 只放"经本仓批量跑复核确认失败"的条目,注明原因与复核日期。
#
# 2026-08-12 复核记录:
# - 旧回归清单 24 个候选全部重验:14 个新上游已修复(移出),3 个系本仓
# _cudagraph_plugin 回退失效 bug(已修复,移出),7 个确认为上游/环境问题;
# - 全量筛查(1103 算子)新增确认 67 个:43 个 torch jiterator 环境问题 +
# 24 个上游 bug/环境限制。shape 语义类失败(28 个)已通过 shape yaml 合并
# 上游 core_shapes 类名键修复,不在此列;
# - test_FLA/ 补齐后新增确认 2 个(硬件限制 + 专用 harness),共 76 条。
# ==== 上游 kernel 编译错误 [2026-08-12]
# CompilationError(关 cudagraph 后仍复现)
hstack
scaled_mm_benchmark
scaled_mm_out_benchmark
# tt.load result/ptr type 校验失败
flash_mla_with_kvcache
# PassManager::run failedFlagTree triton 编译失败)
flash_mla_sparse_fwd
vllm:flash_mla_sparse_fwd
# capture 失败回退后仍报 kernel 错误
vllm:flash_mla
vllm:flash_mla_with_kvcache
linalg_lu_factor_ex
# ==== 上游 benchmark 代码 bug [2026-08-12]
# baseline torch.trace 收到非矩阵输入(expected a matrix
trace
# set_shapes() 签名与基类调用不符(TypeError)
get_paged_mqa_logits_metadata
# 输入解包 ValueErrorexpected 3, got 1
grouped_mm
# 上游 benchmark assert 失败
get_scheduler_metadata
# is_backward 对未参与计算图的张量求梯度(allow_unused
embedding_backward
margin_ranking_loss_backward
# baseline 函数签名不符(unexpected keyword 'q' / 缺 constexpr 实参)
fp8_fp4_paged_mqa_logits
vllm:fp8_fp4_mqa_logits
# baseline 返回 NoneNoneType has no attribute 'device'
special_gammainc
# normalized_shape=[](上游默认 shape 语义错误)
native_layer_norm
# 上游断言 K>=16 与其默认 attention shape 冲突
perf_scaled_dot_product_flash_attention_backward
perf_scaled_dot_product_cudnn_attention_backward
# Triton Error [CUDA]: invalid argument(上游默认 shape 下 kernel 启动参数非法)
index_select_backward
pairwise_distance
# test_blas_perf_parallel 专用 harnessshape kind 语义与通用注入冲突;常规 mul 已覆盖)
perf_mul
# 需要 pytest-benchmark fixture(非 FlagGems Benchmark 体系)
vllm:triton_unified_attention_perf
# 自定义输出格式(非 FlagGems Benchmark 表)且预编译超 40min
vllm:perf_chunk_gla
# ==== 硬件限制 [2026-08-12]
# kernel 共享内存需求 245-335KB 超 H20 上限 227KBautotune 全候选 OutOfResources
vllm:chunk_gdn2
# ==== 环境限制(换环境后应重验)[2026-08-12]
# vllm 0.20.2 无 vllm.utils.deep_gemm.fp8_mqa_logits
fp8_mqa_logits
# FA2 不支持 num_splits > 1flash-attn 版本)
flash_attn_varlen_opt_func
# magma 显存分配失败(cannot allocate memory on GPU, info=-113
cholesky_solve
cholesky_solve_out
# cusolver INTERNAL_ERRORXgeev
linalg_eigvals
# ---- torch jiterator/NVRTC 在本环境编译失败(fp32 也复现),
# ---- sinc/bessel/special 族的 torch baseline 整体不可用:
erfc
erfc_
erfinv
erfinv_
lcm
lcm_
lgamma
lgamma_
mvlgamma
mvlgamma_
polygamma
polygamma_inplace
polygamma_out
sinc
sinc_
special_airy_ai
special_airy_ai_out
special_bessel_j0
special_bessel_j1
special_chebyshev_polynomial_u
special_chebyshev_polynomial_v
special_chebyshev_polynomial_w
special_chebyshev_polynomial_w_out
special_erfc
special_erfcx
special_erfinv
special_erfinv_out
special_gammaln
special_gammaln_out
special_hermite_polynomial_h
special_i1e
special_legendre_polynomial_p
special_log1p_non_tensor
special_modified_bessel_k0
special_modified_bessel_k0_out
special_modified_bessel_k1
special_modified_bessel_k1_out
special_scaled_modified_bessel_k1
special_scaled_modified_bessel_k1_out
special_shifted_chebyshev_polynomial_u
special_shifted_chebyshev_polynomial_u_
special_shifted_chebyshev_polynomial_v
special_shifted_chebyshev_polynomial_w
special_sinc
+294
View File
@@ -0,0 +1,294 @@
#!/usr/bin/env python3
"""重建批量测试的算子清单(inventory),并可校验迁移 shape yaml。
对每个 FlagGems 仓库静态扫描 benchmark/ 下的 test_*.py(含 test_ 前缀的
子目录,如 test_FLA/——op_file 记相对路径去前后缀,run_pytest.sh 的
`benchmark/test_${OP_FILE}.py` 拼接对其天然成立;models_benchmark/ 等
非 test_ 前缀路径不在性能批量范围):
- 每个模块级 test_* 函数出一行 inventoryop(函数名去 test_ 前缀,即
run_pytest.sh 的 OP)、op_file(文件名去 test_ 前缀/.py 后缀,即 OP_FILE);
- 标注 marked_skip(函数带无条件 pytest.mark.skip,跑了必 SKIP,批量驱动默认剔除);
- 提取 op_name 字符串常量(op_name= 关键字实参,以及 *Benchmark 类
__init__ 里 super().__init__ 的首个字符串位置实参),用于 shape yaml 键校验;
- --verify-collect 时额外跑一次 pytest --collect-only 核实函数确实可被收集
AST 见到 ≠ pytest 收得到,import 失败/条件定义都会导致差异)。
产物:
ops/inventory_<label>.csv # repo,op,op_file,file,marked_skip,collected,op_names
--migrate-shapes 时按 op_name 并集过滤输入 yaml、合并上游 core_shapes 底座:
<out>.yaml + <out>.unmatched.yaml(未匹配任何 op_name 的键,供人工复核后删除)
用法示例(默认扫描两个新仓库):
python ops/gen_inventory.py --verify-collect
# 上游 op_name/core_shapes 变动后,对现有 shape 集重新校验(输入=输出即原地刷新)
python ops/gen_inventory.py --migrate-shapes ops/shapes_single.yaml \
--shapes-out ops/shapes_single.yaml
"""
from __future__ import annotations
import argparse
import ast
import csv
import os
import subprocess
import sys
from pathlib import Path
from typing import Dict, List, Optional, Set, Tuple
import yaml
OPS_DIR = Path(__file__).resolve().parent
DEFAULT_REPOS = [
("main", Path("/workspace/dev/FlagGems")),
("vllm", Path("/workspace/dev/FlagGems-vllm")),
]
INVENTORY_FIELDS = ["repo", "op", "op_file", "file", "marked_skip", "collected", "op_names"]
def parse_args() -> argparse.Namespace:
p = argparse.ArgumentParser(description=__doc__.splitlines()[0])
p.add_argument("--repo", action="append", default=None, metavar="LABEL=PATH",
help="要扫描的仓库(可多次),默认 main=/workspace/dev/FlagGems "
"与 vllm=/workspace/dev/FlagGems-vllm")
p.add_argument("--verify-collect", action="store_true",
help="用 pytest --collect-only 核实每个测试函数可被收集(慢,"
"需要完整运行环境;结果写进 collected 列)")
p.add_argument("--out-dir", type=Path, default=OPS_DIR,
help="inventory CSV 输出目录(默认 ops/")
p.add_argument("--migrate-shapes", type=Path, default=None,
help="旧 shape yaml 路径;按扫描出的 op_name 并集过滤后迁移")
p.add_argument("--shapes-out", type=Path, default=None,
help="迁移后 yaml 输出路径(--migrate-shapes 时必填)")
return p.parse_args()
def _resolve_repos(raw: Optional[List[str]]) -> List[Tuple[str, Path]]:
if not raw:
return [(label, path) for label, path in DEFAULT_REPOS if path.is_dir()]
repos = []
for item in raw:
label, _, path = item.partition("=")
if not path:
raise SystemExit(f"--repo 需要 LABEL=PATH 形式,收到: {item!r}")
repos.append((label, Path(path)))
return repos
def _is_unconditional_skip(dec: ast.AST) -> bool:
"""pytest.mark.skip(非 skipif)——带不带 reason 实参都算无条件。"""
target = dec.func if isinstance(dec, ast.Call) else dec
if not (isinstance(target, ast.Attribute) and target.attr == "skip"):
return False
mark = target.value
return (isinstance(mark, ast.Attribute) and mark.attr == "mark"
and isinstance(mark.value, ast.Name) and mark.value.id == "pytest")
def _op_names_in(node: ast.AST) -> Set[str]:
"""节点范围内的 op_name 字符串常量,覆盖三种上游写法:
1. 任意调用的 op_name= 关键字实参;
2. super().__init__ 的首个字符串位置实参(FusedDeepseekV4... 模式);
3. *Benchmark 类实例化的首个字符串位置实参(ScaledMMBenchmark("scaled_mm",
...) 这类经形参转发、常量提取够不到 super() 调用的模式)。
误报只会让 shape yaml 多留一个无人读取的键,无害。"""
names: Set[str] = set()
for sub in ast.walk(node):
if not isinstance(sub, ast.Call):
continue
for kw in sub.keywords:
if kw.arg == "op_name" and isinstance(kw.value, ast.Constant) \
and isinstance(kw.value.value, str):
names.add(kw.value.value)
first_str = (sub.args[0].value
if sub.args and isinstance(sub.args[0], ast.Constant)
and isinstance(sub.args[0].value, str) else None)
if first_str is None:
continue
func = sub.func
if (isinstance(func, ast.Attribute) and func.attr == "__init__"
and isinstance(func.value, ast.Call)
and isinstance(func.value.func, ast.Name)
and func.value.func.id == "super"):
names.add(first_str)
callee = func.id if isinstance(func, ast.Name) else (
func.attr if isinstance(func, ast.Attribute) else "")
if callee.endswith("Benchmark"):
names.add(first_str)
return names
def scan_repo(label: str, root: Path) -> Tuple[List[Dict[str, str]], Set[str]]:
"""返回 (inventory 行, 该仓库全部 op_name 集合)。"""
bench = root / "benchmark"
rows: List[Dict[str, str]] = []
op_names_all: Set[str] = set()
for path in sorted(bench.rglob("test_*.py")):
rel = path.relative_to(bench)
# 仅收 test_ 前缀链路(根级 test_x.py 与 test_XXX/ 子目录),保证
# "benchmark/test_" + op_file + ".py" 能原样重建路径。
if not str(rel).startswith("test_"):
continue
try:
tree = ast.parse(path.read_text())
except SyntaxError as exc:
print(f"[gen] warning: {path} 解析失败,跳过: {exc}", file=sys.stderr)
continue
op_names_all |= _op_names_in(tree)
op_file = str(rel)[len("test_"):-len(".py")]
for node in tree.body:
if not isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)):
continue
if not node.name.startswith("test_"):
continue
marked = any(_is_unconditional_skip(d) for d in node.decorator_list)
func_ops = sorted(_op_names_in(node))
rows.append({
"repo": label,
"op": node.name[len("test_"):],
"op_file": op_file,
"file": f"benchmark/{rel}",
"marked_skip": "yes" if marked else "",
"collected": "",
"op_names": ";".join(func_ops),
})
return rows, op_names_all
def verify_collect(label: str, root: Path, rows: List[Dict[str, str]]) -> None:
"""跑 pytest --collect-only 核实测试函数可被收集,写 collected 列。"""
env = os.environ.copy()
env.setdefault("GEMS_VENDOR", "nvidia") # 跳过 nvidia-smi 子进程探测(可能挂死)
proc = subprocess.run(
[sys.executable, "-m", "pytest", "--collect-only", "-q",
"--continue-on-collection-errors", "benchmark/"],
cwd=str(root), text=True, capture_output=True, env=env, timeout=1200,
)
collected_funcs: Set[Tuple[str, str]] = set()
for line in proc.stdout.splitlines():
line = line.strip()
if "::" not in line or not line.startswith("benchmark/"):
continue
file_part, _, rest = line.partition("::")
func = rest.split("::")[0].split("[")[0]
collected_funcs.add((file_part, func))
if not collected_funcs:
print(f"[gen] warning: {label} collect 无结果 (rc={proc.returncode})"
f"stderr 尾部: {proc.stderr[-500:]}", file=sys.stderr)
return
for row in rows:
key = (row["file"], f"test_{row['op']}")
row["collected"] = "yes" if key in collected_funcs else "no"
n_missing = sum(1 for r in rows if r["collected"] == "no")
if n_missing:
print(f"[gen] {label}: {n_missing} 个 AST 可见但 pytest 未收集到的函数"
f"import 失败/条件定义),inventory 中 collected=no")
def carry_over_collected(out_dir: Path, label: str,
rows: List[Dict[str, str]]) -> None:
"""未跑 --verify-collect 时,从已有 CSV 继承 collected 列,避免重写清单时
把上次核实的结果冲掉。"""
path = out_dir / f"inventory_{label}.csv"
if not path.is_file():
return
with path.open(newline="") as f:
prev = {(r["op"], r["op_file"]): r.get("collected", "")
for r in csv.DictReader(f)}
for row in rows:
row["collected"] = prev.get((row["op"], row["op_file"]), "")
def write_inventory(out_dir: Path, label: str, rows: List[Dict[str, str]]) -> Path:
out = out_dir / f"inventory_{label}.csv"
tmp = out.with_name(out.name + ".tmp")
with tmp.open("w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=INVENTORY_FIELDS)
writer.writeheader()
writer.writerows(rows)
os.replace(tmp, out)
return out
def migrate_shapes(old_path: Path, out_path: Path, valid_op_names: Set[str],
repos: List[Tuple[str, Path]]) -> None:
"""迁移旧 shape yaml,并以上游 core_shapes.yaml 为底座合并。
上游 set_shapes 的回退链是 op_name 键 → MRO 类名键(BlasBenchmark 等)→
基类 DEFAULT_SHAPES1 维)。--shape_file 是整体替换而非叠加,若我们的
yaml 缺少类名级条目,BLAS 这类需要 (B,M,N,K) 的算子会跌到 1 维默认值上
解包崩溃。因此把各仓库 core_shapes.yaml 里我们没有的键(含类名键与
op 级键)原样并入,迁移条目优先,先并 main 后并 vllm(同名键先到先得)。"""
data = yaml.safe_load(old_path.read_text()) or {}
core_maps = []
for label, root in repos:
core = root / "benchmark" / "core_shapes.yaml"
if core.is_file():
core_maps.append((label, yaml.safe_load(core.read_text()) or {}))
core_keys = {k for _, m in core_maps for k in m}
kept = {k: v for k, v in data.items() if k in valid_op_names}
# core_shapes 来源的键(类名键等)不算"未匹配"——它们每次都从上游取新版,
# 这样输入=输出的在地刷新也能同步上游 core_shapes 的变动。
dropped = {k: v for k, v in data.items()
if k not in valid_op_names and k not in core_keys}
n_curated = len(kept)
merged_from = []
for label, m in core_maps:
n_before = len(kept)
for key, val in m.items():
kept.setdefault(key, val)
merged_from.append(f"{label}:+{len(kept) - n_before}")
header = (f"# 由 gen_inventory.py 从 {old_path.name} 迁移:保留新上游仍存在的"
f" op_name 键 {n_curated}/{len(data)}"
f"并合并上游 core_shapes.yaml 缺失键({' '.join(merged_from)})。\n"
"# 顶层键 = FlagGems op_name 或 Benchmark 类名(上游回退链需要);\n"
"# 两者都无键的算子使用其基类 DEFAULT_SHAPES。\n")
out_path.write_text(header + yaml.safe_dump(
kept, sort_keys=True, default_flow_style=None, allow_unicode=True))
if dropped:
unmatched = out_path.with_suffix(".unmatched.yaml")
unmatched.write_text(
f"# {old_path.name} 中未匹配新上游任何 op_name 的键({len(dropped)} 个),"
"供人工复核后手动挪回。\n"
+ yaml.safe_dump(dropped, sort_keys=True, default_flow_style=None,
allow_unicode=True))
print(f"[gen] shapes: 保留 {len(kept)},剔除 {len(dropped)} -> {unmatched}")
else:
print(f"[gen] shapes: 全部 {len(kept)} 个键有效")
# 覆盖率:有效 op_name 里有多少没有 shape 条目(用上游默认 shape,仅提示)
uncovered = sorted(valid_op_names - set(kept))
print(f"[gen] shapes: 新上游 {len(valid_op_names)} 个 op_name 中 "
f"{len(uncovered)} 个无 shape 条目(将用上游默认 shape)")
def main() -> None:
args = parse_args()
repos = _resolve_repos(args.repo)
if not repos:
raise SystemExit("没有可扫描的仓库")
args.out_dir.mkdir(parents=True, exist_ok=True)
all_op_names: Set[str] = set()
for label, root in repos:
rows, op_names = scan_repo(label, root)
all_op_names |= op_names
if args.verify_collect:
verify_collect(label, root, rows)
else:
carry_over_collected(args.out_dir, label, rows)
out = write_inventory(args.out_dir, label, rows)
n_skip = sum(1 for r in rows if r["marked_skip"])
print(f"[gen] {label}: {len(rows)} 个测试函数 -> {out}"
f"(其中 {n_skip} 个带无条件 skip 标记)")
if args.migrate_shapes:
if not args.shapes_out:
raise SystemExit("--migrate-shapes 需要同时给 --shapes-out")
migrate_shapes(args.migrate_shapes, args.shapes_out, all_op_names, repos)
if __name__ == "__main__":
main()
File diff suppressed because it is too large Load Diff
+109
View File
@@ -0,0 +1,109 @@
repo,op,op_file,file,marked_skip,collected,op_names
vllm,perf_chunk_gated_delta_rule_fwd,FLA/test_chunk_gated_delta_rule_fwd,benchmark/test_FLA/test_chunk_gated_delta_rule_fwd.py,,yes,chunk_gated_delta_rule_fwd
vllm,perf_chunk_gated_delta_rule,FLA/test_chunk_gated_delta_rule_perf,benchmark/test_FLA/test_chunk_gated_delta_rule_perf.py,,yes,chunk_gated_delta_rule
vllm,chunk_gdn2,FLA/test_chunk_gdn2,benchmark/test_FLA/test_chunk_gdn2.py,,yes,chunk_gdn2
vllm,perf_chunk_gla,FLA/test_chunk_gla_perf,benchmark/test_FLA/test_chunk_gla_perf.py,,yes,
vllm,chunk_kda,FLA/test_chunk_kda,benchmark/test_FLA/test_chunk_kda.py,,yes,chunk_kda
vllm,perf_fused_recurrent_gated_delta_rule,FLA/test_fused_recurrent_gated_delta_rule_perf,benchmark/test_FLA/test_fused_recurrent_gated_delta_rule_perf.py,,yes,fused_recurrent_gated_delta_rule
vllm,act_quant_perf,act_quant,benchmark/test_act_quant.py,,yes,act_quant_triton
vllm,add_rms_norm,add_rms_norm,benchmark/test_add_rms_norm.py,,yes,add_rms_norm
vllm,apply_repetition_penalties,apply_repetition_penalties,benchmark/test_apply_repetition_penalties.py,,yes,apply_repetition_penalties
vllm,apply_rotary_pos_emb,apply_rotary_pos_emb,benchmark/test_apply_rotary_pos_emb.py,,yes,apply_rotary_pos_emb
vllm,beam_search_score,beam_search_score,benchmark/test_beam_search_score.py,,yes,beam_search_score
vllm,beam_search_score_,beam_search_score,benchmark/test_beam_search_score.py,,yes,beam_search_score_
vllm,bincount,bincount,benchmark/test_bincount.py,,yes,bincount
vllm,bincount_weighted,bincount,benchmark/test_bincount.py,,yes,bincount_weighted
vllm,blas_benchmark,blas_perf_parallel,benchmark/test_blas_perf_parallel.py,,yes,
vllm,perf_w8a8_block_fp8_matmul,blas_perf_parallel,benchmark/test_blas_perf_parallel.py,,yes,w8a8_block_fp8_matmul
vllm,perf_w8a8_block_fp8_matmul_deepgemm,blas_perf_parallel,benchmark/test_blas_perf_parallel.py,,yes,w8a8_block_fp8_matmul_deepgemm
vllm,perf_sparse_attention,blas_perf_parallel,benchmark/test_blas_perf_parallel.py,,yes,sparse_attention
vllm,mv_and_outer_benchmark,blas_perf_parallel,benchmark/test_blas_perf_parallel.py,,yes,
vllm,addmv_benchmark,blas_perf_parallel,benchmark/test_blas_perf_parallel.py,,yes,
vllm,vdot_benchmark,blas_perf_parallel,benchmark/test_blas_perf_parallel.py,,yes,vdot
vllm,addr_benchmark,blas_perf_parallel,benchmark/test_blas_perf_parallel.py,,yes,addr
vllm,perf_router_gemm,blas_perf_parallel,benchmark/test_blas_perf_parallel.py,,yes,router_gemm
vllm,concat_and_cache_mla,concat_and_cache_mla,benchmark/test_concat_and_cache_mla.py,,yes,concat_and_cache_mla
vllm,cp_gather_indexer_k_quant_cache_benchmark,cp_gather_indexer_k_quant_cache,benchmark/test_cp_gather_indexer_k_quant_cache.py,,yes,
vllm,cross_entropy_loss,cross_entropy_loss,benchmark/test_cross_entropy_loss.py,,yes,cross_entropy_loss
vllm,cutlass_scaled_mm_benchmark,cutlass_scaled_mm,benchmark/test_cutlass_scaled_mm.py,,yes,
vllm,combine_topk_swa_indices_benchmark,deepseek_v4_attention_combine_topk_swa_indices,benchmark/test_deepseek_v4_attention_combine_topk_swa_indices.py,,yes,
vllm,compute_global_topk_indices_and_lens_benchmark,deepseek_v4_attention_compute_global_topk_indices_and_lens,benchmark/test_deepseek_v4_attention_compute_global_topk_indices_and_lens.py,,yes,
vllm,dequantize_and_gather_k_cache_benchmark,deepseek_v4_attention_dequantize_and_gather_k_cache,benchmark/test_deepseek_v4_attention_dequantize_and_gather_k_cache.py,,yes,
vllm,fused_q_kv_rmsnorm_benchmark,deepseek_v4_attention_fused_q_kv_rmsnorm,benchmark/test_deepseek_v4_attention_fused_q_kv_rmsnorm.py,,yes,
vllm,dgeglu,dgeglu,benchmark/test_dgeglu.py,,yes,dgeglu
vllm,dreglu,dreglu,benchmark/test_dreglu.py,,yes,dreglu
vllm,dswiglu,dswiglu,benchmark/test_dswiglu.py,,yes,dswiglu
vllm,flash_attention_forward,flash_attention_forward,benchmark/test_flash_attention_forward.py,,yes,flash_attention_forward
vllm,flash_attn_varlen_func,flash_attn_varlen_func,benchmark/test_flash_attn_varlen_func.py,,yes,flash_attn_varlen_func
vllm,flash_attn_varlen_opt_func,flash_attn_varlen_opt_init_func,benchmark/test_flash_attn_varlen_opt_init_func.py,,yes,flash_attn_varlen_func
vllm,flash_mla,flash_mla,benchmark/test_flash_mla.py,,yes,flash_mla
vllm,flash_mla_sparse_fwd,flash_mla_sparse_fwd,benchmark/test_flash_mla_sparse_fwd.py,,yes,
vllm,flash_mla_with_kvcache,flash_mla_with_kvcache,benchmark/test_flash_mla_with_kvcache.py,,yes,
vllm,fp8_fp4_mqa_logits,fp8_fp4_mqa_logits,benchmark/test_fp8_fp4_mqa_logits.py,,yes,fp8_fp4_mqa_logits
vllm,fp8_fp4_paged_mqa_logits,fp8_fp4_paged_mqa_logits,benchmark/test_fp8_fp4_paged_mqa_logits.py,,yes,fp8_fp4_paged_mqa_logits
vllm,fused_add_rms_norm,fused_add_rms_norm,benchmark/test_fused_add_rms_norm.py,,yes,fused_add_rms_norm
vllm,fused_deepseek_v4_qnorm_rope_kv_rope_quant_insert,fused_deepseek_v4_qnorm_rope_kv_rope_quant_insert,benchmark/test_fused_deepseek_v4_qnorm_rope_kv_rope_quant_insert.py,,yes,
vllm,fused_indexer_q_rope_quant,fused_indexer_q_rope_quant,benchmark/test_fused_indexer_q_rope_quant.py,,yes,fused_indexer_q_rope_quant
vllm,fused_inv_rope_fp8_quant,fused_inv_rope_fp8_quant,benchmark/test_fused_inv_rope_fp8_quant.py,,yes,fused_inv_rope_fp8_quant
vllm,fused_marlin_moe,fused_marlin_moe,benchmark/test_fused_marlin_moe.py,,yes,fused_marlin_moe
vllm,fused_moe_impl_gems_vs_vllm,fused_moe,benchmark/test_fused_moe.py,,yes,fused_experts_impl
vllm,fused_moe_fp8,fused_moe_fp8,benchmark/test_fused_moe_fp8.py,,yes,fused_experts_impl
vllm,fused_moe_fp8_blockwise,fused_moe_fp8_blockwise,benchmark/test_fused_moe_fp8_blockwise.py,,yes,fused_experts_impl
vllm,fused_moe_int4_w4a16,fused_moe_int4_w4a16,benchmark/test_fused_moe_int4_w4a16.py,,yes,fused_experts_impl
vllm,fused_experts_impl_int8,fused_moe_int8,benchmark/test_fused_moe_int8.py,,yes,fused_experts_impl
vllm,fused_experts_impl_int8_w8a16,fused_moe_int8_w8a16,benchmark/test_fused_moe_int8_w8a16.py,,yes,fused_moe_int8_w8a16_gems_vs_bf16_deq
vllm,fused_moe_w8a16_mxq,fused_moe_w8a16,benchmark/test_fused_moe_w8a16.py,,yes,fused_moe_w8a16_mxq_gems_vs_bf16_deq
vllm,fused_moe_w8a16_mxq_gems_vs_vllm,fused_moe_w8a16,benchmark/test_fused_moe_w8a16.py,,yes,fused_moe_w8a16_mxq_gems_vs_vllm
vllm,geglu,geglu,benchmark/test_geglu.py,,yes,geglu
vllm,gelu_and_mul,gelu_and_mul,benchmark/test_gelu_and_mul.py,,yes,gelu_and_mul
vllm,grouped_topk_no_renorm,grouped_topk,benchmark/test_grouped_topk.py,,yes,grouped_topk
vllm,grouped_topk_score_0,grouped_topk,benchmark/test_grouped_topk.py,,yes,grouped_topk
vllm,grouped_topk_score_1,grouped_topk,benchmark/test_grouped_topk.py,,yes,grouped_topk
vllm,indexer_k_quant_and_cache_benchmark,indexer_k_quant_and_cache,benchmark/test_indexer_k_quant_and_cache.py,,yes,
vllm,inplace_fused_experts_gems_vs_vllm,inplace_fused_experts,benchmark/test_inplace_fused_experts.py,,yes,inplace_fused_experts
vllm,instance_norm,instance_norm,benchmark/test_instance_norm.py,,yes,instance_norm
vllm,mhc_post,mhc,benchmark/test_mhc.py,,yes,mhc_post
vllm,mhc_pre,mhc,benchmark/test_mhc.py,,yes,mhc_pre
vllm,hc_split_sinkhorn_forward,mhc,benchmark/test_mhc.py,,yes,hc_split_sinkhorn_forward
vllm,mhc_bwd,mhc,benchmark/test_mhc.py,,yes,mhc_bwd
vllm,hc_head_fused_kernel,mhc,benchmark/test_mhc.py,,yes,hc_head_fused_kernel
vllm,moe_align_block_size_triton,moe_align_block_size_triton,benchmark/test_moe_align_block_size_triton.py,,yes,moe_align_block_size_triton
vllm,moe_sum,moe_sum,benchmark/test_moe_sum.py,,yes,moe_sum
vllm,mrope_gems_vs_torch,mrope,benchmark/test_mrope.py,,yes,mrope
vllm,outer,outer,benchmark/test_outer.py,,yes,outer
vllm,outplace_fused_experts_gems_vs_vllm,outplace_fused_experts,benchmark/test_outplace_fused_experts.py,,yes,outplace_fused_experts
vllm,pack_seq,pack_seq,benchmark/test_pack_seq.py,,yes,pack_seq_triton
vllm,pack_seq_fp8,pack_seq,benchmark/test_pack_seq.py,,yes,pack_seq_triton
vllm,perf_parallel_nsa,parallel_nsa,benchmark/test_parallel_nsa.py,,yes,parallel_nsa
vllm,perf_parallel_nsa_compression,parallel_nsa_compression,benchmark/test_parallel_nsa_compression.py,,yes,parallel_nsa_compression
vllm,per_token_group_quant_fp8,per_token_group_quant_fp8,benchmark/test_per_token_group_quant_fp8.py,,yes,per_token_group_quant_fp8
vllm,persistent_topk,persistent_topk,benchmark/test_persistent_topk.py,,yes,persistent_topk
vllm,reglu,reglu,benchmark/test_reglu.py,,yes,reglu
vllm,reshape_and_cache,reshape_and_cache,benchmark/test_reshape_and_cache.py,,yes,reshape_and_cache
vllm,reshape_and_cache_flash,reshape_and_cache_flash,benchmark/test_reshape_and_cache_flash.py,,yes,reshape_and_cache_flash
vllm,perf_router_gemm,router_gemm,benchmark/test_router_gemm.py,,yes,router_gemm
vllm,rwkv_ka_fusion,rwkv_ka_fusion,benchmark/test_rwkv_ka_fusion.py,,yes,rwkv_ka_fusion
vllm,rwkv_mm_sparsity,rwkv_mm_sparsity,benchmark/test_rwkv_mm_sparsity.py,,yes,rwkv_mm_sparsity
vllm,dynamic_scaled_int8_quant,scaled_int8_quant,benchmark/test_scaled_int8_quant.py,,yes,dynamic_scaled_int8_quant
vllm,static_scaled_int8_quant,scaled_int8_quant,benchmark/test_scaled_int8_quant.py,,yes,static_scaled_int8_quant
vllm,silu_and_mul,silu_and_mul,benchmark/test_silu_and_mul.py,,yes,silu_and_mul
vllm,silu_and_mul_out,silu_and_mul,benchmark/test_silu_and_mul.py,,yes,silu_and_mul_out
vllm,silu_and_mul_with_clamp,silu_and_mul_with_clamp,benchmark/test_silu_and_mul_with_clamp.py,,yes,silu_and_mul_with_clamp
vllm,silu_and_mul_with_clamp_out,silu_and_mul_with_clamp,benchmark/test_silu_and_mul_with_clamp.py,,yes,silu_and_mul_with_clamp_out
vllm,skip_layernorm,skip_layer_norm,benchmark/test_skip_layer_norm.py,,yes,skip_layer_norm
vllm,sparse_attn_triton,sparse_attention,benchmark/test_sparse_attention.py,yes,yes,sparse_attention
vllm,sparse_mla_fwd_interface,sparse_mla_fwd_interface,benchmark/test_sparse_mla_fwd_interface.py,,yes,sparse_mla_fwd_interface
vllm,stage_deepseek_v4_mega_moe_inputs_benchmark,stage_deepseek_v4_mega_moe_inputs,benchmark/test_stage_deepseek_v4_mega_moe_inputs.py,,yes,
vllm,swiglu,swiglu,benchmark/test_swiglu.py,,yes,swiglu
vllm,top_k_per_row_decode,top_k_per_row_decode,benchmark/test_top_k_per_row_decode.py,,yes,top_k_per_row_decode
vllm,top_k_per_row_prefill,top_k_per_row_prefill,benchmark/test_top_k_per_row_prefill.py,,yes,top_k_per_row_prefill
vllm,topk_softmax,topk_softmax,benchmark/test_topk_softmax.py,,yes,topk_softmax
vllm,topk_softplus_sqrt,topk_softplus_sqrt,benchmark/test_topk_softplus_sqrt.py,,yes,topk_softplus_sqrt
vllm,triton_scaled_mm_benchmark,triton_scaled_mm,benchmark/test_triton_scaled_mm.py,,yes,triton_scaled_mm
vllm,triton_unified_attention_perf,triton_unified_attention_perf,benchmark/test_triton_unified_attention_perf.py,,yes,
vllm,unpack_seq,unpack_seq,benchmark/test_unpack_seq.py,,yes,unpack_seq_triton
vllm,unpack_seq_fp8,unpack_seq,benchmark/test_unpack_seq.py,,yes,unpack_seq_triton
vllm,weight_norm_dim0,weight_norm,benchmark/test_weight_norm.py,,yes,weight_norm
vllm,weight_norm_dim_last,weight_norm,benchmark/test_weight_norm.py,,yes,weight_norm
vllm,weight_norm_interface,weight_norm_interface,benchmark/test_weight_norm_interface.py,,yes,weight_norm_interface
vllm,weight_norm_interface_backward,weight_norm_interface,benchmark/test_weight_norm_interface.py,,yes,weight_norm_interface_backward
1 repo op op_file file marked_skip collected op_names
2 vllm perf_chunk_gated_delta_rule_fwd FLA/test_chunk_gated_delta_rule_fwd benchmark/test_FLA/test_chunk_gated_delta_rule_fwd.py yes chunk_gated_delta_rule_fwd
3 vllm perf_chunk_gated_delta_rule FLA/test_chunk_gated_delta_rule_perf benchmark/test_FLA/test_chunk_gated_delta_rule_perf.py yes chunk_gated_delta_rule
4 vllm chunk_gdn2 FLA/test_chunk_gdn2 benchmark/test_FLA/test_chunk_gdn2.py yes chunk_gdn2
5 vllm perf_chunk_gla FLA/test_chunk_gla_perf benchmark/test_FLA/test_chunk_gla_perf.py yes
6 vllm chunk_kda FLA/test_chunk_kda benchmark/test_FLA/test_chunk_kda.py yes chunk_kda
7 vllm perf_fused_recurrent_gated_delta_rule FLA/test_fused_recurrent_gated_delta_rule_perf benchmark/test_FLA/test_fused_recurrent_gated_delta_rule_perf.py yes fused_recurrent_gated_delta_rule
8 vllm act_quant_perf act_quant benchmark/test_act_quant.py yes act_quant_triton
9 vllm add_rms_norm add_rms_norm benchmark/test_add_rms_norm.py yes add_rms_norm
10 vllm apply_repetition_penalties apply_repetition_penalties benchmark/test_apply_repetition_penalties.py yes apply_repetition_penalties
11 vllm apply_rotary_pos_emb apply_rotary_pos_emb benchmark/test_apply_rotary_pos_emb.py yes apply_rotary_pos_emb
12 vllm beam_search_score beam_search_score benchmark/test_beam_search_score.py yes beam_search_score
13 vllm beam_search_score_ beam_search_score benchmark/test_beam_search_score.py yes beam_search_score_
14 vllm bincount bincount benchmark/test_bincount.py yes bincount
15 vllm bincount_weighted bincount benchmark/test_bincount.py yes bincount_weighted
16 vllm blas_benchmark blas_perf_parallel benchmark/test_blas_perf_parallel.py yes
17 vllm perf_w8a8_block_fp8_matmul blas_perf_parallel benchmark/test_blas_perf_parallel.py yes w8a8_block_fp8_matmul
18 vllm perf_w8a8_block_fp8_matmul_deepgemm blas_perf_parallel benchmark/test_blas_perf_parallel.py yes w8a8_block_fp8_matmul_deepgemm
19 vllm perf_sparse_attention blas_perf_parallel benchmark/test_blas_perf_parallel.py yes sparse_attention
20 vllm mv_and_outer_benchmark blas_perf_parallel benchmark/test_blas_perf_parallel.py yes
21 vllm addmv_benchmark blas_perf_parallel benchmark/test_blas_perf_parallel.py yes
22 vllm vdot_benchmark blas_perf_parallel benchmark/test_blas_perf_parallel.py yes vdot
23 vllm addr_benchmark blas_perf_parallel benchmark/test_blas_perf_parallel.py yes addr
24 vllm perf_router_gemm blas_perf_parallel benchmark/test_blas_perf_parallel.py yes router_gemm
25 vllm concat_and_cache_mla concat_and_cache_mla benchmark/test_concat_and_cache_mla.py yes concat_and_cache_mla
26 vllm cp_gather_indexer_k_quant_cache_benchmark cp_gather_indexer_k_quant_cache benchmark/test_cp_gather_indexer_k_quant_cache.py yes
27 vllm cross_entropy_loss cross_entropy_loss benchmark/test_cross_entropy_loss.py yes cross_entropy_loss
28 vllm cutlass_scaled_mm_benchmark cutlass_scaled_mm benchmark/test_cutlass_scaled_mm.py yes
29 vllm combine_topk_swa_indices_benchmark deepseek_v4_attention_combine_topk_swa_indices benchmark/test_deepseek_v4_attention_combine_topk_swa_indices.py yes
30 vllm compute_global_topk_indices_and_lens_benchmark deepseek_v4_attention_compute_global_topk_indices_and_lens benchmark/test_deepseek_v4_attention_compute_global_topk_indices_and_lens.py yes
31 vllm dequantize_and_gather_k_cache_benchmark deepseek_v4_attention_dequantize_and_gather_k_cache benchmark/test_deepseek_v4_attention_dequantize_and_gather_k_cache.py yes
32 vllm fused_q_kv_rmsnorm_benchmark deepseek_v4_attention_fused_q_kv_rmsnorm benchmark/test_deepseek_v4_attention_fused_q_kv_rmsnorm.py yes
33 vllm dgeglu dgeglu benchmark/test_dgeglu.py yes dgeglu
34 vllm dreglu dreglu benchmark/test_dreglu.py yes dreglu
35 vllm dswiglu dswiglu benchmark/test_dswiglu.py yes dswiglu
36 vllm flash_attention_forward flash_attention_forward benchmark/test_flash_attention_forward.py yes flash_attention_forward
37 vllm flash_attn_varlen_func flash_attn_varlen_func benchmark/test_flash_attn_varlen_func.py yes flash_attn_varlen_func
38 vllm flash_attn_varlen_opt_func flash_attn_varlen_opt_init_func benchmark/test_flash_attn_varlen_opt_init_func.py yes flash_attn_varlen_func
39 vllm flash_mla flash_mla benchmark/test_flash_mla.py yes flash_mla
40 vllm flash_mla_sparse_fwd flash_mla_sparse_fwd benchmark/test_flash_mla_sparse_fwd.py yes
41 vllm flash_mla_with_kvcache flash_mla_with_kvcache benchmark/test_flash_mla_with_kvcache.py yes
42 vllm fp8_fp4_mqa_logits fp8_fp4_mqa_logits benchmark/test_fp8_fp4_mqa_logits.py yes fp8_fp4_mqa_logits
43 vllm fp8_fp4_paged_mqa_logits fp8_fp4_paged_mqa_logits benchmark/test_fp8_fp4_paged_mqa_logits.py yes fp8_fp4_paged_mqa_logits
44 vllm fused_add_rms_norm fused_add_rms_norm benchmark/test_fused_add_rms_norm.py yes fused_add_rms_norm
45 vllm fused_deepseek_v4_qnorm_rope_kv_rope_quant_insert fused_deepseek_v4_qnorm_rope_kv_rope_quant_insert benchmark/test_fused_deepseek_v4_qnorm_rope_kv_rope_quant_insert.py yes
46 vllm fused_indexer_q_rope_quant fused_indexer_q_rope_quant benchmark/test_fused_indexer_q_rope_quant.py yes fused_indexer_q_rope_quant
47 vllm fused_inv_rope_fp8_quant fused_inv_rope_fp8_quant benchmark/test_fused_inv_rope_fp8_quant.py yes fused_inv_rope_fp8_quant
48 vllm fused_marlin_moe fused_marlin_moe benchmark/test_fused_marlin_moe.py yes fused_marlin_moe
49 vllm fused_moe_impl_gems_vs_vllm fused_moe benchmark/test_fused_moe.py yes fused_experts_impl
50 vllm fused_moe_fp8 fused_moe_fp8 benchmark/test_fused_moe_fp8.py yes fused_experts_impl
51 vllm fused_moe_fp8_blockwise fused_moe_fp8_blockwise benchmark/test_fused_moe_fp8_blockwise.py yes fused_experts_impl
52 vllm fused_moe_int4_w4a16 fused_moe_int4_w4a16 benchmark/test_fused_moe_int4_w4a16.py yes fused_experts_impl
53 vllm fused_experts_impl_int8 fused_moe_int8 benchmark/test_fused_moe_int8.py yes fused_experts_impl
54 vllm fused_experts_impl_int8_w8a16 fused_moe_int8_w8a16 benchmark/test_fused_moe_int8_w8a16.py yes fused_moe_int8_w8a16_gems_vs_bf16_deq
55 vllm fused_moe_w8a16_mxq fused_moe_w8a16 benchmark/test_fused_moe_w8a16.py yes fused_moe_w8a16_mxq_gems_vs_bf16_deq
56 vllm fused_moe_w8a16_mxq_gems_vs_vllm fused_moe_w8a16 benchmark/test_fused_moe_w8a16.py yes fused_moe_w8a16_mxq_gems_vs_vllm
57 vllm geglu geglu benchmark/test_geglu.py yes geglu
58 vllm gelu_and_mul gelu_and_mul benchmark/test_gelu_and_mul.py yes gelu_and_mul
59 vllm grouped_topk_no_renorm grouped_topk benchmark/test_grouped_topk.py yes grouped_topk
60 vllm grouped_topk_score_0 grouped_topk benchmark/test_grouped_topk.py yes grouped_topk
61 vllm grouped_topk_score_1 grouped_topk benchmark/test_grouped_topk.py yes grouped_topk
62 vllm indexer_k_quant_and_cache_benchmark indexer_k_quant_and_cache benchmark/test_indexer_k_quant_and_cache.py yes
63 vllm inplace_fused_experts_gems_vs_vllm inplace_fused_experts benchmark/test_inplace_fused_experts.py yes inplace_fused_experts
64 vllm instance_norm instance_norm benchmark/test_instance_norm.py yes instance_norm
65 vllm mhc_post mhc benchmark/test_mhc.py yes mhc_post
66 vllm mhc_pre mhc benchmark/test_mhc.py yes mhc_pre
67 vllm hc_split_sinkhorn_forward mhc benchmark/test_mhc.py yes hc_split_sinkhorn_forward
68 vllm mhc_bwd mhc benchmark/test_mhc.py yes mhc_bwd
69 vllm hc_head_fused_kernel mhc benchmark/test_mhc.py yes hc_head_fused_kernel
70 vllm moe_align_block_size_triton moe_align_block_size_triton benchmark/test_moe_align_block_size_triton.py yes moe_align_block_size_triton
71 vllm moe_sum moe_sum benchmark/test_moe_sum.py yes moe_sum
72 vllm mrope_gems_vs_torch mrope benchmark/test_mrope.py yes mrope
73 vllm outer outer benchmark/test_outer.py yes outer
74 vllm outplace_fused_experts_gems_vs_vllm outplace_fused_experts benchmark/test_outplace_fused_experts.py yes outplace_fused_experts
75 vllm pack_seq pack_seq benchmark/test_pack_seq.py yes pack_seq_triton
76 vllm pack_seq_fp8 pack_seq benchmark/test_pack_seq.py yes pack_seq_triton
77 vllm perf_parallel_nsa parallel_nsa benchmark/test_parallel_nsa.py yes parallel_nsa
78 vllm perf_parallel_nsa_compression parallel_nsa_compression benchmark/test_parallel_nsa_compression.py yes parallel_nsa_compression
79 vllm per_token_group_quant_fp8 per_token_group_quant_fp8 benchmark/test_per_token_group_quant_fp8.py yes per_token_group_quant_fp8
80 vllm persistent_topk persistent_topk benchmark/test_persistent_topk.py yes persistent_topk
81 vllm reglu reglu benchmark/test_reglu.py yes reglu
82 vllm reshape_and_cache reshape_and_cache benchmark/test_reshape_and_cache.py yes reshape_and_cache
83 vllm reshape_and_cache_flash reshape_and_cache_flash benchmark/test_reshape_and_cache_flash.py yes reshape_and_cache_flash
84 vllm perf_router_gemm router_gemm benchmark/test_router_gemm.py yes router_gemm
85 vllm rwkv_ka_fusion rwkv_ka_fusion benchmark/test_rwkv_ka_fusion.py yes rwkv_ka_fusion
86 vllm rwkv_mm_sparsity rwkv_mm_sparsity benchmark/test_rwkv_mm_sparsity.py yes rwkv_mm_sparsity
87 vllm dynamic_scaled_int8_quant scaled_int8_quant benchmark/test_scaled_int8_quant.py yes dynamic_scaled_int8_quant
88 vllm static_scaled_int8_quant scaled_int8_quant benchmark/test_scaled_int8_quant.py yes static_scaled_int8_quant
89 vllm silu_and_mul silu_and_mul benchmark/test_silu_and_mul.py yes silu_and_mul
90 vllm silu_and_mul_out silu_and_mul benchmark/test_silu_and_mul.py yes silu_and_mul_out
91 vllm silu_and_mul_with_clamp silu_and_mul_with_clamp benchmark/test_silu_and_mul_with_clamp.py yes silu_and_mul_with_clamp
92 vllm silu_and_mul_with_clamp_out silu_and_mul_with_clamp benchmark/test_silu_and_mul_with_clamp.py yes silu_and_mul_with_clamp_out
93 vllm skip_layernorm skip_layer_norm benchmark/test_skip_layer_norm.py yes skip_layer_norm
94 vllm sparse_attn_triton sparse_attention benchmark/test_sparse_attention.py yes yes sparse_attention
95 vllm sparse_mla_fwd_interface sparse_mla_fwd_interface benchmark/test_sparse_mla_fwd_interface.py yes sparse_mla_fwd_interface
96 vllm stage_deepseek_v4_mega_moe_inputs_benchmark stage_deepseek_v4_mega_moe_inputs benchmark/test_stage_deepseek_v4_mega_moe_inputs.py yes
97 vllm swiglu swiglu benchmark/test_swiglu.py yes swiglu
98 vllm top_k_per_row_decode top_k_per_row_decode benchmark/test_top_k_per_row_decode.py yes top_k_per_row_decode
99 vllm top_k_per_row_prefill top_k_per_row_prefill benchmark/test_top_k_per_row_prefill.py yes top_k_per_row_prefill
100 vllm topk_softmax topk_softmax benchmark/test_topk_softmax.py yes topk_softmax
101 vllm topk_softplus_sqrt topk_softplus_sqrt benchmark/test_topk_softplus_sqrt.py yes topk_softplus_sqrt
102 vllm triton_scaled_mm_benchmark triton_scaled_mm benchmark/test_triton_scaled_mm.py yes triton_scaled_mm
103 vllm triton_unified_attention_perf triton_unified_attention_perf benchmark/test_triton_unified_attention_perf.py yes
104 vllm unpack_seq unpack_seq benchmark/test_unpack_seq.py yes unpack_seq_triton
105 vllm unpack_seq_fp8 unpack_seq benchmark/test_unpack_seq.py yes unpack_seq_triton
106 vllm weight_norm_dim0 weight_norm benchmark/test_weight_norm.py yes weight_norm
107 vllm weight_norm_dim_last weight_norm benchmark/test_weight_norm.py yes weight_norm
108 vllm weight_norm_interface weight_norm_interface benchmark/test_weight_norm_interface.py yes weight_norm_interface
109 vllm weight_norm_interface_backward weight_norm_interface benchmark/test_weight_norm_interface.py yes weight_norm_interface_backward
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff