1. 03 Apr, 2020 1 commit
    • [RELAY] Non-recursive Graph Vistor and Rewriter (#4886) · 7de8a539
      * First pass a defining a non-recursive Graph Vistor and Rewriter
      
      autoformat
      
      remove a currently empty test until testing is solidfied
      
      * Make CalcDep from Dead Code Elimination non-recursive
      
      * Partially working, not passing all tests yet
      
      passes tests when disabling GetExprRefCount, I think I have a bug in visit counting
      
      fix GetExprRefCount
      
      Fix a subtle bug with nested recursive/non-recursive scopes
      
      * Refactor
      
      * improve comments
      
      * respond to review comments on comments
      
      * Fix a problem with default recursion for dataflow nodes
      
      mark DataflowVisitor methods as override
      
      * implement ScopeMutator
      
      * convert forward_rewrite to ScopeMutator, remove DataflowMutator
      
      * rewrite ExprRewriter and convert fast_math to use it
      
      * switch BiasAddSimplifier to ExprRewriter
      
      fix a clang warning
      
      fix cpp lint
      
      fix doc param error
      
      * respond to review comments
      
      * fix a typo in the iterative looping
      
      * add a regression test for GetExprRefCount issue
      
      * Normalize naming
      
      * fix lint
      
      * First pass a defining a non-recursive Graph Vistor and Rewriter
      
      autoformat
      
      remove a currently empty test until testing is solidfied
      
      * Make CalcDep from Dead Code Elimination non-recursive
      
      * Partially working, not passing all tests yet
      
      passes tests when disabling GetExprRefCount, I think I have a bug in visit counting
      
      fix GetExprRefCount
      
      Fix a subtle bug with nested recursive/non-recursive scopes
      
      * Refactor
      
      * improve comments
      
      * respond to review comments on comments
      
      * Fix a problem with default recursion for dataflow nodes
      
      mark DataflowVisitor methods as override
      
      * implement ScopeMutator
      
      * convert forward_rewrite to ScopeMutator, remove DataflowMutator
      
      * rewrite ExprRewriter and convert fast_math to use it
      
      * switch BiasAddSimplifier to ExprRewriter
      
      fix a clang warning
      
      fix cpp lint
      
      fix doc param error
      
      * respond to review comments
      
      * fix a typo in the iterative looping
      
      * add a regression test for GetExprRefCount issue
      
      * Normalize naming
      
      * fix lint
      
      * respond to review comments
      Matthew Brookhart committed
  2. 12 Mar, 2020 1 commit
    • [REFACTOR] Streamline Function Attr interface. (#5045) · ec86d7f1
      * [REFACTOR] Streamline Function Attr interface.
      
      There has been quite a few recent changes that depends heavily on
      the function attr interface. This PR streamlines that interface by introducing
      two APIs that covers most of the usages.
      
      - GetAttr which gets a typed object for a given key
        - HasNonzeroAttr is a quick helper that calls GetAttr to quickly check an attribute
      - WithAttr that creates a new function object with the given attr
        - The API comes with copy on write optimization to avoid multiple copies
        - We deliberately pick the prefix With(instead of Set) to indicate this
          function does not mutate the original input.
      
      On the python side:
      - We allow read access via func.attrs (which is a DictAttr)
      - func.with_attrs to create a new instance with updated attrs.
      
      We also get rid of the small wrapper functions and make sure the API centered around
      the GetAttr and HasNonzeroAttr interface.
      
      This PR also changes the function construction to follow the new convention.
      
      * Address review comments
      
      * Address review comments
      
      * Fix doxygen path
      Tianqi Chen committed
  3. 14 Jan, 2020 1 commit
  4. 31 Dec, 2019 1 commit
    • [REFACTOR][OBJECT] Consoldiate NodePtr/Ref/Hash/Equal to Object (#4603) · a8c36921
      * [REFACTOR][OBJECT] Consoldiate NodePtr/Ref/Hash/Equal and macros to Object.
      
      Historically, we have classes like NodePtr/Ref/HashEqual.
      After unified object protocol, these names are just alias of the object counterpart.
      Moreover, there are helper macros defined over the places for defining these object.
      
      This PR consoldiate the terminologies into the corresponding ones
      in the Object system so we have a clean and consistent API moving forward.
      
      * Update include/tvm/attrs.h
      
      Co-Authored-By: Wei Chen <ipondering.weic@gmail.com>
      
      * fix compilation
      
      Co-authored-by: Wei Chen <ipondering.weic@gmail.com>
      Tianqi Chen committed
  5. 01 Nov, 2019 1 commit
    • [NODE][REFACTOR] Rename IRFunctor->NodeFunctor, use func pointer (#4247) · 9a3d2ec9
      * [NODE][REFACTOR] Rename IRFunctor->NodeFunctor, use function pointer for dispatching.
      
      Previously we used std::function for the functor dispatching.
      It introduces additional overhead and problems during dll destruction(of std::function).
      
      This PR changes the std::function to function pointers.
      This change a bit restrictions around the set_dispatch that we can get around,
      but will improve the general efficiency by reducing one level of indirection in the std::function.
      We also no longer need special marcos to register functions to the Functor.
      Tianqi Chen committed
  6. 21 Oct, 2019 1 commit
    • [REFACTOR][NODE][RUNTIME] Move Node to the new Object protocol. (#4161) · 7895adb2
      * [REFACTOR][NODE][RUNTIME] Move Node to the new Object protocol.
      
      This PR removes the original node system, and make node as a subclass of Object.
      This is a major refactor towards a better unified runtime object system.
      
      List of changes in the refactor:
      
      - We now hide data_ field, use Downcast explicitly to get a sub-class object.
      - Removed the node system FFI in python.
      - Removed the node C API, instead use PackedFunc for list and get attrs.
      - Change relay::Op::set_attr_type_key(attr_key_name) to relay::Op::set_attr_type<AttrType>().
        - This change was necessary because of the new Object registration mechanism.
        - Subsequent changes to the op registrations
        - The change revealed a few previous problems that is now fixed.
      - Patched up a few missing node type registration.
        - Now we will raise an error if we register object that is not registered.
      - The original node.h and container.h are kept in the same location.
      - Calling convention: kObjectHandle now equals the old kNodeHandle, kNodeHandle is removed.
      - IRFunctor now dispatches on ObjectRef.
      - Update to the new type checking API: is_type, derived_from are replaced by IsInstance.
      - Removed .hash member function, instead use C++ convention hasher functors.
      
      * Address review comments
      Tianqi Chen committed
  7. 29 Sep, 2019 1 commit
    • [Relay] Move prelude to text format (#3939) · 2dac17d8
      * Fix parser
      
      * Doc fix
      
      * Add module utility functions necessary for prelude
      
      * Implement prelude in text format
      
      * Remove programmatically constructed prelude defs
      
      * Fix 0-arity type conses in pretty printer and test
      
      * Make prelude loading backwards-compatible
      
      * Fix patterns
      
      * Improve some prelude defs
      
      * Fix `ImportFromStd`
      
      It needs to also follow the "add unchecked, add checked" pattern
      
      * Lint roller
      
      * Woops
      
      * Address feedback
      
      * Fix `test_list_constructor` VM test
      
      * Fix `test_adt.py` failures
      Logan Weber committed
  8. 27 Jun, 2019 1 commit
  9. 19 Apr, 2019 1 commit
  10. 09 Apr, 2019 1 commit
    • add document (#2714) · bb87f044
      lint
      
      lint
      
      save
      
      save
      
      add more case
      
      save
      
      error
      
      lint
      
      lint
      
      commit
      
      do
      
      lint
      
      save
      
      fix lint
      
      wrap it back as func
      
      lint
      
      save
      
      remove dead comment
      
      fix style
      
      fix lint
      
      Update src/relay/pass/partial_eval.cc
      
      Co-Authored-By: MarisaKirisame <lolisa@marisa.moe>
      
      Update src/relay/pass/partial_eval.cc
      
      Co-Authored-By: MarisaKirisame <lolisa@marisa.moe>
      
      Update src/relay/pass/partial_eval.cc
      
      Co-Authored-By: MarisaKirisame <lolisa@marisa.moe>
      
      Update src/relay/pass/partial_eval.cc
      
      Co-Authored-By: MarisaKirisame <lolisa@marisa.moe>
      
      Update src/relay/pass/partial_eval.cc
      
      Co-Authored-By: MarisaKirisame <lolisa@marisa.moe>
      
      Update src/relay/pass/partial_eval.cc
      
      Co-Authored-By: MarisaKirisame <lolisa@marisa.moe>
      
      address review feedback
      
      pe now handle freevar. as a result preserving function is now trivial.
      
      test
      
      add basic test, implement pretty printing for generic function
      
      test
      
      lint
      
      fix segfault
      
      save
      
      save
      
      do
      
      test
      
      fix another error
      
      address comment
      
      commit
      
      save
      
      address review feedback
      
      add test for invalidate, fix error in lookup
      
      rename cont to boduy
      
      fix error and add regression test
      
      fix error, add test case
      
      Update src/relay/pass/partial_eval.cc
      
      Co-Authored-By: MarisaKirisame <lolisa@marisa.moe>
      
      fix lint
      
      remove extra line
      
      save
      
      save
      雾雨魔理沙 committed
  11. 08 Apr, 2019 1 commit
    • [HEADER] Add Header to Comply with ASF Release Policy (#2982) · cffb4fba
      * [HEADER] ASF header dir=include
      
      * [HEADER] ASF Header dir=src
      
      * [HEADER] ASF Header -dir=python
      
      * [HEADER] ASF header dir=topi
      
      * [HEADER] ASF Header dir=nnvm
      
      * [HEADER] ASF Header -dir=tutorials
      
      * [HEADER] ASF Header dir=tests
      
      * [HEADER] ASF Header -dir=docker
      
      * fix whitespace
      
      * [HEADER] ASF Header -dir=jvm
      
      * [HEADER] ASF Header -dir=web
      
      * [HEADER] ASF Header --dir=apps
      
      * [HEADER] ASF Header --dir=vta
      
      * [HEADER] ASF Header -dir=go
      
      * temp
      
      * [HEADER] ASF Header --dir=rust
      
      * [HEADER] Add ASF Header --dir=cmake
      
      * [HEADER] ASF Header --dir=docs
      
      * [HEADER] Header for Jenkinsfile
      
      * [HEADER] ASF Header to toml and md
      
      * [HEADER] ASF Header to gradle
      
      * Finalize rat cleanup
      
      * Fix permission
      
      * Fix java test
      
      * temporary remove nnvm onnx test
      Tianqi Chen committed
  12. 12 Mar, 2019 1 commit
  13. 16 Feb, 2019 1 commit
    • [Relay] Algebraic data types (#2442) · 2ae3124f
      * First pass on ADTs
      
      * Add doc string for tag field
      
      * Visit constructors in TypeVisitor for TypeData
      
      * Add to description of type call
      
      * Add type call to type solving and unification
      
      * Make type mutator for typecall consistent with others (only create new node if there's a change)
      
      * Ensure kindchecking can handle type calls and typedata
      
      * Fix bad nesting in module constructor
      
      * Correctly construct call in typecall test
      
      * Add call override for ordinary vars (do we want this?)
      
      * Remove generalization hack from type inference because it was breaking ADT constructors
      
      * Check that there are no free type vars in exprs after inferring type
      
      * Free var checks need module because of ADT constructors
      
      * Typecall test can't have unbound type var, make it global
      
      * Uncomment tmap test and remove comments about failing to infer ret type; those work now
      
      * Put in dummy visits for ADTs in graph runtime codegen to placate pylint
      
      * Fix Relay type infer test module constructor
      
      * Mark override for TypeCallNode in type solver
      
      * Ensure free vars check treats patern vars as bound
      
      * Run interpreter in more ADT test cases
      
      * Refactor kind check to return the kind, like typechecking
      
      * Fix invalid typecall in test
      
      * Add kind check to type inference, do not use nulls in func_type_annotation()!
      
      * Redundant whitespace
      
      * Make TypeData a separate kind
      
      * Make ADT handles a separate kind too, document calling convention better
      
      * Remove nats and tree from prelude, move to test, document prelude
      
      * Restore and document nat and tree to prelude, add more tree tests
      
      * Add alpha equality tests for match cases, fix variable binding bug
      
      * Add more kind check tests for ADTs
      
      * Add more tests for finding free or bound vars in match exprs
      
      * Add unification tests for type call
      
      * Update main() for alpha equality tests
      
      * Add simple type inference test cases for match exprs and ADT constructors
      
      * Add more ADT interpreter tests
      
      * Allow incomplete types when typechecking match cases
      
      * Type inference for pattern vars should use the type annotation if it's there
      
      * Two more specific test cases for ADT matching
      
      * Add option ADT to prelude
      
      * Fix broken reference to kind enum
      
      * Fix rebase snags
      
      * Do not attach checked types to constructors
      
      * More docstrings for module fields
      
      * Use proper wrapper for indexing into module type data
      
      * checked_type for constructors is not populated
      
      * Expand type call docstring
      
      * Rename PatternConstructor con field
      
      * Use error reporter for pattern constructor case
      
      * Condense error reporting in kind check, use error reporter
      
      * Expand docstrings and rename ADT fields
      
      * Rename 'option' ADT to 'optional' for consistency with Python
      
      * Add various list iterators and utility functions to prelude
      
      * Add smoke tests for new iterators in prelude
      
      * Add concat to prelude
      
      * Add smoke test for concat
      
      * Correct docstrings in prelude
      
      * Ensure that type defs are written in module initialization
      
      * Various requested renamings
      
      * Correct rebase snags
      
      * Add kind check tests for ref types
      
      * Update the main() for kind checking tests
      Steven S. Lyubomirsky committed
  14. 15 Feb, 2019 1 commit
  15. 26 Nov, 2018 1 commit
  16. 14 Nov, 2018 1 commit
  17. 30 Oct, 2018 1 commit
  18. 28 Oct, 2018 1 commit
  19. 24 Oct, 2018 1 commit
  20. 15 Oct, 2018 1 commit
  21. 10 Oct, 2018 1 commit
  22. 01 Oct, 2018 1 commit
  23. 21 Sep, 2018 1 commit
  24. 20 Sep, 2018 1 commit
  25. 19 Sep, 2018 1 commit