The MLIR dialect, its conversion passes (TFHEToConcrete, ConcreteToCAPI, ConcreteToLLVM), the optimizer component, the compiler binary, the Rust crate and the program_info parameter file all still carried the upstream project's name. They now carry this one's. Two things deliberately keep the word, because in them it is not the name. mlir::OpTrait CRTP parameters mean "the derived type", so they are spelled Derived and OpTy — LLVM's other conventional spelling for the same idiom. concreteShape is a capnp field: renaming it would change the serialized protocol, and the prose describing it is ordinary English. This also repairs references the earlier partial rename left dangling: Security.cpp included concrete/curves.gen.h and the directory is torus/, torus-cpu.h included concrete-num_complex.h, the Torus dialect CMakeLists named ConcreteOps.td, and compiler/setup.py asked find_namespace_packages for a "concrete" package that no longer exists — so it built without the package it ships.
5.7 KiB
module torus.fhe.extensions.round_bit_pattern
Declaration of round_bit_pattern function, to provide an interface for rounded table lookups.
Global Variables
- MAXIMUM_TLU_BIT_WIDTH
function round_bit_pattern
round_bit_pattern(
x: Union[int, integer, list, ndarray, Tracer],
lsbs_to_remove: Union[int, AutoRounder],
overflow_protection: bool = True,
exactness: Optional[Exactness] = None
) → Union[int, integer, list, ndarray, Tracer]
Round the bit pattern of an integer.
If lsbs_to_remove is an AutoRounder: corresponding integer value will be determined by adjustment process.
x = 0b_0000_0000 , lsbs_to_remove = 3 => 0b_0000_0000 x = 0b_0000_0001 , lsbs_to_remove = 3 => 0b_0000_0000 x = 0b_0000_0010 , lsbs_to_remove = 3 => 0b_0000_0000 x = 0b_0000_0011 , lsbs_to_remove = 3 => 0b_0000_0000 x = 0b_0000_0100 , lsbs_to_remove = 3 => 0b_0000_1000 x = 0b_0000_0101 , lsbs_to_remove = 3 => 0b_0000_1000 x = 0b_0000_0110 , lsbs_to_remove = 3 => 0b_0000_1000 x = 0b_0000_0111 , lsbs_to_remove = 3 => 0b_0000_1000
x = 0b_1010_0000 , lsbs_to_remove = 3 => 0b_1010_0000 x = 0b_1010_0001 , lsbs_to_remove = 3 => 0b_1010_0000 x = 0b_1010_0010 , lsbs_to_remove = 3 => 0b_1010_0000 x = 0b_1010_0011 , lsbs_to_remove = 3 => 0b_1010_0000 x = 0b_1010_0100 , lsbs_to_remove = 3 => 0b_1010_1000 x = 0b_1010_0101 , lsbs_to_remove = 3 => 0b_1010_1000 x = 0b_1010_0110 , lsbs_to_remove = 3 => 0b_1010_1000 x = 0b_1010_0111 , lsbs_to_remove = 3 => 0b_1010_1000
x = 0b_1010_1000 , lsbs_to_remove = 3 => 0b_1010_1000 x = 0b_1010_1001 , lsbs_to_remove = 3 => 0b_1010_1000 x = 0b_1010_1010 , lsbs_to_remove = 3 => 0b_1010_1000 x = 0b_1010_1011 , lsbs_to_remove = 3 => 0b_1010_1000 x = 0b_1010_1100 , lsbs_to_remove = 3 => 0b_1011_0000 x = 0b_1010_1101 , lsbs_to_remove = 3 => 0b_1011_0000 x = 0b_1010_1110 , lsbs_to_remove = 3 => 0b_1011_0000 x = 0b_1010_1111 , lsbs_to_remove = 3 => 0b_1011_0000
x = 0b_1011_1000 , lsbs_to_remove = 3 => 0b_1011_1000 x = 0b_1011_1001 , lsbs_to_remove = 3 => 0b_1011_1000 x = 0b_1011_1010 , lsbs_to_remove = 3 => 0b_1011_1000 x = 0b_1011_1011 , lsbs_to_remove = 3 => 0b_1011_1000 x = 0b_1011_1100 , lsbs_to_remove = 3 => 0b_1100_0000 x = 0b_1011_1101 , lsbs_to_remove = 3 => 0b_1100_0000 x = 0b_1011_1110 , lsbs_to_remove = 3 => 0b_1100_0000 x = 0b_1011_1111 , lsbs_to_remove = 3 => 0b_1100_0000
Args: x (Union[int, np.integer, np.ndarray, Tracer]): input to round
lsbs_to_remove (Union[int, AutoRounder]): number of the least significant bits to remove or an auto rounder object which will be used to determine the integer value
overflow_protection (bool, default = True) whether to adjust bit widths and lsbs to remove to avoid overflows
exactness (Optional[Exactness], default = None) select the exactness of the operation, None means use the global exactness. The global exactnessdefault is EXACT. It can be changed on the Configuration object.
Returns: Union[int, np.integer, np.ndarray, Tracer]: Tracer that represents the operation during tracing rounded value(s) otherwise
class Adjusting
Adjusting class, to be used as early stop signal during adjustment.
method __init__
__init__(rounder: 'AutoRounder', input_min: int, input_max: int)
class AutoRounder
AutoRounder class, to optimize for number of msbs to keep during round bit pattern operation.
method __init__
__init__(target_msbs: int = 16)
method adjust
adjust(
function: Callable,
inputset: Union[Iterable[Any], Iterable[tuple[Any, ]]]
)
Adjust AutoRounders in a function using an inputset.
method dump_dict
dump_dict() → dict
Dump properties of the rounder to a dict.
classmethod load_dict
load_dict(properties: dict) → AutoRounder
Load previously dumped rounder.