1. 24 Oct, 2018 5 commits
    • Adam Rogowiec's avatar
      [ONNX] Gemm fix (#1877) · 92c1d504
      Adam Rogowiec authored
      * Fix gemm `input_c` broadcasting.
      
      * Comments.
      
      * Add comment
      92c1d504
    • mchrusci's avatar
      [ONNX CI] Update GitHub credentials (#1905) · 4552d024
      mchrusci authored
      4552d024
    • tsocha's avatar
      Enable Trigonometric ops (#1879) · 835ecad9
      tsocha authored
      835ecad9
    • tsocha's avatar
      [ONNX] Non-linear ops (#1864) · a804c3d7
      tsocha authored
      * [ONNX] Non-linear ops
      
      * Style check
      a804c3d7
    • Chris Sullivan's avatar
      Cache and use fprop stats in cudnn batchnorm bprop (#1841) · fbc3a940
      Chris Sullivan authored
      * Temp bn update commit.
      
      * Add CUDNNBatchNorm which adds two additional outputs to batchnorm, the batch mean and batch inv variance.
      The batch mean is the same as the output mean if the cummulative average factor is 1.0. Add BatchNormCache pass which replaces all BatchNorm ops that are inputs to BatchNormBackprop
      with CUDNNBatchNorm which outputs the saved batch statistics directly to the backprop step.
      
      * Updated bn cache pass, removed extra tests, added test checking that provided stats are used in bprop instead of batch stats.
      This test was disabled for interpreter as the reference kernel needs to be updated to use provided statistics.
      
      * Formatting.
      
      * Update to new batch norm API.
      
      * CUDNNBatchNorm -> BatchNormTrainingWithStats
      
      * new line
      
      * Preprocess input variance into BN denominator for cudnn (#1885)
      
      * Add explicit cuda kernel to calculate what cuDNN describes as the inverse
      variance. In reality, the backward cudnn kernel for BN requires 1.0f / sqrt(variance + eps),
      which is the batchnorm denominator for each channel (a numerically stable inverse stddev).
      
      This introduces op annotations for batch norm backprop and updates the cudnn_emitter to support the insertion of this cuda kernel when required.
      
      * Disable second test on INTERPRETER.
      fbc3a940
  2. 23 Oct, 2018 8 commits
  3. 22 Oct, 2018 10 commits
    • Nick Korovaiko's avatar
      faster topological sort (#1886) · 02affea5
      Nick Korovaiko authored
      02affea5
    • Adam Straw's avatar
      add support for Quantize round mode (#1859) · 51104813
      Adam Straw authored
      * added half_toward_zero; all previous tests passing
      
      * all rounding modes added with unit tests
      
      * fix cpu emitter
      
      * round mode doc
      
      * round out round modes
      
      * doc typo
      
      * using  names for round modes
      
      * use ceil/floor for rounding functions instead of round/nearbyint
      
      * clean up doc
      
      * equidistant
      51104813
    • Jayaram Bobba's avatar
      IAT: Collapse dimensions around arithmetic reduction operations (#1763) · e765956a
      Jayaram Bobba authored
      * Collapse dimensions for arithmetic reduction ops to support faster kernels
      
      * Propagate in-place constants and allow in-place reshapes for more cases
      
      * style fix
      
      * Additional checks for parameter and constant to help backends that dont propagate in-place parameter and constant inputs
      
      * Allow non-destructive pass through onlyu if memory sharing is disabled
      
      * Address PR feedback
      
      * Bug fix for collapse dimensions in case of null reduction
      e765956a
    • Nick Korovaiko's avatar
      BatchNorm splitting into ops (2nd try) (#1828) · 1beec46b
      Nick Korovaiko authored
      * split bn into bn_inference bn_training
      
      * fix warnings
      
      * Add GPU support for the new BN ops (#1569)
      
      * Add GPU support and change batchnorm_globalstats test to use BNInference.
      
      * Changed test back to using BNTraining for global stats and updated cudnn backend to account for it.
      
      * Fix issues in merge with master.
      
      * Formatting.
      
      * CPU fixes
      
      * remove 5-arg training BN for now
      
      * more fixes
      
      * python batchnorm changes
      
      * fix onnx_import
      
      * fix a call BatchNormInference c-tor
      
      * yet another fix to BatchNormInference c-tor
      
      * AND yet another fix to batchnorm_inference c-tor
      
      * ops.py
      
      * address adam's feedback
      
      * Remove unnecessary parameter/argument.
      
      * remove batch_norm_training_relu_with_global_stats
      
      * remove bn_relu (training)
      1beec46b
    • mchrusci's avatar
      [ONNX CI] Fix manual reproduction script (#1881) · 187dee75
      mchrusci authored
      * Update runCI.sh
      
      Accommodate manual reproduction script.
      
      * Update README.md
      
      * Update runCI.sh
      
      * fixes
      * added rebuild parameter
      
      * Fix rebuilding nGraph
      
      * Added execution permission to runCI.sh
      187dee75
    • Robert Kimball's avatar
      e07147f8
    • yimeisun123's avatar
      Add bfloat16 data type in ngraph (#1861) · 8ea33de1
      yimeisun123 authored
      * Add bfloat16 data type in ngraph
      
      * Update on bfloat16 files
      - remove uint16_t related functions
      - adding/removing const modifier in functions
      - default assignment operator
      - style conformance
      
      * Add bf16 element type handling in Constant OP
      
      * Update bfloat16 data type implementation
      - support nan and infinity cases
      - add rounding option when creating bfloat16 from float
      
      * Update the comment for copyright info
      8ea33de1
    • Adam Procter's avatar
      Partial Shapes and Types, Part 4h: IndexReduction (#1829) · e92ee04c
      Adam Procter authored
      * Adapt Tensor class to have partial shapes
      
      * Add PartialShapes to Input, Output, Function, Node classes
      
      * Terminological cleanup
      
      * Add PartialShape propagation for Parameter and Result
      
      * Implement partial-shape propagation for elementwise ops
      
      * More comments
      
      * One more comment tweak
      
      * Add tests for the merge functions
      
      * Add merging of undetermined element types
      
      * Fix a goophup in deserializer implementation
      
      * Implement fallback for ops that do not support partial shape/type validation
      
      * Updates for some older unit tests, now that operator[] exists
      
      * Add missing validate_punt_if_incomplete to AllReduce
      
      * Implement partial shape/type propagation for AllReduce
      
      * Implement partial shape/type propagation for Reshape
      
      * Remove unneeded validate_punt from Result
      
      * Implement partial shape/type propagation for Reverse
      
      * Implement partial shape/type validation for ReverseSequence
      
      * Implement partial shape/type validation for ArithmeticReduction
      
      * Better docstrings for the stuff introduced in #1692; remove prototype for unimplemented, unused PartialShape::append()
      
      * One more docstring thing I forgot to save
      
      * Switch terminology from 'determined/undetermined' to 'static/dynamic'
      
      * Switch terminology from 'complete/incomplete' to 'static/dynamic' for shapes; fix up some mushily worded comments
      
      * Fix overzealous edits from the last commit
      
      * Rename one test that escaped the Great Renaming
      
      * Remove unnecessary validate_punt_if_dynamic from Reshape
      
      * Fix comment typo
      
      * Rewrite operator+ and operator* for Dimension as members, not friends
      
      * Formatting tweak
      
      * Show argument types/shapes in long NodeDescription; tank unit tests to block merge
      
      * Fix dynamic element type propagation for elementwise ops, add some unit tests for same
      
      * Fix error message
      
      * Roll 'Not' back to existing behavior (non-boolean input types allowed)
      
      * Add a TODO tag to a todo item
      
      * Add unit tests for partial shape/type propagation with ReverseSequence
      
      * Add unit tests for partial-shape/type propagation for ArithmeticReduction (via Sum)
      
      * Implement partial type/shape propagation for GetOutputElement
      
      * Implement partial type/shape validation for IndexReduction, and unit tests
      
      * Function signatures
      
      * Add implementations, unit tests for relaxes/refines functions
      
      * Generalize project/reduce/inject functions to cover PartialShape, move to shape_util.[ch]pp
      
      * Deal with std::find_if #include issues
      
      * Fix more include madness
      
      * Review comments
      e92ee04c
    • shssf's avatar
      30df706f
    • Scott Cyphers's avatar
      Doc for slice (#1872) · e571009d
      Scott Cyphers authored
      e571009d
  4. 21 Oct, 2018 3 commits
    • Adam Procter's avatar
      Partial Shapes and Types, Part 4i: OneHot (#1832) · 3ea3c0c3
      Adam Procter authored
      * Adapt Tensor class to have partial shapes
      
      * Add PartialShapes to Input, Output, Function, Node classes
      
      * Terminological cleanup
      
      * Add PartialShape propagation for Parameter and Result
      
      * Implement partial-shape propagation for elementwise ops
      
      * More comments
      
      * One more comment tweak
      
      * Add tests for the merge functions
      
      * Add merging of undetermined element types
      
      * Fix a goophup in deserializer implementation
      
      * Implement fallback for ops that do not support partial shape/type validation
      
      * Updates for some older unit tests, now that operator[] exists
      
      * Add missing validate_punt_if_incomplete to AllReduce
      
      * Implement partial shape/type propagation for AllReduce
      
      * Implement partial shape/type propagation for Reshape
      
      * Remove unneeded validate_punt from Result
      
      * Implement partial shape/type propagation for Reverse
      
      * Implement partial shape/type validation for ReverseSequence
      
      * Implement partial shape/type validation for ArithmeticReduction
      
      * Better docstrings for the stuff introduced in #1692; remove prototype for unimplemented, unused PartialShape::append()
      
      * One more docstring thing I forgot to save
      
      * Switch terminology from 'determined/undetermined' to 'static/dynamic'
      
      * Switch terminology from 'complete/incomplete' to 'static/dynamic' for shapes; fix up some mushily worded comments
      
      * Fix overzealous edits from the last commit
      
      * Rename one test that escaped the Great Renaming
      
      * Remove unnecessary validate_punt_if_dynamic from Reshape
      
      * Fix comment typo
      
      * Rewrite operator+ and operator* for Dimension as members, not friends
      
      * Formatting tweak
      
      * Show argument types/shapes in long NodeDescription; tank unit tests to block merge
      
      * Fix dynamic element type propagation for elementwise ops, add some unit tests for same
      
      * Fix error message
      
      * Roll 'Not' back to existing behavior (non-boolean input types allowed)
      
      * Add a TODO tag to a todo item
      
      * Add unit tests for partial shape/type propagation with ReverseSequence
      
      * Add unit tests for partial-shape/type propagation for ArithmeticReduction (via Sum)
      
      * Implement partial type/shape propagation for GetOutputElement
      
      * Basic support for partial shape/type propagation for OneHot
      
      * Function signatures
      
      * Add implementations, unit tests for relaxes/refines functions
      
      * Update OneHot to take PartialShape for result, with dynamic dimension allowed at non-one-hot axes
      
      * Generalize project/reduce/inject functions to cover PartialShape, move to shape_util.[ch]pp
      
      * Deal with std::find_if #include issues
      
      * Fix more include madness
      
      * (->{ ; )->}
      
      * size_t{...} -> static_cast<size_t>(...)
      3ea3c0c3
    • shssf's avatar
      IntelGPU backend: Profiling with various statistics (#1863) · 62524c8d
      shssf authored
      * IntelGPU backend: Profiling with various statistics
      
      * PR1863. Comments addressed. Types changed to allow scientific output
      62524c8d
    • shssf's avatar
      26b7d5a9
  5. 20 Oct, 2018 3 commits
    • Adam Procter's avatar
      Add missing include to benchmark.cpp (#1870) · 35c2dfe3
      Adam Procter authored
      Fixes an error when building on macOS (with CPU backend disabled, but not sure if that makes a difference):
      
      ```
      /Users/amprocte/Work/ngraph/src/tools/nbench/benchmark.cpp:36:29: error: use of undeclared identifier '_MM_FLUSH_ZERO_ON'
          _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON);
                                  ^
      /Users/amprocte/Work/ngraph/src/tools/nbench/benchmark.cpp:37:33: error: use of undeclared identifier '_MM_DENORMALS_ZERO_ON'
          _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON);
      ```
      35c2dfe3
    • Adam Procter's avatar
      Partial Shapes and Types, Part 4k: AvgPool/MaxPool and backprops (#1871) · 256a8b6d
      Adam Procter authored
      * Add merge_rank function
      
      * Update infer_windowed_reduction_output_shape to use PartialShape
      
      * Minor simplification
      
      * Some unit tests and (whaddaya know) fixes for infer_windowed_reduction_output_shape
      
      * Update infer_batched_pooling_forward to use PartialShape
      
      * Update pooling fprop ops for partial shapes
      
      * Update pooling bprop ops for partial shapes
      
      * Add test-failing reminders to implement unit tests for partial shape/type prop for pooling ops
      
      * Add unit tests for partial shape propagation for poolign ops
      
      * Nuke C-style casts for Dimensions/Ranks in validation_util.cpp
      256a8b6d
    • Adam Procter's avatar
      Partial Shapes and Types, Part 4j: Quantize/Dequantize (#1842) · 7f6f07ee
      Adam Procter authored
      * Adapt Tensor class to have partial shapes
      
      * Add PartialShapes to Input, Output, Function, Node classes
      
      * Terminological cleanup
      
      * Add PartialShape propagation for Parameter and Result
      
      * Implement partial-shape propagation for elementwise ops
      
      * More comments
      
      * One more comment tweak
      
      * Add tests for the merge functions
      
      * Add merging of undetermined element types
      
      * Fix a goophup in deserializer implementation
      
      * Implement fallback for ops that do not support partial shape/type validation
      
      * Updates for some older unit tests, now that operator[] exists
      
      * Add missing validate_punt_if_incomplete to AllReduce
      
      * Implement partial shape/type propagation for AllReduce
      
      * Implement partial shape/type propagation for Reshape
      
      * Remove unneeded validate_punt from Result
      
      * Implement partial shape/type propagation for Reverse
      
      * Implement partial shape/type validation for ReverseSequence
      
      * Implement partial shape/type validation for ArithmeticReduction
      
      * Better docstrings for the stuff introduced in #1692; remove prototype for unimplemented, unused PartialShape::append()
      
      * One more docstring thing I forgot to save
      
      * Switch terminology from 'determined/undetermined' to 'static/dynamic'
      
      * Switch terminology from 'complete/incomplete' to 'static/dynamic' for shapes; fix up some mushily worded comments
      
      * Fix overzealous edits from the last commit
      
      * Rename one test that escaped the Great Renaming
      
      * Remove unnecessary validate_punt_if_dynamic from Reshape
      
      * Fix comment typo
      
      * Rewrite operator+ and operator* for Dimension as members, not friends
      
      * Formatting tweak
      
      * Show argument types/shapes in long NodeDescription; tank unit tests to block merge
      
      * Fix dynamic element type propagation for elementwise ops, add some unit tests for same
      
      * Fix error message
      
      * Roll 'Not' back to existing behavior (non-boolean input types allowed)
      
      * Add a TODO tag to a todo item
      
      * Add unit tests for partial shape/type propagation with ReverseSequence
      
      * Add unit tests for partial-shape/type propagation for ArithmeticReduction (via Sum)
      
      * Implement partial type/shape propagation for GetOutputElement
      
      * Function signatures
      
      * Add implementations, unit tests for relaxes/refines functions
      
      * Generalize project/reduce/inject functions to cover PartialShape, move to shape_util.[ch]pp
      
      * Dynamic shpae/type prop for Quantize
      
      * Add unit tests for partial shape/type validation for Quantize
      
      * Implement partial shape/type validation for Dequantize, with unit tests
      
      * Remove #if 0'd code
      
      * Deal with std::find_if #include issues
      
      * Fix more include madness
      7f6f07ee
  6. 19 Oct, 2018 11 commits
    • Robert Kimball's avatar
      Move unit tests out of backend_test.in.cpp (#1865) · 925e7b27
      Robert Kimball authored
      * comparisons
      
      * move more unit test out of backend_test.in.cpp
      
      * move more tests
      
      * move more tests
      925e7b27
    • Robert Kimball's avatar
      fix centos compile warning (#1866) · e9b4c104
      Robert Kimball authored
      e9b4c104
    • Jayaram Bobba's avatar
      Flush denormals to zero in nbench (#1857) · bcf608e1
      Jayaram Bobba authored
      bcf608e1
    • Jayaram Bobba's avatar
      Add support for perf counter collection in DEX (#1831) · 2c7cacd2
      Jayaram Bobba authored
      * Add support for perf counter collection in DEX
      
      * Addressed PR feedback
      2c7cacd2
    • Fenglei's avatar
      cast to ArgMin/ArgMax based on reduce_op (#1851) · a20c710b
      Fenglei authored
      * add ArgMin, ArgMax
      
      * change to scale
      
      * format
      
      * add exception
      a20c710b
    • Adam Procter's avatar
      Partial Shapes and Types, Part 4e: Dot (#1787) · fb49e0c2
      Adam Procter authored
      * Adapt Tensor class to have partial shapes
      
      * Add PartialShapes to Input, Output, Function, Node classes
      
      * Terminological cleanup
      
      * Add PartialShape propagation for Parameter and Result
      
      * Implement partial-shape propagation for elementwise ops
      
      * More comments
      
      * One more comment tweak
      
      * Add tests for the merge functions
      
      * Add merging of undetermined element types
      
      * Fix a goophup in deserializer implementation
      
      * Implement fallback for ops that do not support partial shape/type validation
      
      * Updates for some older unit tests, now that operator[] exists
      
      * Add missing validate_punt_if_incomplete to AllReduce
      
      * Implement partial shape/type propagation for AllReduce
      
      * Implement partial shape/type propagation for Reshape
      
      * Remove unneeded validate_punt from Result
      
      * Implement partial shape/type propagation for Reverse
      
      * Implement partial shape/type validation for ReverseSequence
      
      * Implement partial shape/type validation for ArithmeticReduction
      
      * Better docstrings for the stuff introduced in #1692; remove prototype for unimplemented, unused PartialShape::append()
      
      * One more docstring thing I forgot to save
      
      * Switch terminology from 'determined/undetermined' to 'static/dynamic'
      
      * Switch terminology from 'complete/incomplete' to 'static/dynamic' for shapes; fix up some mushily worded comments
      
      * Fix overzealous edits from the last commit
      
      * Rename one test that escaped the Great Renaming
      
      * Remove unnecessary validate_punt_if_dynamic from Reshape
      
      * Fix comment typo
      
      * Rewrite operator+ and operator* for Dimension as members, not friends
      
      * Formatting tweak
      
      * Show argument types/shapes in long NodeDescription; tank unit tests to block merge
      
      * Fix dynamic element type propagation for elementwise ops, add some unit tests for same
      
      * Fix error message
      
      * Roll 'Not' back to existing behavior (non-boolean input types allowed)
      
      * Add a TODO tag to a todo item
      
      * Add unit tests for partial shape/type propagation with ReverseSequence
      
      * Add unit tests for partial-shape/type propagation for ArithmeticReduction (via Sum)
      
      * Implement partial shape/type validation for Dot
      
      * Implement unit tests for partial-shape/type propagation for Dot
      
      * Implement partial type/shape propagation for GetOutputElement
      
      * Function signatures
      
      * Add implementations, unit tests for relaxes/refines functions
      
      * Generalize project/reduce/inject functions to cover PartialShape, move to shape_util.[ch]pp
      
      * Deal with std::find_if #include issues
      
      * Fix more include madness
      
      * Some light reformatting
      
      * Review comments
      fb49e0c2
    • Adam Procter's avatar
      Partial Shapes and Types, Part 4c: Slice and ReplaceSlice (#1781) · 982889f5
      Adam Procter authored
      * Adapt Tensor class to have partial shapes
      
      * Add PartialShapes to Input, Output, Function, Node classes
      
      * Terminological cleanup
      
      * Add PartialShape propagation for Parameter and Result
      
      * Implement partial-shape propagation for elementwise ops
      
      * More comments
      
      * One more comment tweak
      
      * Add tests for the merge functions
      
      * Add merging of undetermined element types
      
      * Fix a goophup in deserializer implementation
      
      * Implement fallback for ops that do not support partial shape/type validation
      
      * Updates for some older unit tests, now that operator[] exists
      
      * Add missing validate_punt_if_incomplete to AllReduce
      
      * Implement partial shape/type propagation for AllReduce
      
      * Implement partial shape/type propagation for Reshape
      
      * Remove unneeded validate_punt from Result
      
      * Implement partial shape/type propagation for Reverse
      
      * Implement partial shape/type validation for ReverseSequence
      
      * Implement partial shape/type validation for ArithmeticReduction
      
      * Better docstrings for the stuff introduced in #1692; remove prototype for unimplemented, unused PartialShape::append()
      
      * One more docstring thing I forgot to save
      
      * Switch terminology from 'determined/undetermined' to 'static/dynamic'
      
      * Switch terminology from 'complete/incomplete' to 'static/dynamic' for shapes; fix up some mushily worded comments
      
      * Fix overzealous edits from the last commit
      
      * Rename one test that escaped the Great Renaming
      
      * Remove unnecessary validate_punt_if_dynamic from Reshape
      
      * Fix comment typo
      
      * Rewrite operator+ and operator* for Dimension as members, not friends
      
      * Formatting tweak
      
      * Show argument types/shapes in long NodeDescription; tank unit tests to block merge
      
      * Fix dynamic element type propagation for elementwise ops, add some unit tests for same
      
      * Fix error message
      
      * Roll 'Not' back to existing behavior (non-boolean input types allowed)
      
      * Add a TODO tag to a todo item
      
      * Add unit tests for partial shape/type propagation with ReverseSequence
      
      * Add unit tests for partial-shape/type propagation for ArithmeticReduction (via Sum)
      
      * Implement partial shape/type validation for Slice
      
      * Add unit tests for partial shape/type validation for Slice
      
      * Implement partial shape/type propagation for ReplaceSlice
      
      * Add unit tests for partial type/shape validation for ReplaceSlice
      
      * Implement partial type/shape propagation for GetOutputElement
      
      * Function signatures
      
      * Add implementations, unit tests for relaxes/refines functions
      
      * Generalize project/reduce/inject functions to cover PartialShape, move to shape_util.[ch]pp
      
      * Deal with std::find_if #include issues
      
      * Fix more include madness
      
      * Change an internal variable name to something more descriptive
      
      * Review comments
      982889f5
    • Jaikrishnan Menon's avatar
      Basic infrastructure for simple halide subgraphs (#1854) · 91219e40
      Jaikrishnan Menon authored
      * Basic infrastructure for simple halide subgraphs
      
      * Always build the op since it has no dependencies
      
      * minor cleanup
      
      * Incorporate feedback
      91219e40
    • Adam Procter's avatar
      Partial Shapes and Types, Part 4g: Select (#1800) · b079f266
      Adam Procter authored
      * Adapt Tensor class to have partial shapes
      
      * Add PartialShapes to Input, Output, Function, Node classes
      
      * Terminological cleanup
      
      * Add PartialShape propagation for Parameter and Result
      
      * Implement partial-shape propagation for elementwise ops
      
      * More comments
      
      * One more comment tweak
      
      * Add tests for the merge functions
      
      * Add merging of undetermined element types
      
      * Fix a goophup in deserializer implementation
      
      * Implement fallback for ops that do not support partial shape/type validation
      
      * Updates for some older unit tests, now that operator[] exists
      
      * Add missing validate_punt_if_incomplete to AllReduce
      
      * Implement partial shape/type propagation for AllReduce
      
      * Implement partial shape/type propagation for Reshape
      
      * Remove unneeded validate_punt from Result
      
      * Implement partial shape/type propagation for Reverse
      
      * Implement partial shape/type validation for ReverseSequence
      
      * Implement partial shape/type validation for ArithmeticReduction
      
      * Better docstrings for the stuff introduced in #1692; remove prototype for unimplemented, unused PartialShape::append()
      
      * One more docstring thing I forgot to save
      
      * Switch terminology from 'determined/undetermined' to 'static/dynamic'
      
      * Switch terminology from 'complete/incomplete' to 'static/dynamic' for shapes; fix up some mushily worded comments
      
      * Fix overzealous edits from the last commit
      
      * Rename one test that escaped the Great Renaming
      
      * Remove unnecessary validate_punt_if_dynamic from Reshape
      
      * Fix comment typo
      
      * Rewrite operator+ and operator* for Dimension as members, not friends
      
      * Formatting tweak
      
      * Show argument types/shapes in long NodeDescription; tank unit tests to block merge
      
      * Fix dynamic element type propagation for elementwise ops, add some unit tests for same
      
      * Fix error message
      
      * Roll 'Not' back to existing behavior (non-boolean input types allowed)
      
      * Add a TODO tag to a todo item
      
      * Add unit tests for partial shape/type propagation with ReverseSequence
      
      * Add unit tests for partial-shape/type propagation for ArithmeticReduction (via Sum)
      
      * Implement partial shape/type validation for Select; implement unit tests for same
      
      * Implement partial type/shape propagation for GetOutputElement
      
      * Function signatures
      
      * Add implementations, unit tests for relaxes/refines functions
      
      * Generalize project/reduce/inject functions to cover PartialShape, move to shape_util.[ch]pp
      
      * Deal with std::find_if #include issues
      
      * Fix more include madness
      b079f266
    • Adam Procter's avatar
      Partial Shapes and Types, Part 4d: Broadcast (#1783) · 34aae47c
      Adam Procter authored
      * Adapt Tensor class to have partial shapes
      
      * Add PartialShapes to Input, Output, Function, Node classes
      
      * Terminological cleanup
      
      * Add PartialShape propagation for Parameter and Result
      
      * Implement partial-shape propagation for elementwise ops
      
      * More comments
      
      * One more comment tweak
      
      * Add tests for the merge functions
      
      * Add merging of undetermined element types
      
      * Fix a goophup in deserializer implementation
      
      * Implement fallback for ops that do not support partial shape/type validation
      
      * Updates for some older unit tests, now that operator[] exists
      
      * Add missing validate_punt_if_incomplete to AllReduce
      
      * Implement partial shape/type propagation for AllReduce
      
      * Implement partial shape/type propagation for Reshape
      
      * Remove unneeded validate_punt from Result
      
      * Implement partial shape/type propagation for Reverse
      
      * Implement partial shape/type validation for ReverseSequence
      
      * Implement partial shape/type validation for ArithmeticReduction
      
      * Better docstrings for the stuff introduced in #1692; remove prototype for unimplemented, unused PartialShape::append()
      
      * One more docstring thing I forgot to save
      
      * Switch terminology from 'determined/undetermined' to 'static/dynamic'
      
      * Switch terminology from 'complete/incomplete' to 'static/dynamic' for shapes; fix up some mushily worded comments
      
      * Fix overzealous edits from the last commit
      
      * Rename one test that escaped the Great Renaming
      
      * Remove unnecessary validate_punt_if_dynamic from Reshape
      
      * Fix comment typo
      
      * Rewrite operator+ and operator* for Dimension as members, not friends
      
      * Formatting tweak
      
      * Show argument types/shapes in long NodeDescription; tank unit tests to block merge
      
      * Fix dynamic element type propagation for elementwise ops, add some unit tests for same
      
      * Fix error message
      
      * Roll 'Not' back to existing behavior (non-boolean input types allowed)
      
      * Add a TODO tag to a todo item
      
      * Add unit tests for partial shape/type propagation with ReverseSequence
      
      * Add unit tests for partial-shape/type propagation for ArithmeticReduction (via Sum)
      
      * Implement partial shape/type validation for Broadcast; implement unit tests for same
      
      * Remove inapplicable TODO
      
      * Implement partial type/shape propagation for GetOutputElement
      
      * Function signatures
      
      * Add implementations, unit tests for relaxes/refines functions
      
      * Generalize project/reduce/inject functions to cover PartialShape, move to shape_util.[ch]pp
      
      * Deal with std::find_if #include issues
      
      * Fix more include madness
      34aae47c
    • Adam Procter's avatar
      Partial Shapes and Types, Part 4b: Concat (#1778) · 9aba28dc
      Adam Procter authored
      * Adapt Tensor class to have partial shapes
      
      * Add PartialShapes to Input, Output, Function, Node classes
      
      * Terminological cleanup
      
      * Add PartialShape propagation for Parameter and Result
      
      * Implement partial-shape propagation for elementwise ops
      
      * More comments
      
      * One more comment tweak
      
      * Add tests for the merge functions
      
      * Add merging of undetermined element types
      
      * Fix a goophup in deserializer implementation
      
      * Implement fallback for ops that do not support partial shape/type validation
      
      * Updates for some older unit tests, now that operator[] exists
      
      * Add missing validate_punt_if_incomplete to AllReduce
      
      * Implement partial shape/type propagation for AllReduce
      
      * Implement partial shape/type propagation for Reshape
      
      * Remove unneeded validate_punt from Result
      
      * Implement partial shape/type propagation for Reverse
      
      * Implement partial shape/type validation for ReverseSequence
      
      * Implement partial shape/type validation for ArithmeticReduction
      
      * Better docstrings for the stuff introduced in #1692; remove prototype for unimplemented, unused PartialShape::append()
      
      * One more docstring thing I forgot to save
      
      * Switch terminology from 'determined/undetermined' to 'static/dynamic'
      
      * Switch terminology from 'complete/incomplete' to 'static/dynamic' for shapes; fix up some mushily worded comments
      
      * Fix overzealous edits from the last commit
      
      * Rename one test that escaped the Great Renaming
      
      * Remove unnecessary validate_punt_if_dynamic from Reshape
      
      * Fix comment typo
      
      * Rewrite operator+ and operator* for Dimension as members, not friends
      
      * Formatting tweak
      
      * Show argument types/shapes in long NodeDescription; tank unit tests to block merge
      
      * Fix dynamic element type propagation for elementwise ops, add some unit tests for same
      
      * Fix error message
      
      * Roll 'Not' back to existing behavior (non-boolean input types allowed)
      
      * Add a TODO tag to a todo item
      
      * Add unit tests for partial shape/type propagation with ReverseSequence
      
      * Add unit tests for partial-shape/type propagation for ArithmeticReduction (via Sum)
      
      * Implement partial shape/type validation for concat
      
      * Fix for a corner case in concat propagation of dynamic shapes; unit tests for concat propagation of dynamic shapes
      
      * Implement partial type/shape propagation for GetOutputElement
      
      * Function signatures
      
      * Add implementations, unit tests for relaxes/refines functions
      
      * Generalize project/reduce/inject functions to cover PartialShape, move to shape_util.[ch]pp
      
      * Deal with std::find_if #include issues
      
      * Fix more include madness
      
      * Remove validate-punt-if-dynamic test because it uses Concat
      9aba28dc