3 Commits

Author SHA1 Message Date
nihui fcde729c7b riscv: add int8 convolution winograd (#7093) 2026-10-14 14:58:05 +08:00
nihui b0f97f43f2 riscv: add int8 convolution im2col gemm (#7090)
* riscv: add tiled int8 convolution im2col gemm

Pack weights and input in cache-sized M/N/K tiles with a 1x1 input shortcut.
Use vector-length-agnostic 8/4/2/1-position microkernels with signed
widening accumulation, including an XTheadVector-compatible path.

Reuse bounded per-worker input panels across output-channel tiles and
keep split-K partial sums in the existing int32 output. Wire the GEMM
option into the int8 pipeline while retaining direct convolution and
existing requantization, dequantization and activation handling.

Add focused tests for actual pipeline selection, packing, tails,
split-K accumulation, full-range int8 values and thread-count changes.

* riscv: fix int8 convolution split-K test sizing

A tile balanced for a large artificial K can be smaller than the cache
limit. Choosing that tile size plus one does not guarantee that the
actual test shape splits K, as exposed by the C907 and C908 CI jobs.

Query the tiler for each actual candidate K and grow the candidate until
it spans multiple panels. Keep the transformed-weight K-row assertion
and numerical checks, and report a missing split separately from an
incorrect pipeline selection.

* riscv: write int8 convolution gemm blocks explicitly

* riscv: separate full int8 gemm channel blocks and tails

* riscv: widen int8 convolution gemm to m4 accumulators

* apply code-format changes

* riscv: keep int8 convolution partial sums in packed tiles

* riscv: align int8 convolution gemm helpers with ncnn style

* apply code-format changes

* riscv: unify int8 convolution gemm channel loops

* riscv: reduce int8 im2col indexing and single-k tile overhead

* riscv: use scalar 2x2 int8 gemm and consolidate convolution tests

* mips, loongarch: fix packed int8 im2col K tile offsets

---------

Co-authored-by: nihui <171016+nihui@users.noreply.github.com>
2026-10-13 13:11:17 +08:00
nihui 41f031e045 reduce redundant tests that do not contribute to coverage (#7042)
* adjust tests
* opt shader coverage op
* update gpu_coverage.cpp atomicor coalesce
2026-10-05 08:57:20 +08:00