This repository has been archived by the owner on Oct 23, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 17
QONNX ops and new general transformations #52
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…X ops into their own folder.
# Conflicts: # src/finn/core/datatype.py # src/finn/transformation/infer_datatypes.py
…NX_to_FINN in FINN already tests for the same.
@maltanar, the PR is now ready for review :) |
maltanar
suggested changes
Oct 29, 2021
…the GemmToMatMul transformation.
maltanar
approved these changes
Nov 1, 2021
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thanks a mill @HenniOVP !
Merged
maltanar
added a commit
that referenced
this pull request
Nov 4, 2021
* 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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 * Verilator: force inlining, disable common warnings (#33) * 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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 (#36) * 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]> * 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 * chore: Add message to AssertionError (#44) * 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]> * [Core] hotfix, relax set_tensor_layout checks otherwise running data layout inference on e.g. models with reshape catches on this assertion * [InferShapes] hotfix for defaulting to unknown data layout * [Partition] hotfix: empty protobuf containers with pop() iterating over the container and calling remove(x) can still leave items inside it * [Core] unify exec paths for GenericPartition+StreamingDFPartition * rtlsim improvements (#47) * bugfix in rtlsim_multi_io * allow extra args in pyverilate_stitched_ip * allow multiple i/o in rtlsim_exec through rtlsim_multi_io also add possibility to pass extra args through metadata_prop * support multiple i/o in throughput_test_rtlsim * fast npy->rtlsim packing when innermost dim=1 * [Core] hotfix for 0-len input nodes in find_* fxns * [Core] hotfix: bug in find_consumer implementation * [Core] hotfix: respect model opset version for node-by-node exec * DataType system refactoring and fixed-point types (#50) * [DataType] sketch new classes for FINN DataTypes * [DataType] flesh out refactored DataType for existing types * [Refactor] DataType.X -> DataType["X"] * [DataType] sketch FixedPointType * [DataType] tweaks to FixedPointType + add is_fixed_point * [Test] add test_datatypes_fixedpoint * [Util] data packing for fixed point types * [Test] data un/packing tests for fixed point * [Util] more fixed-point datatype support * [Test] test fixed-point random tensor gen * [DataType] refactor fxn to get accumulator dt cands * [Refactor] get_smallest_possible and get_dt_cands as staticmethod * [Util] print dt name during sanitize_quant_tensors check * [DataType] fix cand types for get_smallest_possible * [Util, Test] fix unpacking for float32 + add test * [DataType, Test] hotfix: override str/repr fxns for DataType * [Refactor] use RandomNormal instead of Const for shape inf. (#51) * [Test] fix and strenghten test_im2col_infer_shapes * [Refactor] reimpl const shape inference in base CustomOp * QONNX ops and new general transformations (#52) * [Op] add skeleton for Quant custom op * [Op] more comments on Quant op * [InferDT] add MaxPool to list of identity ops for datatype inf. * [Transform] temporarily exclude Quant ops from const folding * [Analysis] add skeleton for inference_cost, limited conv support * [Analysis] support inference_cost_matmul * [Deps] add clize * [Util] add inference_cost util with entrypoint * [Docker] add clize * [Infra] add entrypoint for inference_cost * Preliminary implementation of quant operation * Fixed wrong numpy type in quant op * Made Quant pre-commit compatible * Changed docker base image to PyTorch and added Brevitas dockerfile and entrypoint * Implemented preliminary test for Quant operation * Reworked comments for Quant operation * Readability improvements for Quant operation * Created preliminary Quant op documentation * Move Quant op documentation * Made documentation of quant attributes more precise. * Created skeleton for Trunc QNNX operation * [DataType] add experimental SCALED(U)INT DataTypes * [Quant] use new scaled int dtypes for dt inference * [TypInf] use non-integer instead of float check in dt inference * [ConstFold] make op exclusion optional * [Analysis] deal with dyn matmul, add some zero-cost op types * [Analysis] make inference_cost optionally sparse-weights-aware * [Util] pass sparsity option to analysis pass, kwargs only for clize * [Analysis] add more free ops to inference_cost * [Quant] fallback to float32 for failed dtype inference * Inference cost: JSON export, parameter for output onnx * Removed FINN dependency from documentation * Added support for executing qonnx custom_ops. * Add support for Bipolar and Binary FINN datatype for Quant op. (#41) * Add support for Bipolar and Binary FINN datatype for Quant op. * [Quant] custom qnt execution for bipolar until Brevitas bug resolved Co-authored-by: Yaman Umuroglu <[email protected]> * Added support for cost estimation for upsampling (#37) * 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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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 3ff449c42d709e640ca904c41a241bb94fc9e335 * Revert "[lower_convs_to_matmul]: added support for non-square input images and kernels and non-equal padding." This reverts commit 15e34ed8d07d4a55996f162bd3bd1aa24b33c3ac. * Revert "[im2col, test_im2col]: added support for non-equal padding" This reverts commit c524020ee8a7b363eb0c30d70cf21332e9c73678. * [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_…
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi,
this PR primarily adds support and documentation for the three QONNX ops:
BipolarQuant
Quant
Trunc
Furthermore the PR adds basic ONNX transformations, which are required for the QONNX ingestion in FINN.
ExtractBiasFromConv
GemmToMatMul
remove_node_and_rewire
RemoveIdentityOps
RemoveEmptyPadding
A few tests got added as well:
test_brevitas_quant_onnx_export_and_exec
test_remove_identity_ops
Open ToDos:
test_brevitas_quant_onnx_export_and_exec
to FINN to remove the PyTorch dependency for QONNX op test.out_dtype
field to the output tensor. This leads to rounding errors during execution if the scale and/or bias are not scalar.out_dtype
as is, since it may be used by down-stream tools to read the internal datatype of the MultiThreshold node, then infer the output datatype from theout_dtype
, scale and bias on demand.