Inference operator benchmarks: times one op at a time on NVIDIA and AMD through the serving framework's own layers (vLLM).
- Split over devices: each case's
parallelarg ({"tp", "dp", "ep", "dcp"}), defined incore/parallel.py. - Testlists:
testlists/*.json; every entry lists itssources(<org>/<model>/<role>). Dispatchattn_*testlists apart from gemm / moe ones (each builds its own vLLM engine).
Dispatch the OperatorX Sweep workflow (CI.md). The same planner runs by hand on a login node:
PYTHONPATH=.:inferencex-e2e python3 -m operatorx.ci plan --platform-config operatorx/platforms.json \
--runner cluster:h200-dgxc --backends vllm --testlists gemm_parallel --world-sizes 1,2,4,8 \
--chunk-size 500 --mode timing --run-id local --attempt 1 --source-sha "$(git rev-parse HEAD)" \
--out manifest.jsonResults: one JSON per run under results/<platform>/<cluster>/; in CI, the operatorx-shard-* artifacts, then ingested into the OperatorX database.
- Backend:
runners/<platform>/backends/<name>.pyexportingIMPLS = [BackendImpl(...)]; its image incontainers.toml. - Op:
ops/<name>.pycallingregister(OpSpec(type=..., arg_schema=..., parallel_axes=...)). - Shapes:
testlists/<name>.json.
The standalone Ascend GEMM harness accepts these testlists for native unquantized and FP32-block-scale FP8 measurements with queued NPU timing, numerical checks, resumable journals and an installed-tiling L0A guard. It does not add an Ascend CI pool or change the NVIDIA/AMD runners.
