- remove no cover from Dot.label
- small refactor of BaseTracer to make _sanitize a class method
- small refactor of get_ufunc_numpy_output_dtype to manage funcs and ufuncs
- add function routing to NPTracer
- add dot tracing to NPTracer
- small refactor to get tracing functions for numpy funcs and ufuncs
- prepares support for tensor types
- introduce _n_in and n_in() and requires_mix_values_func() for
IntermediateNode to know if they require a function to mix input values and
determine output value
- update BaseTracer to pass the class _mix_values_func to IntermediateNodes
that need it
- update NPTracer to stay consistent with current behavior regarding values
mixing
- refactor to take a function to generate the propore BaseValue to store in
its output
- refactor BaseTracer to force inheriting tracers to indicate how to build
a ConstantInput tracer
- remove "as import" for intermediate in hnumpy/tracing.py
- update compile to manage python dtypes
- add a helper function to determine BaseDataType of a constant python
scalar, int or float in dtype_helpers.py
- make BaseTracer type agnostic
- make ConstantInput type agnostic
- rename make_integer_to_hold_ints to make_integer_to_hold
- accept any values as input as we don't know which type this function will
be called with
- rename get_bits_to_represent_int to
get_bits_to_represent_value_as_integer
- add _is_encrypted to BaseValue
- remove EncryptedValue and ClearValue classes
- add a ScalarValue class
- add two helpers EncryptedValue and ClearValue which create a ScalarValue
either encrypted or not when passed a data_type
- rename to mix_scalar_values_determine_holding_dtype
- change typing
- allow to construct graph from an existing networkx MultiDiGraph
- add a function to remove nodes unreachable from the outputs of the graph
- return the evaluated output when calling the OPGraph
* feat: let the dev give a useful name for ArbitraryFunction
might be useful to debug or understand what happens
closes#144
* feat: let the dev give a useful name for ArbitraryFunction
might be useful to debug or understand what happens
closes#144
* feat: let the dev give a useful name for ArbitraryFunction
might be useful to debug or understand what happens
closes#144
* feat: let the dev give a useful name for ArbitraryFunction
might be useful to debug or understand what happens
closes#144
* feat: let the dev give a useful name for ArbitraryFunction
might be useful to debug or understand what happens
closes#144
* feat: let the dev give a useful name for ArbitraryFunction
might be useful to debug or understand what happens
closes#144
* feat: let the dev give a useful name for ArbitraryFunction
might be useful to debug or understand what happens
closes#144
Co-authored-by: Benoit Chevallier-Mames <benoitchevalliermames@zama.ai>
* feat(mlir): conversion from HDKIR to MLIR
* feat(mlir): support ir.Sub and ir.Mul
- better type conversion from HDK to MLIR
- Context management inside the converter class
- better handling of input type in conversion functions
* refactor(mlir): use input and output from OPGraph
Co-authored-by: Arthur Meyre <arthur.meyre@zama.ai>
* feat(mlir): eint-int subtractions
* feat(mlir): adhere to spec for supported ops
* feat(OPGraph): getters for ordered inputs/outputs
+ formatting
* tests(mlir): test converion via compiler roundtrip
* fix(mlir): flip operands on int_eint sym ops
* feat(mlir): check that the outputs are unsigned
* feat(mlir): set bit_width of all nodes to the max
This is currently required as the compiler is already assuming this.
Could be removed from HDK when the compiler can do it on its own
* feat: value_is_integer + CRs
disable some linting errors
* tests: update compile tests + coverage
* refactor: reorganize mlir package + better doc
* doc: conformance with pydocstyle
Co-authored-by: Arthur Meyre <arthur.meyre@zama.ai>