es-ude / es-ude/OnDeviceTraining
continual-learning: ARITH_SYM_INT32 arms for PPCA ops (integer eigensolver, literature-first)
- Dominant language
- C
- Stars
- 1
- Forks
- 3
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 8
Description
Follow-up to #326 (tracked by the fail-fast guard strings in `ppcaValidateFloatArith` and `JacobiEig.h`). v1 ships `ARITH_FLOAT32` arms only; the by-value `arithmetic_t` knobs (`mergeMath`/`streamMath`/`sampleMath`) make integer arms purely additive — no API break.
Quantified blockers (from the ratified #326 design, gap analysis):
- The Gram reduction length is d: int12×int12 accumulated in int32 is sound only for N ≤ 511 (no-int64 hard rule, `docs/conventions/arithmetic-sym.md`); realistic d (HAR: 1152) exceeds it → needs chunked re-scaling or narrower operands.
- Jacobi rotations / Θ^(−1/2) / row renormalization need division + sqrt + iteration — integer eigensolvers (e.g. CORDIC-based Jacobi) are literature-first research, never homegrown (repo rule).
- Box-Muller sampling is float-heavy; int-feasible sub-ops today: elementwise mean merge (`rescaleIntoAccumulatorScale`), short matvecs (N = k).
Also folds in: packed-dtype update inputs currently ingest via `executeConvert` into the float workspace; an integer path would revisit that.
Fits the integer-only-training axis (#300 / #308-#310).
Contributor guide
Research direction
Start with docs/conventions/arithmetic-sym.md, the fail-fast guards in ppcaValidateFloatArith, and JacobiEig.h; compare the ratified #326 design with the current ARITH_FLOAT32 paths. Research a literature-backed integer eigensolver and determine safe handling for Gram reduction, sampling, renormalization, and executeConvert input ingestion; done means the required ARITH_SYM_INT32 arms are defined without an API break.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- machine-learning
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100