fhelium.engine.rns.parameters
Device-resident parameter tables for RNS operations.
RnsRowParameters
class View source
RnsRowParameters(prime_ids: tuple[int, ...], parameter_row_start: int, native_parameters: torch.Tensor, montgomery_reduction_parameters: tuple[torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor], montgomery_r2: torch.Tensor, scaled_montgomery_r2: torch.Tensor, twice_modulus: torch.Tensor, moduli: tuple[int, ...], mixed_radix_normalizers: torch.Tensor | None = None, basis_extension_coefficients: torch.Tensor | None = None, mixed_radix_propagation_coefficients: torch.Tensor | None = None)Device tables for one exact contiguous prime_ids interval.
Every tensor is integral on one execution device. One-dimensional tables have shape [limb] in prime_ids order. montgomery_r2[j] is scaled_montgomery_r2[j] is twice_modulus[j] is i=prime_ids[j]. The four reduction vectors are respectively the low and high split words of
Mixed-radix tables exist only for multi-row source digits. Normalizers have shape [digit - 1]; propagation coefficients have shape [digit - 1, digit]; basis-extension coefficients have shape [digit - 1, destination_limb] in canonical level-zero QP destination order. Their entries include the Montgomery factors required by their native consumers.
parameter_row_start identifies the first row in the engine's canonical level-zero QP order. native_parameters is the cached zero-copy [parameter, limb] view consumed by native RNS kernels.
Attributes
| Name | Type | Default/value |
|---|---|---|
prime_ids | tuple[int, ...] | |
parameter_row_start | int | |
native_parameters | torch.Tensor | |
montgomery_reduction_parameters | tuple[torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor] | |
montgomery_r2 | torch.Tensor | |
scaled_montgomery_r2 | torch.Tensor | |
twice_modulus | torch.Tensor | |
moduli | tuple[int, ...] | |
mixed_radix_normalizers | torch.Tensor | None | None |
basis_extension_coefficients | torch.Tensor | None | None |
mixed_radix_propagation_coefficients | torch.Tensor | None | None |
RnsParameterStore
class View source
RnsParameterStore(*, rns_layout: RnsLayout, montgomery_parameters: MontgomeryParameters, device: torch.device, torch_dtype: torch.dtype, rns_basis_level_count: int, level_row_starts: list[int], basis_row_stops: tuple[int, int], montgomery_reduction_parameter_tables: tuple[torch.Tensor, torch.Tensor, torch.Tensor, torch.Tensor], native_parameter_tensor: torch.Tensor, montgomery_r2: torch.Tensor, scaled_montgomery_r2: torch.Tensor, twice_modulus: torch.Tensor, moduli: list[int])Build engine-owned parameter views for RNS basis extension.
A process owns one device and one dense canonical [Q | P] prime order. Level level; a Q basis ends before P and a QP basis includes the fixed P suffix. Views preserve this exact order and do not allocate or mutate the source tables. The store contains no device fanout or communication policy.
row_parameters
method
def row_parameters(key) -> RnsRowParameters: ...basis_parameters
method
def basis_parameters(level: int, *, include_p: bool=False) -> RnsRowParameters: ...twice_modulus_for_basis
method
def twice_modulus_for_basis(level: int, *, include_p: bool=False) -> torch.Tensor: ...moduli_for_basis
method
def moduli_for_basis(level: int, *, include_p: bool=False) -> list[int]: ...