Skip to content
This repository has been archived by the owner on Oct 23, 2023. It is now read-only.

Pull upstream changes into qonnx_quant_op #46

Merged
merged 10 commits into from
Sep 16, 2021
Merged

Conversation

maltanar
Copy link
Collaborator

No description provided.

maltanar and others added 10 commits July 2, 2021 16:36
* Support infer_datatype for flatten layer

* 3d_to_4d support for additional nodes

* Bugfix

* Add ZCU111 to part map

* Fix ZCU111 part

* Separate PRs

* Bugfix, new test case
* Add default Verilator args to disable warnings, force inlining

* Update AUTHORS.rst

* Create python-publish.yml

* Add ZCU111 board to part map (#32)

* Update AUTHORS.rst

* GHA for PyPI, sdist only (#35)

* finn-base v0.0.2 (#34)

* Modified set_nodeattr to allow using it on repeated fields (#18)

* [base]: changed how the floats, ints, strings, tensors, graphs and sparse_tensors field of AttributeProto is set.

* [Core] restrict attributes to tested types

Co-authored-by: Yaman Umuroglu <[email protected]>

* Support for non-square input images and kernels for im2col node (#20)

* [im2col.py]: support for non-square input images and kernels, [test_im2col]: added/modified several test cases for (non-)square images and kernels

* [im2col]: support for non-square input images and kernels, [test_im2col]: added/modified several test cases for (non-)square images and kernels

* [test_general_transformation]: changed kernel_size attribute to list instead of integer as required by im2col node

* [base]: changed how the "ints" field of AttributeProto set.
[test_general_transformation]: changed the type of the kernel_size attribute to list of integers

* removed unused import

* [base]: added support for writing repeated fields in AttributeProto

* minor style changes

* [im2col, test_im2col]: added support for non-equal padding

* [lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding.
[test_conv_lowering]: added/modified test cases for non-equal padding, depthwise convolution and 'standard' convolution.

* [test_conv_lowering]: included 1D depthwise and regular convolutions in tests

* Revert "[test_conv_lowering]: included 1D depthwise and regular convolutions in tests"

This reverts commit 3ff449c

* Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding."

This reverts commit 15e34ed.

* Revert "[im2col, test_im2col]: added support for non-equal padding"

This reverts commit c524020.

* [im2col]: changed how a square kernel is instantiated.
[lower_convs_to_matmul]: changed how the kernel size attribute is read (based on how a square kernel is instantiated).

* [im2col]: minor change in style.

* [Im2Col] style fixes and comments

Co-authored-by: Yaman Umuroglu <[email protected]>

* Update AUTHORS.rst

* Support for non-square input images and kernels in LowerConvsToMatMul transformation (#16)

* [im2col.py]: support for non-square input images and kernels, [test_im2col]: added/modified several test cases for (non-)square images and kernels

* [im2col]: support for non-square input images and kernels, [test_im2col]: added/modified several test cases for (non-)square images and kernels

* [test_general_transformation]: changed kernel_size attribute to list instead of integer as required by im2col node

* [base]: changed how the "ints" field of AttributeProto set.
[test_general_transformation]: changed the type of the kernel_size attribute to list of integers

* removed unused import

* [base]: added support for writing repeated fields in AttributeProto

* minor style changes

* [im2col, test_im2col]: added support for non-equal padding

* [lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding.
[test_conv_lowering]: added/modified test cases for non-equal padding, depthwise convolution and 'standard' convolution.

* [test_conv_lowering]: included 1D depthwise and regular convolutions in tests

* Revert "[test_conv_lowering]: included 1D depthwise and regular convolutions in tests"

This reverts commit 3ff449c

* Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding."

This reverts commit 15e34ed.

* Revert "[im2col, test_im2col]: added support for non-equal padding"

This reverts commit c524020.

* [im2col] function compute_conv_output_dim can now be called in case non-equal and equal padding is assumed.
[test_im2col] changed function call to compute_conv_output_dim.
[test_conv_lowering] changed function call to compute_conv_output_dim.
[lower_convs_to_matmul] removed old assertion.

* [im2col]: changed how a square kernel is instantiated.
[lower_convs_to_matmul]: changed how the kernel size attribute is read (based on how a square kernel is instantiated).

* [im2col]: changed how a square kernel is instantiated.
[lower_convs_to_matmul]: changed how the kernel size attribute is read (based on how a square kernel is instantiated).

* [im2col]: minor change in style.

* [test_conv_lowering]: minor fix for test case depthwise and regular convolutions

* Support for non-square input images and kernels for im2col node (#20)

* [im2col.py]: support for non-square input images and kernels, [test_im2col]: added/modified several test cases for (non-)square images and kernels

* [im2col]: support for non-square input images and kernels, [test_im2col]: added/modified several test cases for (non-)square images and kernels

* [test_general_transformation]: changed kernel_size attribute to list instead of integer as required by im2col node

* [base]: changed how the "ints" field of AttributeProto set.
[test_general_transformation]: changed the type of the kernel_size attribute to list of integers

* removed unused import

* [base]: added support for writing repeated fields in AttributeProto

* minor style changes

* [im2col, test_im2col]: added support for non-equal padding

* [lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding.
[test_conv_lowering]: added/modified test cases for non-equal padding, depthwise convolution and 'standard' convolution.

* [test_conv_lowering]: included 1D depthwise and regular convolutions in tests

* Revert "[test_conv_lowering]: included 1D depthwise and regular convolutions in tests"

This reverts commit 3ff449c

* Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding."

This reverts commit 15e34ed.

* Revert "[im2col, test_im2col]: added support for non-equal padding"

This reverts commit c524020.

* [im2col]: changed how a square kernel is instantiated.
[lower_convs_to_matmul]: changed how the kernel size attribute is read (based on how a square kernel is instantiated).

* [im2col]: minor change in style.

* [Im2Col] style fixes and comments

Co-authored-by: Yaman Umuroglu <[email protected]>

* Update AUTHORS.rst

Co-authored-by: Yaman Umuroglu <[email protected]>

* Added support for dilation value = 2 for 1D and 2D images/kernels (#17)

* [im2col.py]: support for non-square input images and kernels, [test_im2col]: added/modified several test cases for (non-)square images and kernels

* [im2col]: support for non-square input images and kernels, [test_im2col]: added/modified several test cases for (non-)square images and kernels

* [test_general_transformation]: changed kernel_size attribute to list instead of integer as required by im2col node

* [base]: changed how the "ints" field of AttributeProto set.
[test_general_transformation]: changed the type of the kernel_size attribute to list of integers

* removed unused import

* [base]: added support for writing repeated fields in AttributeProto

* minor style changes

* [im2col, test_im2col]: added support for non-equal padding

* [lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding.
[test_conv_lowering]: added/modified test cases for non-equal padding, depthwise convolution and 'standard' convolution.

* [test_conv_lowering]: included 1D depthwise and regular convolutions in tests

* Revert "[test_conv_lowering]: included 1D depthwise and regular convolutions in tests"

This reverts commit 3ff449c

* Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding."

This reverts commit 15e34ed.

* Revert "[im2col, test_im2col]: added support for non-equal padding"

This reverts commit c524020.

* [im2col] added support for dilations = 2 for 2D and 1D images. Dilation value must be equal along each axis.
[test_im2col] added several test cases in case dilations = 2 (a.o. cases where image and kernel are 2D and 1D, with and without padding, and with stride = 2).
[lower_convs_to_matmul] added support for dilation value. Dilation value must be equal along each axis.
[test_conv_lowering] added test case for dilations = 2 for 2D and 1D images and kernels, with and without padding, and with stride = 2.

* [lower_convs_to_matmul] removed old assertion
[test_conv_lowering] added more dilation values to test cases. Dilation values of {1, 2, 3, 4} are tested.

* [im2col] function compute_conv_output_dim can now be called in case non-equal and equal padding is assumed.
[test_im2col] changed function call to compute_conv_output_dim
[test_conv_lowering] changed function call to compute_conv_output_dim

* [im2col] function compute_conv_output_dim can now be called in case non-equal and equal padding is assumed.
[test_im2col] changed function call to compute_conv_output_dim.
[test_conv_lowering] changed function call to compute_conv_output_dim.
[lower_convs_to_matmul] removed old assertion.

* [im2col]: changed how a square kernel is instantiated.
[lower_convs_to_matmul]: changed how the kernel size attribute is read (based on how a square kernel is instantiated).

* [im2col]: changed how a square kernel is instantiated.
[lower_convs_to_matmul]: changed how the kernel size attribute is read (based on how a square kernel is instantiated).

* [im2col]: changed how a square kernel is instantiated.
[lower_convs_to_matmul]: changed how the kernel size attribute is read (based on how a square kernel is instantiated).

* [im2col]: minor change in style.

* [test_conv_lowering]: minor fix for test case depthwise and regular convolutions

* [im2col]: minor style adjustment.
[test_conv_lowering]: merged test functions into one test function.

* Support for non-square input images and kernels for im2col node (#20)

* [im2col.py]: support for non-square input images and kernels, [test_im2col]: added/modified several test cases for (non-)square images and kernels

* [im2col]: support for non-square input images and kernels, [test_im2col]: added/modified several test cases for (non-)square images and kernels

* [test_general_transformation]: changed kernel_size attribute to list instead of integer as required by im2col node

* [base]: changed how the "ints" field of AttributeProto set.
[test_general_transformation]: changed the type of the kernel_size attribute to list of integers

* removed unused import

* [base]: added support for writing repeated fields in AttributeProto

* minor style changes

* [im2col, test_im2col]: added support for non-equal padding

* [lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding.
[test_conv_lowering]: added/modified test cases for non-equal padding, depthwise convolution and 'standard' convolution.

* [test_conv_lowering]: included 1D depthwise and regular convolutions in tests

* Revert "[test_conv_lowering]: included 1D depthwise and regular convolutions in tests"

This reverts commit 3ff449c

* Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding."

This reverts commit 15e34ed.

* Revert "[im2col, test_im2col]: added support for non-equal padding"

This reverts commit c524020.

* [im2col]: changed how a square kernel is instantiated.
[lower_convs_to_matmul]: changed how the kernel size attribute is read (based on how a square kernel is instantiated).

* [im2col]: minor change in style.

* [Im2Col] style fixes and comments

Co-authored-by: Yaman Umuroglu <[email protected]>

* Update AUTHORS.rst

* Support for non-square input images and kernels in LowerConvsToMatMul transformation (#16)

* [im2col.py]: support for non-square input images and kernels, [test_im2col]: added/modified several test cases for (non-)square images and kernels

* [im2col]: support for non-square input images and kernels, [test_im2col]: added/modified several test cases for (non-)square images and kernels

* [test_general_transformation]: changed kernel_size attribute to list instead of integer as required by im2col node

* [base]: changed how the "ints" field of AttributeProto set.
[test_general_transformation]: changed the type of the kernel_size attribute to list of integers

* removed unused import

* [base]: added support for writing repeated fields in AttributeProto

* minor style changes

* [im2col, test_im2col]: added support for non-equal padding

* [lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding.
[test_conv_lowering]: added/modified test cases for non-equal padding, depthwise convolution and 'standard' convolution.

* [test_conv_lowering]: included 1D depthwise and regular convolutions in tests

* Revert "[test_conv_lowering]: included 1D depthwise and regular convolutions in tests"

This reverts commit 3ff449c

* Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding."

This reverts commit 15e34ed.

* Revert "[im2col, test_im2col]: added support for non-equal padding"

This reverts commit c524020.

* [im2col] function compute_conv_output_dim can now be called in case non-equal and equal padding is assumed.
[test_im2col] changed function call to compute_conv_output_dim.
[test_conv_lowering] changed function call to compute_conv_output_dim.
[lower_convs_to_matmul] removed old assertion.

* [im2col]: changed how a square kernel is instantiated.
[lower_convs_to_matmul]: changed how the kernel size attribute is read (based on how a square kernel is instantiated).

* [im2col]: changed how a square kernel is instantiated.
[lower_convs_to_matmul]: changed how the kernel size attribute is read (based on how a square kernel is instantiated).

* [im2col]: minor change in style.

* [test_conv_lowering]: minor fix for test case depthwise and regular convolutions

* Support for non-square input images and kernels for im2col node (#20)

* [im2col.py]: support for non-square input images and kernels, [test_im2col]: added/modified several test cases for (non-)square images and kernels

* [im2col]: support for non-square input images and kernels, [test_im2col]: added/modified several test cases for (non-)square images and kernels

* [test_general_transformation]: changed kernel_size attribute to list instead of integer as required by im2col node

* [base]: changed how the "ints" field of AttributeProto set.
[test_general_transformation]: changed the type of the kernel_size attribute to list of integers

* removed unused import

* [base]: added support for writing repeated fields in AttributeProto

* minor style changes

* [im2col, test_im2col]: added support for non-equal padding

* [lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding.
[test_conv_lowering]: added/modified test cases for non-equal padding, depthwise convolution and 'standard' convolution.

* [test_conv_lowering]: included 1D depthwise and regular convolutions in tests

* Revert "[test_conv_lowering]: included 1D depthwise and regular convolutions in tests"

This reverts commit 3ff449c

* Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding."

This reverts commit 15e34ed.

* Revert "[im2col, test_im2col]: added support for non-equal padding"

This reverts commit c524020.

* [im2col]: changed how a square kernel is instantiated.
[lower_convs_to_matmul]: changed how the kernel size attribute is read (based on how a square kernel is instantiated).

* [im2col]: minor change in style.

* [Im2Col] style fixes and comments

Co-authored-by: Yaman Umuroglu <[email protected]>

* Update AUTHORS.rst

Co-authored-by: Yaman Umuroglu <[email protected]>

Co-authored-by: Yaman Umuroglu <[email protected]>

* Update quantavgpool2d.py (#22)

Add  "Copyright (c) 2021 Xilinx, Inc" heather

* [batchnorm_to_affine]: epsilon value is now read out from the attributes. (#21)

[test_batchnorm_to_affine]: added a test case for various epsilon values.

* Added 3D to 4D (tensor) transformation (#19)

* [im2col.py]: support for non-square input images and kernels, [test_im2col]: added/modified several test cases for (non-)square images and kernels

* [im2col]: support for non-square input images and kernels, [test_im2col]: added/modified several test cases for (non-)square images and kernels

* [test_general_transformation]: changed kernel_size attribute to list instead of integer as required by im2col node

* [base]: changed how the "ints" field of AttributeProto set.
[test_general_transformation]: changed the type of the kernel_size attribute to list of integers

* removed unused import

* [base]: added support for writing repeated fields in AttributeProto

* minor style changes

* [im2col, test_im2col]: added support for non-equal padding

* [lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding.
[test_conv_lowering]: added/modified test cases for non-equal padding, depthwise convolution and 'standard' convolution.

* [test_conv_lowering]: included 1D depthwise and regular convolutions in tests

* Revert "[test_conv_lowering]: included 1D depthwise and regular convolutions in tests"

This reverts commit 3ff449c

* Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding."

This reverts commit 15e34ed.

* Revert "[im2col, test_im2col]: added support for non-equal padding"

This reverts commit c524020.

* [im2col] added support for dilations = 2 for 2D and 1D images. Dilation value must be equal along each axis.
[test_im2col] added several test cases in case dilations = 2 (a.o. cases where image and kernel are 2D and 1D, with and without padding, and with stride = 2).
[lower_convs_to_matmul] added support for dilation value. Dilation value must be equal along each axis.
[test_conv_lowering] added test case for dilations = 2 for 2D and 1D images and kernels, with and without padding, and with stride = 2.

* [lower_convs_to_matmul] removed old assertion
[test_conv_lowering] added more dilation values to test cases. Dilation values of {1, 2, 3, 4} are tested.

* [im2col] function compute_conv_output_dim can now be called in case non-equal and equal padding is assumed.
[test_im2col] changed function call to compute_conv_output_dim
[test_conv_lowering] changed function call to compute_conv_output_dim

* [im2col] function compute_conv_output_dim can now be called in case non-equal and equal padding is assumed.
[test_im2col] changed function call to compute_conv_output_dim.
[test_conv_lowering] changed function call to compute_conv_output_dim.
[lower_convs_to_matmul] removed old assertion.

* [im2col]: minor fix with assumption on kernel dimension
[lower_convs_to_matmul]: minor fix with assumption on kernel dimension

* [change_3d_tensors_to_4d]: added new transformation that transforms 3D tensors to 4D and changes the nodes accordingly
[test_4d_conversion]: test function for 3D to 4D tensor transformation

* [change_3d_tensors_to_4d]: added new transformation that changes 3D tensors to 4D.
[test_4d_conversion]: added a test case for the 3D to 4D transformation.

* [change_3d_tensors_to_4d]: added 3D to 4D transformation (for QuartzNet).
[test_4d_conversion]: added test case for 3D to 4D transform.

* [change_3d_tensors_to_4d]: changed how an invalid graph is handled.
[test_4d_conversion]: changed the test case for an invalid graph.

* [im2col]: changed how a square kernel is instantiated.
[lower_convs_to_matmul]: changed how the kernel size attribute is read (based on how a square kernel is instantiated).

* [im2col]: changed how a square kernel is instantiated.
[lower_convs_to_matmul]: changed how the kernel size attribute is read (based on how a square kernel is instantiated).

* [im2col]: changed how a square kernel is instantiated.
[lower_convs_to_matmul]: changed how the kernel size attribute is read (based on how a square kernel is instantiated).

* [im2col]: minor change in style.

* [im2col]: minor style change and changed the way how a square kernel is instantiated.

* [test_conv_lowering]: merged tests for depthwise and standard convolutions.

* [test_conv_lowering]: minor fix for test case depthwise and regular convolutions

* [im2col]: minor style adjustment.
[test_conv_lowering]: merged test functions into one test function.

* [change_3d_tensors_to_4d]: style fixes and comments.
[test_4d_converions]: rearranged code.

* [Transform] check invalid node list length

* [change_3d_tensors_to_4d]: rearranged the code to make it more readable.

Co-authored-by: Yaman Umuroglu <[email protected]>

* [Docs] update tutorials

* [Util] experimental: fast_mode data packing for binary (#24)

* Generic partitioning feature (#23)

* Add basic partitioning functionality

* Mount build dir within docker container

* Support for non-linear models and multi in/out partitions

* Remove dataflowpartition custom op from finn-base

* Fix temporary build dir for CI

* Fix docstring

* [create_generic_partitions]: minor modification, removed redundant output value_info entries. (#26)

* [extend_partition]: added a new transformation ExtendPartition. (#27)

[test_extend_partition]: added a test case for the new transformation.

* Added support for non-equal strides along different axes (#25)

* [im2col]: added support for non-equal strides along different axes and cleaned up the code.
[lower_convs_to_matmul]: added support for non-equal strides along different axes and cleaned up the code.
[test_conv_lowering]: added test case for non-equal strides along different axes.

* [im2col]: minor fix.
[test_im2col]: added test case for non-equal strides along different axes.

* Changes for supporting vitis_hls (#28)

* [Refactor] split up RTL/HLS-related utils

* [Util] rename to CallHLS and allow specifying vivado_hls/vitis_hls

* [Util] more flexible stream naming in rtlsim_multi_io

* Changes for supporting non-equal dilation (#29)

* added support for non-equal dilation value along (H, W) dimension

* added test cases for non-equal dilation configurations

* appending dilation value along dummy dimension correctly (i.e. with a '1')

* changed tensor sparsity annotation for consistency

* Support infer_datatype for flatten layer (#30)

* Support infer_datatype for flatten layer

* [InferDT] add more identity op types for datatype inference

* [Lint] fix linting issues

Co-authored-by: Yaman Umuroglu <[email protected]>

* Update AUTHORS.rst

* Create python-publish.yml

* Add ZCU111 board to part map (#32)

* Update AUTHORS.rst

Co-authored-by: Mirza Mrahorovic <[email protected]>
Co-authored-by: jalezeta <[email protected]>
Co-authored-by: Felix Jentzsch <[email protected]>

* Update python-publish.yml

* Update python-publish.yml

* Lint

Co-authored-by: Mirza Mrahorovic <[email protected]>
Co-authored-by: jalezeta <[email protected]>
Co-authored-by: Felix Jentzsch <[email protected]>

* fix broken logo in README

* Extend Change3DTo4DTensors() to more layers (#31)

* Support infer_datatype for flatten layer

* 3d_to_4d support for additional nodes

* Bugfix

* Add ZCU111 to part map

* Fix ZCU111 part

* Separate PRs

* Bugfix, new test case

* [Docker] pin pyverilator version

* [Util] pyverilate_stitched_ip: disable_common_warnings optional

Co-authored-by: Yaman Umuroglu <[email protected]>
Co-authored-by: Mirza Mrahorovic <[email protected]>
Co-authored-by: jalezeta <[email protected]>
)

* Copied platforms from finn-experimental and made pre-commit conform

* Add ZCU102 and ZCU111 platforms

* [Util] add comments on platforms.py

Co-authored-by: Felix Jentzsch <[email protected]>
Co-authored-by: Yaman Umuroglu <[email protected]>
* [QuantAvgPool2d] support broader range of DataTypes for inference

* [pyverilator] use case-agnostic r/w fxns in rtlsim_multi_io

* [Rename] support renaming multiple i/o + add test

* [InferDT] more identity case, support NN upsample/resize

* [InferDT] fix typo

* [DataLayout] add more layout variants and MakeInputChanLast trafo

* [Test] fix test_infer_datatypes

* [ModelWrapper] add assertions for multiple ValueInfoProto

multiple VIPs cause undefined behavior when changing the graph

* [Core] node input ValueInfos can come from graph output too

* [Partition] don't duplicate VIP for border nodes

* [Test] increase atol for test_batchnorm_to_affine_shufflenet
* chore: Add message to AssertionError when file passed to ModelWrapper does not exists (or is not a file)

* Various fixes from multi-headed net testing (#45)

* [QuantAvgPool2d] support broader range of DataTypes for inference

* [pyverilator] use case-agnostic r/w fxns in rtlsim_multi_io

* [Rename] support renaming multiple i/o + add test

* [InferDT] more identity case, support NN upsample/resize

* [InferDT] fix typo

* [DataLayout] add more layout variants and MakeInputChanLast trafo

* [Test] fix test_infer_datatypes

* [ModelWrapper] add assertions for multiple ValueInfoProto

multiple VIPs cause undefined behavior when changing the graph

* [Core] node input ValueInfos can come from graph output too

* [Partition] don't duplicate VIP for border nodes

* [Test] increase atol for test_batchnorm_to_affine_shufflenet

* Run linter

Co-authored-by: Yaman Umuroglu <[email protected]>
otherwise running data layout inference on e.g. models with
reshape catches on this assertion
iterating over the container and calling remove(x) can still
leave items inside it
@maltanar maltanar merged commit 9870474 into feature/qonnx_quant_op Sep 16, 2021
@maltanar maltanar mentioned this pull request Nov 4, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants