fhelium.engine.rns.layout
Placement-independent RNS chain and hybrid-decomposition metadata.
RnsDigitSpec
class View source
RnsDigitSpec(level: int, digit_index: int, key_digit_index: int, prime_ids: tuple[int, ...], component_row_ids: tuple[int, ...])One active hybrid-RNS digit in canonical [Q | P] row order.
digit_index is the digit's local position at this level. key_digit_index is its stable level-zero key-storage position; dropped Q rows may make these values differ. prime_ids identify parameter primes, while component_row_ids index the compact level-specific Q component tensor.
Attributes
| Name | Type | Default/value |
|---|---|---|
level | int | |
digit_index | int | |
key_digit_index | int | |
prime_ids | tuple[int, ...] | |
component_row_ids | tuple[int, ...] |
RnsLayout
class View source
RnsLayout(chain: RnsChain, hybrid_decomposition: HybridRnsDecomposition)Mathematical Q/P layout independent of execution placement.
This object intentionally contains no device assignment or communication policy. An SPMD workload may partition returned prime ids, but doing so does not change the local CKKS value or native-kernel ABI.
For any tensor [..., limb, coefficient_or_ntt_index], limb j maps exactly to prime_ids(...)[j]. include_p chooses between internal modulus_basis separately and must not expose this implementation flag.
key_digit_count
property
key_digit_count: intprime_ids
method
def prime_ids(level: int, *, include_p: bool=False) -> tuple[int, ...]: ...Return exact modulus ids in tensor limb order.
row_count
method
def row_count(level: int, *, include_p: bool=False) -> int: ...start_row
method
def start_row(level: int) -> int: ...parameter_rows
method
def parameter_rows(level: int, *, include_p: bool=False) -> slice: ...select_values
method
def select_values(level: int, values: Sequence[int], *, include_p: bool=False) -> tuple[int, ...]: ...Select global-prime-indexed values in the active basis order.
digit_rows
method
def digit_rows(level: int, *, include_p: bool=False) -> tuple[tuple[int, ...], ...]: ...Canonical parameter rows for active hybrid-RNS digits.
component_digit_rows
method
def component_digit_rows(level: int) -> tuple[tuple[int, ...], ...]: ...Return local limb indices for each active Q decomposition digit.
digit_spec
method
def digit_spec(level: int, digit_index: int) -> RnsDigitSpec: ...digit_specs
method
def digit_specs(level: int) -> tuple[RnsDigitSpec, ...]: ...