Commit Graph

164 Commits

Author SHA1 Message Date
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
Arthur Meyre
ce17767288 test: use triple quoted strings for long message matches
closes #754
2021-10-28 09:13:48 +02:00
Benoit Chevallier-Mames
23d4dead30 chore: remove unnecessary lambda in tests 2021-10-27 18:47:56 +02:00
Umut
eedbe0606b feat(tracing): implement tracing of matmul 2021-10-27 17:11:19 +03:00
Umut
118e6454b7 test(tracing): fix shape mismatch in one of the dot tracing tests 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
Umut
70fbac7188 feat(compilation): provide a way to automatically generate a random inputset 2021-10-26 11:44:57 +03: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
c46d96aabf refactor(compilation): improve error messages of indexing 2021-10-25 17:35:36 +03:00
Umut
65af96253b feat(tracing): implement tracing of constant indexing 2021-10-25 13:14:29 +03:00
Arthur Meyre
9a41a57be0 fix: report the correct coverage status on exit
closes #719
2021-10-22 18:40:14 +02:00
Arthur Meyre
fbfaeb2b17 feat: add table deduplication to NPMLIRConverter
closes #560
closes #561
2021-10-22 18:19:44 +02:00
Benoit Chevallier-Mames
bc90ed37ff chore(debugging): show problems in a clearer way with highlighted_nodes 2021-10-22 14:41:24 +02: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
Umut
8b2efb8869 test(execution): add table lookup correctness tests 2021-10-15 16:16:32 +03: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
Benoit Chevallier-Mames
1c8c623951 test: deal with probabilistic nature of correctness tests
closes #656
refs #551
2021-10-15 13:10:15 +02:00
Arthur Meyre
a811b588c6 test: fix ldexp correctness test by changing the input type 2021-10-15 12:54:44 +02:00
Umut
73769b917e feat(compilation): provide the reason for MLIR incompatibility 2021-10-15 13:06:36 +03:00
Umut
4c9c49ecd2 feat(debugging): provide a way for highlighting nodes with custom messages during printing 2021-10-15 13:06:36 +03:00
Benoit Chevallier-Mames
12465f86ac test: check correctness of ufunc's
for the moment:
- it has no hard check of correctness for now
- some functions are not managed

ref #551
2021-10-14 19:54:31 +02: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
fc9fc992c8 fix(tracing): do not process already visited tracers
- some topologies triggered a bug where a tracer was visited several times
- this created duplicate edges which caused problems later in the code
- simply skip already visited tracers
- add a check to see that all edges are indeed unique
2021-10-12 15:09:58 +02:00
Benoit Chevallier-Mames
dedbde93d0 feat: get_printable_graph is more precise
get_printable_graph prints the constant if the ArbitraryFunction has a baked constant
closes #584
2021-10-12 11:43:49 +02:00
Arthur Meyre
286dda79b2 fix: correct pytest command in Makefile 2021-10-12 11:18:00 +02:00
Arthur Meyre
8490f88227 chore: change coverage to have global infos
- have a small hack to dump pytest-cov report
2021-10-11 19:06:37 +02:00
Benoit Chevallier-Mames
e8b8869ae8 feat: write %2 = Add(%0, %1) instead of %2 = Add(0, 1)
refs #601
2021-10-11 14:34:49 +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
Arthur Meyre
e451afc283 chore: add semver and semantic-release dev dependencies
- add __init__.py in tests to fix new pylint error
2021-10-07 16:49:00 +02: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
Umut
5fce0d2920 feat(compilation): implement MLIR conversion of constant arrays 2021-10-07 16:17:48 +03:00
Arthur Meyre
4a77d0515a feat(tracing): add test for extra args passed to ufuncs
- add comment to explain why sanitizing all args is safe for ufuncs
2021-10-07 12:01:44 +02:00
Benoit Chevallier-Mames
56e0ed4a11 feat: manage binary op where one input is constant
feat #126
2021-10-06 17:53:52 +02:00
Umut
83ea485fe1 feat(tracing): enable implicit broadcasting for binary operations 2021-10-06 10:33:12 +03:00
Umut
ceb23f93d5 feat(tracing): implement and test tracing of basic operations for tensors 2021-10-05 15:25:53 +03:00
Umut
003bad581a feat(fhe_circuit): create FHECircuit class to combine operation graph and compiler engine 2021-10-04 12:23:37 +03:00
Arthur Meyre
a9d44f4758 feat(float_fusing): restrict to scalars before supporting tensors 2021-09-30 10:57:00 +02:00
Benoit Chevallier-Mames
42d5b66b69 fix: better test. 2021-09-30 10:47:27 +02:00