es-ude / es-ude/OnDeviceTraining

continual-learning: ARITH_SYM_INT32 arms for PPCA ops (integer eigensolver, literature-first)

Open
#343 0 comments 0 reactions 0 assignees View on GitHub
enhancement research
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.