Commit Graph

118 Commits

Author SHA1 Message Date
Arthur Meyre
e2fc523596 chore: rename package 2022-01-05 14:12:23 +01:00
IceTDrinker
a48f8cb4f1 chore(deps): bump compiler to 2022-01-04T16:08:11Z
- disable PR automerge on compiler update (too risky)
- change init file to be a namespace package
- remove version.py (infos can still be retrieved through package meta)
this avoids potential conflicts with other packages we release
- various fixes for compiler compatibility

closes #1272
2022-01-04 19:18:26 +01:00
Arthur Meyre
e522f22ce8 chore: rename package
- poetry lock required to update package name
- related Makefile and licenses update to keep consistency (will be removed
once the PyPi package is available)
- modified compile_torch_model to only accept datasets with one input
mypy error with better numpy typing hints appeared

closes #1252
2022-01-04 09:12:18 +01:00
Umut
cad7d67e22 feat(mlir): implement MLIR conversion for clear @ encrypted 2021-12-08 17:49:12 +03:00
Arthur Meyre
a9a8cdb223 feat: easily print and draw NPFHECompiler underlying OPGraph
closes #1075
2021-12-06 16:17:52 +01:00
Umut
5aad8c50ac test: create check_array_equality fixture 2021-12-06 16:44:32 +03:00
Arthur Meyre
48aaed9ee8 refactor: disallow tuple input in inputset for 1-input functions
- handle the case properly once we add tuple support in #772

closes #971
2021-12-02 11:59:42 +01:00
Umut
926597c3f6 feat(debugging): implement printing subgraphs within the graph during printing 2021-11-30 12:40:23 +03:00
Arthur Meyre
f1ed07d580 refactor(tracing): add generic tracing functions for generic functions
- remove nearly duplicated code when tracing GenericFunction for unary and
binary operators

refs #965
2021-11-23 13:55:37 +01:00
Arthur Meyre
a77c369daf feat: accept non tuple inputs ininputset for 1-parameter functions
closes #952
2021-11-22 13:38:17 +01:00
Arthur Meyre
8a27525a64 refactor: separate some compilation steps to prepare torch-like API work
refs #233
2021-11-19 10:06:07 +01:00
Arthur Meyre
ff03bc2220 feat(optimization): support more fusing topologies
- corrected docstring that was mistaken on what was returned
- updated pyproject.toml to ignore warnings that happened naturally in
networkx and that was blocking proper test execution (no way around that
this is code from networkx that triggered the warning)
- add a test case for the newly supported fusing topology

closes #499
2021-11-18 09:08:50 +01:00
Umut
c733daa78c feat(mlir): implement MLIR conversion of MatMul 2021-11-17 15:01:29 +03:00
Umut
46a018fd21 refactor: use a consistent short name for operation graph 2021-11-16 12:10:48 +03:00
Umut
239f66eb46 refactor(mlir): re-write mlir conversion 2021-11-15 17:21:51 +03:00
Umut
6fec590e65 refactor(debugging): re-write graph formatting 2021-11-15 16:33:15 +03:00
Arthur Meyre
955470fb89 feat: add support for __truediv__
- cannot use the standard binary op workflow as we don't have an op for div

closes #866
closes #867
2021-11-10 15:07:59 +01:00
Umut
f417246ea3 refactor(debugging): rename get_printable_graph to format_operation_graph 2021-11-08 13:20:18 +03:00
Arthur Meyre
b716ddcf76 feat: clear error message when a constant shape is preventing float fusing
- happens when a constant is bigger than the variable input of the
subgraph, would require special handling, hard to write and requires a
concatenation/stacking operator see #587

closes #645
2021-11-04 16:55:14 +01:00
Arthur Meyre
fae89bd452 refactor: add python generic helpers
- move catch and update_and_return_dict there
2021-11-04 16:55:14 +01:00
Arthur Meyre
f530a0b739 refactor: make GenericFunction accept several inputs
- remove baked constants
- manage table generation for the updated node

closes #600
closes #822
2021-11-04 14:47:10 +01:00
Arthur Meyre
bff367137e refactor: update GenericFunction to take an iterable as inputs
- also fix some corner cases in memory operations
- some small style changes

refs #600
2021-11-04 09:43:22 +01:00
Arthur Meyre
d2faa90106 refactor: replace UnivariateFunction by GenericFunction
- add an attribute fusable to False for the operations that should not be
explicitely fused from the original addition of GenericFunction
- add op_kind instance attribute to differentiate between TLU and memory
operations for GenericFunction

refs #600
2021-11-03 12:05:02 +01:00
Arthur Meyre
fed3342c5f fix(tracing): fix a corner case for astype on arrays with 1 element 2021-11-03 12:05:02 +01:00
Benoit Chevallier-Mames
086dba4194 feat: management of reshape
refs #615
closes #786
2021-11-02 14:55:27 +01:00
Umut
39c16038c7 feat(extensions): create multi table lookup extension 2021-11-02 15:45:13 +03:00
Benoit Chevallier-Mames
8123a5ef45 feat: implement a generic node for functions which change shape
and implement np.transpose with it
and implement np.ravel with it

refs #745
2021-11-02 11:20:48 +01:00
Arthur Meyre
212dc36382 feat: emit loguru warning with reason for subgraph not fusing
- catches cases with more than one variable input
- catches cases where the shapes are not the same in intermediate nodes

refs #645
2021-10-28 14:36:12 +02:00
Umut
eedbe0606b feat(tracing): implement tracing of matmul 2021-10-27 17:11:19 +03:00
Arthur Meyre
ecfde7b233 refactor(debugging): accept several highlights per node when printing
refs #645
2021-10-26 17:19:33 +02:00
Benoit Chevallier-Mames
9459675cfb feat: manage signed constants
closes #688
closes #612
2021-10-26 10:06:15 +02:00
Arthur Meyre
624143106f refactor(compilation): remove unnecessary check in compile.py
refs #645
2021-10-25 17:02:43 +02:00
Umut
65af96253b feat(tracing): implement tracing of constant indexing 2021-10-25 13:14:29 +03:00
Umut
be453394fb fix(compilation): raise the appropriate error for intermediate signed integers 2021-10-20 17:15:52 +03:00
Benoit Chevallier-Mames
7bf2f09615 feat: remove support for np.invert
remove support for np.invert and propose to the user to use bitwise_xor instead, because of impossibilities with float fusing
closes #658
2021-10-19 10:40:23 +02:00
Arthur Meyre
384026364e test: create default_compilation_configuration fixture
- update test code and use it where appropriate
- remove duplicate tests that lacked correctness verification
2021-10-19 08:51:35 +02:00
Arthur Meyre
82688206f7 refactor(mlir): generate tables before converting nodes to MLIR
- MLIRConverter becomes an abstract base class
- pass the needed informations in an extra dict to MLIR converters
- NPMLIRConverter handles the specifics of numpy tables generation
2021-10-18 18:39:27 +02:00
Arthur Meyre
bc2ae7be47 chore: disable pylint line too long in test_compile where necessary
- fix pylint targets for non package dirs
2021-10-15 16:02:20 +02:00
Arthur Meyre
93e39e58f7 fix(representation): handle failure in UnivariateFunction get_table
- if only some values are problematic, flood fill the resulting table with
other valid values
- if no valid value was generated an AssertionError will be thrown
2021-10-15 14:17:11 +02:00
Umut
4c9c49ecd2 feat(debugging): provide a way for highlighting nodes with custom messages during printing 2021-10-15 13:06:36 +03:00
Arthur Meyre
95c48a419c refactor(tracing): preparatory work for tensor table generation
- removed underlying_type_constructor from BaseDataType as it was scalar
specific and put it in values
- update inputset_eval to keep a sample of intermediate node values
- allows to get the proper value constructor to be used in
UnivariateFunction get_table and have tensors as inputs
2021-10-14 10:53:21 +02:00
Benoit Chevallier-Mames
67a9bf12ca test: make that the tested function has integer inputs
functions that we compile are supposed to have integer inputs and outputs
2021-10-13 15:09:36 +02:00
Benoit Chevallier-Mames
6e79c0baf5 test(ci): more random inputs
more random-looking inputs in subtest_fuse_float_binary_operations_correctness and
subtest_fuse_float_unary_operations_correctness
closes #547
2021-10-13 15:09:36 +02:00
Arthur Meyre
a4da3b8210 feat(tracing): add output_idx information in edges
- renamed output_index to output_idx in BaseTracer
- update tracing and fusing code to manage output_idx correctly
- update OPGraph evaluate and update_values_with_bounds to manage
output_idx
- update tests checking graph validity to have output_idx set properly
- the support of actual multi-output nodes is in #81
2021-10-13 11:14:31 +02:00
Arthur Meyre
00916bcfdb refactor: rename ArbitraryFunction to UnivariateFunction
- the naming has always been confusing and recent changes to the code make
this rename necessary for things to be clearer
2021-10-11 11:36:35 +02:00
Arthur Meyre
44016cc80c feat: manage float fusing for tensors
- add op_attributes on ArbitraryFunction
- this works if all constants are smaller than the input tensor
- otherwise it requires more advanced code and a concatenate operator which
currently does not exist
2021-10-11 10:42:20 +02:00
Arthur Meyre
fb9cc79128 chore: make sure xfail test cases are strict 2021-10-11 10:42:20 +02:00
Benoit Chevallier-Mames
e8114cc470 feat: add management of boolean binary operators with a const scalar
refs #126
refs #529
2021-10-08 15:31:04 +02:00
Umut
6affa54473 feat(configuration): add option to treat warnings as errors 2021-10-07 18:40:33 +03:00
Benoit Chevallier-Mames
2da3895f1a feat: add more bivariate operations
which are supported if one of the operands is a constant
refs #126
2021-10-07 16:14:07 +02:00