Skip to content

Fused depthwise causal conv1d + bias + SiLU#189

Merged
zouzias merged 17 commits into
huawei-csl:mainfrom
ChristosMatzoros:convolution
Jun 25, 2026
Merged

Fused depthwise causal conv1d + bias + SiLU#189
zouzias merged 17 commits into
huawei-csl:mainfrom
ChristosMatzoros:convolution

Conversation

@ChristosMatzoros

Copy link
Copy Markdown
Collaborator

Add fused depthwise causal conv1d + bias + SiLU — PTO example

Adds a PTO-ISA example for the depthwise causal conv1d + per-channel bias + (optional) SiLU — the Mamba/GDN short convolution. Per-channel K-tap filter, fp16/bf16 I/O, fp32 accumulate. Built and run exactly like the sibling jit_cpp examples (CANN-toolkit PTO headers, --cce-aicore-arch=dav-c220-vec, shared conftest/build flags).

Adds (7 files under examples/jit_cpp/causal_conv1d/): kernel causal_conv1d_pto.cpp, jit_util_causal_conv1d.py, test_causal_conv1d.py + conftest.py, run_causal_conv1d.py, README.md, .gitignore. No existing files touched.

Design: input-stationary K-tap scatter with a power-of-two accumulator ring (& (RS-1)), double-buffered input load, generic in K/MAX_W (chosen at the call site as constexpr template params), UB-budget static_assert.

Correctness: pytest test_causal_conv1d.py202 pass — K=4 (batched + single-seq, fp16/bf16, act on/off, edge/GDN shapes) and generic K ∈ {2,3,4,5,8} × {fp16,bf16} vs an fp32 reference.

Baselines (all on Ascend 910B2): aclnnConvolution (torch grouped depthwise conv); the current sgl causal_conv1d (the existing AscendC kernel); and PR-555 = sgl-project/sgl-kernel-npu#555, the community "add gdn custom conv1d" PR. In the tables below, PTO = this kernel's approach (the causal_conv1d_pto op in sgl-kernel-npu); PR-555 and sgl are those two baselines.

Performance: ~2–7× vs aclnnConvolution. The same approach productionized in sgl-kernel-npu (causal_conv1d_pto) runs 1.1–1.9× over PR-555 and 2.6–20× kernel-time over the current sgl kernel on the GDN matrix (dims 2048/6144), and is correct where the current sgl kernel is numerically wrong at large batch. Full per-shape data (idle-gated):

Kernel-only — msprof TaskDur, f16, µs/forward (16 GDN shapes)
seq dim B PTO µs PR-555 µs sgl µs PTO/PR PTO/sgl
128 2048 1 15.6 22.9 114.8 1.47× 7.37×
128 2048 8 30.6 45.2 118.6 1.47× 3.87×
256 2048 1 19.0 25.9 226.3 1.37× 11.92×
256 2048 8 42.2 69.3 231.5 1.64× 5.49×
384 2048 1 20.3 31.6 337.0 1.56× 16.62×
384 2048 8 57.4 90.3 342.3 1.57× 5.96×
512 2048 1 22.4 33.6 448.0 1.50× 19.98×
512 2048 8 72.4 114.4 454.3 1.58× 6.28×
128 6144 1 23.0 25.7 113.7 1.12× 4.95×
128 6144 8 56.0 96.6 148.1 1.73× 2.64×
256 6144 1 26.2 35.8 220.5 1.37× 8.42×
256 6144 8 97.1 178.0 289.2 1.83× 2.98×
384 6144 1 29.8 47.0 329.6 1.58× 11.05×
384 6144 8 138.9 255.7 429.4 1.84× 3.09×
512 6144 1 34.8 57.3 436.3 1.65× 12.55×
512 6144 8 180.5 335.7 572.7 1.86× 3.17×

PTO/PR 1.12–1.86×; PTO/sgl 2.6–20× (sgl's single kernel scales with seq → 7–20× at B1). bf16 tracks f16 within ~2%.

Large batch + larger seq — e2e device-event, fp16, min-of-3 (45 GDN shapes, sorted by B·seq·dim)
B·seq·dim seq dim B PTO µs PR-555 µs sgl µs PTO/PR PTO/sgl corr(o,pr,sgl)
17M 512 2048 16 203.0 242.1 779.3 1.19× 3.84× ok,WRONG,ok
34M 512 2048 32 338.6 370.4 977.9 1.09× 2.89× ok,ok,ok
34M 1024 2048 16 238.0 367.7 1529.0 1.54× 6.42× ok,ok,ok
50M 512 6144 16 462.2 582.2 778.6 1.26× 1.68× ok,ok,WRONG
67M 512 2048 64 636.7 672.1 1530.1 1.06× 2.40× ok,ok,ok
67M 1024 2048 32 634.2 672.7 2223.8 1.06× 3.51× ok,ok,WRONG
67M 2048 2048 16 436.2 669.5 3590.5 1.53× 8.23× ok,ok,WRONG
101M 512 6144 32 886.3 1116.7 1534.9 1.26× 1.73× ok,ok,WRONG
101M 1024 6144 16 879.0 1115.4 1528.4 1.27× 1.74× ok,ok,WRONG
134M 512 2048 128 934.4 1278.6 2275.8 1.37× 2.44× ok,ok,ok
134M 1024 2048 64 1225.5 1278.5 3001.1 1.04× 2.45× ok,ok,WRONG
134M 2048 2048 32 1224.1 1273.1 4406.0 1.04× 3.60× ok,ok,WRONG
201M 512 6144 64 1294.4 2192.2 3023.1 1.69× 2.34× ok,ok,WRONG
201M 1024 6144 32 1715.8 2180.0 3018.7 1.27× 1.76× ok,ok,WRONG
201M 2048 6144 16 1711.4 2177.7 3013.4 1.27× 1.76× ok,ok,WRONG
268M 512 2048 256 1821.8 2499.4 4521.1 1.37× 2.48× ok,ok,ok
268M 1024 2048 128 1818.1 2487.6 4500.2 1.37× 2.48× ok,ok,WRONG
268M 2048 2048 64 2403.6 2486.4 5967.8 1.03× 2.48× ok,ok,WRONG
403M 512 6144 128 2547.7 4315.3 6001.4 1.69× 2.36× ok,ok,WRONG
403M 1024 6144 64 2540.5 4316.7 5983.8 1.70× 2.36× ok,ok,WRONG
403M 2048 6144 32 3378.3 4305.1 5980.0 1.27× 1.77× ok,ok,WRONG
537M 512 2048 512 3325.2 4962.1 8278.3 1.49× 2.49× ok,ok,ok
537M 1024 2048 256 3589.1 4920.5 8954.5 1.37× 2.49× ok,ok,WRONG
537M 2048 2048 128 3584.5 4909.1 8967.2 1.37× 2.50× ok,ok,WRONG
805M 512 6144 256 4639.8 8570.1 11962.6 1.85× 2.58× ok,ok,WRONG
805M 1024 6144 128 5040.4 8560.3 11930.2 1.70× 2.37× ok,ok,WRONG
805M 2048 6144 64 5033.9 8564.7 11919.4 1.70× 2.37× ok,ok,WRONG
1074M 512 2048 1024 6580.0 9813.9 16379.5 1.49× 2.49× ok,ok,WRONG
1074M 1024 2048 512 6566.7 9792.7 16405.1 1.49× 2.50× ok,ok,WRONG
1074M 2048 2048 256 7126.2 9769.1 17835.3 1.37× 2.50× ok,ok,WRONG
1611M 512 6144 512 9247.7 17099.0 23928.2 1.85× 2.59× ok,ok,WRONG
1611M 1024 6144 256 9209.5 17064.1 23831.5 1.85× 2.59× ok,ok,WRONG
1611M 2048 6144 128 10030.9 17052.0 23785.6 1.70× 2.37× ok,ok,WRONG
2147M 512 2048 2048 12827.6 19577.2 32163.7 1.53× 2.51× ok,ok,WRONG
2147M 1024 2048 1024 13064.0 19505.2 32602.6 1.49× 2.50× ok,ok,WRONG
2147M 2048 2048 512 13049.6 19492.7 32848.9 1.49× 2.52× ok,ok,WRONG
3221M 512 6144 1024 18019.8 34127.6 47750.2 1.89× 2.65× ok,ok,WRONG
3221M 1024 6144 512 18388.8 34086.2 47668.8 1.85× 2.59× ok,ok,WRONG
3221M 2048 6144 256 18351.5 34052.7 47508.9 1.86× 2.59× ok,ok,WRONG
4295M 512 2048 4096 25558.2 39029.6 64288.9 1.53× 2.52× ok,ok,WRONG
4295M 1024 2048 2048 25501.7 38960.3 64061.1 1.53× 2.51× ok,ok,WRONG
4295M 2048 2048 1024 26032.4 38886.5 65555.2 1.49× 2.52× ok,ok,WRONG
6442M 512 6144 2048 35996.7 68212.2 95478.9 1.89× 2.65× ok,ok,WRONG
6442M 1024 6144 1024 35897.1 68096.7 95224.6 1.90× 2.65× ok,ok,WRONG
6442M 2048 6144 512 36692.6 68093.4 95087.5 1.86× 2.59× ok,ok,WRONG

At small/floor-bound shapes e2e is pinned at the shared ~210µs torch-op host floor (identical for both ops) — the kernel-only table above shows the true gap there. The current sgl kernel is numerically WRONG in most large-batch cases (batch race); PTO is correct throughout.

Run: pytest test_causal_conv1d.py -q --npu npu:0

ChristosMatzoros and others added 15 commits June 17, 2026 11:38
Per-channel (depthwise) K=4 causal short convolution fused with bias and
SiLU on the PTO tile ISA, for Mamba/GDN-style short conv. fp16 and bf16 I/O,
fp32 accumulate. A 2-D (channel-tile x L-chunk) work grid fills all AIV cores
across batch/seq/dim, with a causal K-1 halo per chunk. Validated against a
torch depthwise reference (168 shape cases) and benchmarked vs aclnnConvolution
and within a chunked GDN layer.

Files under examples/jit_cpp/conv1d/:
- conv1d_dw_pto.cpp            PTO kernel (single-seq + batched fp16/bf16 entries)
- jit_util_conv1d_dw.py        bisheng JIT compile + ctypes binding
- run_conv1d_dw.py             correctness + perf vs aclnnConvolution
- sweep_conv1d_dw.py           full L x W shape sweep (grid, GB/s, %peak)
- prof_conv.py                 msprof profiling driver
- run_gdn_conv_integration.py  GDN conv-stage before/after integration

Signed-off-by: Christos Konstantinos Matzoros <christos.konstantinos.matzoros@h-partners.com>
…pute)

Prefetch the next input row so its TLOAD (MTE2) overlaps the current row's
vector compute: a prologue load of x[hstart] plus a per-iteration
(cast-current -> prefetch-next x[j+1] into the same xin_h -> compute) reorder.
Zero extra UB tiles/events (single EVENT_ID0, flag accounting balanced).
Numerics identical (168 cases pass, worst max-abs-error 7.8e-3); ~5-14% faster
in the latency-bound regime (device-event timing), no regression on
bandwidth-bound shapes.

Signed-off-by: Christos Konstantinos Matzoros <christos.konstantinos.matzoros@h-partners.com>
No functional change; satisfies the clang-format pre-commit/CI hook.

Signed-off-by: Christos Konstantinos Matzoros <christos.konstantinos.matzoros@h-partners.com>
Add the test infrastructure to match the JIT-example convention used by
swiglu / layernorm / matmul_swizzle:

- test_conv1d_dw.py: parametrized correctness vs an fp32 reference across
  GDN and general shapes, fp16 and bf16, activation on/off, plus the
  single-sequence fp16 entry.
- conftest.py: --npu option and npu_device / setup_npu_device fixtures.
- README.md: kernel description and suggested workflow.

Signed-off-by: Christos Konstantinos Matzoros <christos.konstantinos.matzoros@h-partners.com>
These are not part of the self-contained example: no sibling example ships
a prof_* helper, and run_gdn_conv_integration.py depends on the external
pto_kernels package. Keep the example to kernel + jit_util + run/sweep +
test + README, matching swiglu / layernorm / matmul_swizzle.

Signed-off-by: Christos Konstantinos Matzoros <christos.konstantinos.matzoros@h-partners.com>
Apply black and fix ruff lint (unused import, f-string without
placeholders) on the example's Python helpers so the Lint CI job passes.

Signed-off-by: Christos Konstantinos Matzoros <christos.konstantinos.matzoros@h-partners.com>
Signed-off-by: Raphael Steiner <raphael.steiner@huawei.com>
Signed-off-by: Raphael Steiner <raphael.steiner@huawei.com>
Signed-off-by: Raphael Steiner <raphael.steiner@huawei.com>
- Ping-pong the input load across two UB slots (xin_h[2]) with independent
  V<->MTE2 handshakes (EVENT_ID0 / reused EVENT_ID3) so the next row's load
  overlaps the current row's cast and compute.
- siluTile: derive the element type from TileT::DType instead of taking a
  separate template parameter.

Signed-off-by: Christos Konstantinos Matzoros <christos.konstantinos.matzoros@h-partners.com>
Signed-off-by: Raphael Steiner <raphael.steiner@huawei.com>
…ling examples

Make the depthwise causal conv1d+bias+SiLU example generic in filter width K,
tile width MAX_W and per-core UB size via -DCONV_K / -DCONV_MAX_W /
-DCONV_UB_BYTES (defaults K=4 / MAX_W=3072 / 192 KiB, unchanged). The
accumulator ring is sized RS=roundUpPow2(K) and indexed with & (RS-1); a
static_assert rejects any K/MAX_W/dtype combination that overflows the UB.
Remove the K=4-only demo entry points and rename the I/O dtype template
parameter IoT -> InOutT.

Build the JIT example with the CANN-toolkit pto headers and dav-c220-vec arch
(matching examples/jit_cpp/fast_hadamard/jit_util_common.py) instead of an
external pto-isa path; tests recompile per (K, MAX_W) via -D flags.

Verified: 152/152 pytest cases; default-config output bit-identical to the
prior kernel with <=1% timing across 13 shapes; 168/168 correctness in the sweep.

Signed-off-by: Christos Konstantinos Matzoros <christos.konstantinos.matzoros@h-partners.com>
…fp16+bf16 multi-K tests

Replace the -DCONV_K / -DCONV_MAX_W / -DCONV_UB_BYTES macros with call-site
constexpr template arguments (the production entries use K=4 / MAX_W=3072) plus a
namespace UB_BYTES_PER_CORE constant that the UB static_assert checks against.
Derive the channel-tile lane width from the I/O element size (256 B / sizeof)
instead of a hardcoded 128, hoist the grid tuning knobs into a commented block,
and promote the ring mask and the UB-offset tables to constexpr. Add
static_assert(K <= accumRingSize).

Rename identifiers to be self-documenting: num_wt -> numChanTiles, col_w ->
channelTileWidth, lchunks -> sequenceChunkCount, RS -> accumRingSize, W ->
channels, processUnit -> processWorkUnit, IoT/AccT -> IoElemType/AccumElemType,
and the loop/offset locals to match.

The generalized-K test no longer recompiles via -D macros; it compiles a
per-(K, MAX_W) wrapper that #includes the kernel and instantiates
runConvSiluBatched at that K for both fp16 and bf16 I/O. Coverage: K in
{2,3,4,5,8} x {fp16,bf16} x 5 shapes x 2 seeds.

Behavior-neutral at K=4 (output bit-identical to the previous kernel); 202/202
tests pass.

Signed-off-by: Christos Konstantinos Matzoros <christos.konstantinos.matzoros@h-partners.com>
Wrap the over-long call_test_kernel_fp16/bf16 selection so the file passes
black (the pinned pre-commit / CI lint). No behaviour change; 202/202 tests
still pass.

Signed-off-by: Christos Konstantinos Matzoros <christos.konstantinos.matzoros@h-partners.com>
Rename the depthwise causal conv1d example (directory, files, and kernel entry
symbols) from conv1d_dw to causal_conv1d, matching the Mamba / sgl-kernel-npu op
name (the directory was already `conv1d`, and depthwise is implied for this op).

No behaviour change: the device code is identical modulo the rename, and all 202
correctness cases still pass.

Signed-off-by: Christos Konstantinos Matzoros <christos.konstantinos.matzoros@h-partners.com>
Comment thread examples/jit_cpp/causal_conv1d/test_causal_conv1d.py Outdated
The general-K/MAX_W test built kernel entry points from a C++ source string embedded in test_causal_conv1d.py (_WRAPPER_SRC). Move it out of Python: the production entry points now read K/MAX_W from CAUSAL_CONV_K / CAUSAL_CONV_MAX_W (default 4 / 3072), and the test recompiles causal_conv1d_pto.cpp with -DCAUSAL_CONV_K / -DCAUSAL_CONV_MAX_W, reusing the existing call_kernel_batched / call_kernel_batched_bf16 launchers. Same -D pattern as matmul_swizzle and scan.

No C++ remains in the Python file; a plain build (no -D flags) is byte-for-byte unchanged. 202/202 tests pass on 910B2.

Signed-off-by: Christos Konstantinos Matzoros <christos.konstantinos.matzoros@h-partners.com>
@zouzias

zouzias commented Jun 24, 2026

Copy link
Copy Markdown
Collaborator
pytest test_causal_conv1d.py -q --npu npu:0
................................................................................................................................................ [ 71%]
..........................................................                                                                                       [100%]
=================================================================== warnings summary ===================================================================
../../../venv/lib/python3.10/site-packages/torch/jit/_script.py:362: 14 warnings
  /home/zouzias/github-repos/pto-kernels/venv/lib/python3.10/site-packages/torch/jit/_script.py:362: DeprecationWarning: `torch.jit.script_method` is deprecated. Please switch to `torch.compile` or `torch.export`.
    warnings.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
202 passed, 14 warnings in 13.40s

@zouzias zouzias left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

python run_causal_conv1d.py gives

== correctness (vs torch depthwise conv1d + bias + SiLU = aclnnConvolution) ==
  168 cases passed (over 84 shapes x 2 magnitudes)
  WORST max-abs-error = 7.812e-03  at L=16 W=256 scale=8.0

== performance sweep ==
  [native] npu_fused_causal_conv1d UNAVAILABLE on this box: RuntimeError('aclnnFusedCausalConv1d or aclnnFusedCausalConv1dGetWorkspaceSize not in libopapi.so, or libopapi.so not found.\n[ERROR] 2026-0
  [native] (it is a 910_95-only op, K fixed=3; this box is Ascend910B2)

    L      W   ours_us  aclnn_us  native_us  ours GB/s  vs aclnn
  128   2048     119.7     180.2        n/a        8.8     1.51x
  256   2048     120.5     186.3        n/a       17.4     1.55x
  384   2048     179.1     192.3        n/a       17.6     1.07x
  512   2048     183.9     183.1        n/a       22.8     1.00x
 1024   2048     237.0     211.2        n/a       35.4     0.89x
  256   4096     150.4     257.0        n/a       27.9     1.71x
  256   8192     150.8     441.8        n/a       55.6     2.93x
  512   4096     188.0     279.7        n/a       44.6     1.49x
 2048   2048     237.6     248.9        n/a       70.6     1.05x
 4096   2048     466.3     431.7        n/a       72.0     0.93x

Rework run_causal_conv1d.py perf(): sweep batched (B, seq, dim) shapes with NPU device-event timing (100-iter average) and time aclnnConvolution end-to-end (incl. the layout conversion a real pipeline pays), replacing the wall-clock / batch-1 / hoisted-aclnn version whose numbers were dominated by the ~200us host-dispatch floor. Add a silu() helper; drop the now-unused time import.

Satisfy pre-commit + prospector: clang-format the CAUSAL_CONV macro comment; bare '# noqa' for the _as_parameter_ / torch_npu lines (matching the sibling jit_cpp examples); '# pylint: disable=unused-argument' on the npu_device session fixtures.

Signed-off-by: Christos Konstantinos Matzoros <christos.konstantinos.matzoros@h-partners.com>
@ChristosMatzoros

Copy link
Copy Markdown
Collaborator Author

@zouzias

The old run_causal_conv1d.py sweep script had some mistakes.
(a) benchmarked batch=1, the kernel's worst case — its parallelism is batch × channel_tiles × seq_chunks, so a single sequence can't fill the cores;
(b) used wall-clock timing with per-call output allocation, which pinned every shape to the ~200µs host-dispatch floor instead of measuring kernel time; and
(c) timed aclnn unfairly, hoisting its transpose/pad/fp32-cast out of the timed region.

Reworked to a batched (B, seq, dim) sweep with NPU device-event timing (100-iter average, adaptive) and aclnn timed end-to-end, on an idle/exclusively-monitored NPU. With that, PTO is ~1.3–1.5× over aclnn at dim=2048 and a steady ~2.0–2.2× at dim=6144, scaling flat to 6.4B elements.

Results running in an isolated NPU running the new run_causal_conv1d.py:

=== pre-run NPU2 ===
| No running processes found in NPU 2                                                            |
== correctness (vs torch depthwise conv1d + bias + SiLU = aclnnConvolution) ==
  168 cases passed (over 84 shapes x 2 magnitudes)
  WORST max-abs-error = 7.812e-03  at L=16 W=256 scale=8.0

== performance sweep (batched, device-event avg-of-2, adaptive iters) ==
   aclnn = aclnnConvolution timed END-TO-END from the [B,seq,dim] fp16
   layout (transpose + pad + fp32 conv + SiLU + transpose-back + cast) —
   the layout cost a real pipeline pays; PTO does it fused. SiLU on both.
   aclnn's fp32 intermediates OOM past ~2GB; PTO (fused) still runs.

  [native] npu_fused_causal_conv1d UNAVAILABLE on this box: RuntimeError('aclnnFusedCausalConv1d or aclnnFusedCausalConv1dGetWorkspaceSize not in libopapi.so, or libopapi.so not found.\n[ERROR] 2026-0
  [native] (it is a 910_95-only op, K fixed=3; this box is Ascend910B2)
B·seq·dim seq dim B PTO µs aclnn µs speedup PTO GB/s iters max-abs-err
16M 512 2048 16 792.6 771.7 1.03× 74 100 9.77e-04
33M 512 2048 32 1811.5 2077.1 1.15× 74 100 9.77e-04
33M 1024 2048 16 1811.2 2426.3 1.34× 74 100 9.77e-04
50M 512 6144 16 1813.8 3664.6 2.02× 111 100 9.77e-04
67M 512 2048 64 3610.2 4834.1 1.34× 74 93 9.77e-04
67M 1024 2048 32 3616.8 5278.2 1.46× 74 93 9.77e-04
67M 2048 2048 16 3616.3 4880.4 1.35× 74 93 9.77e-04
100M 512 6144 32 3614.0 7380.6 2.04× 111 62 9.77e-04
100M 1024 6144 16 3620.5 7987.2 2.21× 111 62 9.77e-04
134M 512 2048 128 7214.7 9597.7 1.33× 74 46 9.77e-04
134M 1024 2048 64 7222.4 10615.9 1.47× 74 46 9.77e-04
134M 2048 2048 32 7228.6 9854.5 1.36× 74 46 9.77e-04
201M 512 6144 64 7220.8 14537.9 2.01× 112 31 9.77e-04
201M 1024 6144 32 7227.9 15923.5 2.20× 111 31 9.77e-04
201M 2048 6144 16 7233.8 14485.7 2.00× 111 31 9.77e-04
268M 512 2048 256 14429.3 19063.5 1.32× 74 23 9.77e-04
268M 1024 2048 128 14433.0 20857.8 1.45× 74 23 9.77e-04
268M 2048 2048 64 14439.2 19419.6 1.34× 74 23 9.77e-04
402M 512 6144 128 14441.1 28433.0 1.97× 112 15 9.77e-04
402M 1024 6144 64 14443.5 31764.0 2.20× 112 15 9.77e-04
402M 2048 6144 32 14458.1 29117.0 2.01× 111 15 9.77e-04
536M 512 2048 512 28859.4 37804.0 1.31× 74 11 9.77e-04
536M 1024 2048 256 28864.2 41490.8 1.44× 74 11 9.77e-04
536M 2048 2048 128 28869.9 38176.0 1.32× 74 11 9.77e-04
805M 512 6144 256 28875.7 56531.7 1.96× 112 7 9.77e-04
805M 1024 6144 128 28892.8 62362.3 2.16× 111 7 9.77e-04
805M 2048 6144 64 28885.3 57967.7 2.01× 112 7 9.77e-04
1073M 512 2048 1024 57712.9 75524.3 1.31× 74 5 9.77e-04
1073M 1024 2048 512 57730.5 82544.6 1.43× 74 5 9.77e-04
1073M 2048 2048 256 57750.1 75990.8 1.32× 74 5 9.77e-04
1610M 512 6144 512 57751.0 112711.5 1.95× 112 3 9.77e-04
1610M 1024 6144 256 57765.6 124561.6 2.16× 112 3 9.77e-04
1610M 2048 6144 128 57789.7 114222.7 1.98× 111 3 9.77e-04
2147M 512 2048 2048 115427.0 150305.3 1.30× 74 3 9.77e-04
2147M 1024 2048 1024 115474.7 164857.6 1.43× 74 3 9.77e-04
2147M 2048 2048 512 115463.4 151270.0 1.31× 74 3 9.77e-04
3221M 512 6144 1024 115457.6 OOM n/a 112 3 n/a
3221M 1024 6144 512 115504.4 OOM n/a 112 3 n/a
3221M 2048 6144 256 115534.3 OOM n/a 112 3 n/a
4294M 512 2048 4096 230811.9 OOM n/a 74 3 n/a
4294M 1024 2048 2048 230894.8 OOM n/a 74 3 n/a
4294M 2048 2048 1024 230945.2 OOM n/a 74 3 n/a
6442M 512 6144 2048 230931.4 OOM n/a 112 3 n/a
6442M 1024 6144 1024 231037.3 OOM n/a 112 3 n/a
6442M 2048 6144 512 231088.4 OOM n/a 112 3 n/a

@ChristosMatzoros ChristosMatzoros requested a review from zouzias June 24, 2026 14:12

@zouzias zouzias left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

............................................................................................................................................................................ [ 85%]
..............................                                                                                                                                               [100%]
================================================================================= warnings summary =================================================================================
../../../venv/lib/python3.10/site-packages/torch/jit/_script.py:362: 14 warnings
  /home/zouzias/github-repos/pto-kernels/venv/lib/python3.10/site-packages/torch/jit/_script.py:362: DeprecationWarning: `torch.jit.script_method` is deprecated. Please switch to `torch.compile` or `torch.export`.
    warnings.warn(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
202 passed, 14 warnings in 7.26s

@zouzias zouzias merged commit 4c7062f into huawei-csl:main Jun 25, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants