1. 24 Oct, 2019 1 commit
    • [NODE][REFACTOR] Refactor reflection system in node. (#4189) · 78ca6fc8
      * [NODE][REFACTOR] Refactor reflection system in node.
      
      - Removed the old Node, Node is now just an alias of runtime::Object
      - Introduce ReflectionVTable, a new columnar dispatcher to support reflection
        - This allows us to remove vtable from most node objects
        - The VisitAttrs are registered via TVM_RESGITER_NODE_TYPE,
          they are no longer virtual.
      - Consolidated serialization and reflection features into node.
      
      * Explicit type qualification when calling destructor.
      
      * Fix SPIRV, more comments
      Tianqi Chen committed
  2. 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
  3. 06 Sep, 2019 1 commit
    • [Relay] Add ADTs to text format (#3863) · ca0292d8
      * Getting closer to having ADT defs
      
      * ADT defs working probly
      
      * Match parsing basipally done
      
      * came to earth in a silver chrome UFO
      
      * match finished?
      
      * All tests but newest are passing
      
      * ADT constructors work
      
      now cleanup?
      
      * Cleanup round 1
      
      * Cleanup round 2
      
      * Cleanup round 3
      
      * Cleanup round 4
      
      * Cleanup round 6
      
      * Cleanup round 7
      
      * Lil grammar fix
      
      * Remove ANTLR Java files
      
      * Lint roller
      
      * Lint roller
      
      * Address feedback
      
      * Test completeness in match test
      
      * Remove unused imports
      
      * Lint roller
      
      * Switch to Rust-style ADT syntax
      
      * Lil fix
      
      * Add dummy `extern type` handler
      
      * Add type arg to test
      
      * Update prelude semantic version
      
      * Repair test
      
      * Fix graph var handling in match
      
      * Revert 's/graph_equal/is_unifiable' change
      Logan Weber committed
  4. 05 Sep, 2019 1 commit
  5. 01 Aug, 2019 1 commit
    • [Relay] Strict mode in pattern matching (#3620) · 331585f4
      * add fatal
      
      lint
      
      lint
      
      lint
      
      do
      
      make completeness check an error
      
      lint
      
      remove fatal
      
      * fix test
      
      * reset parser file
      
      * remove unneeded import
      
      * Update python/tvm/relay/adt.py
      
      Co-Authored-By: Steven S. Lyubomirsky <slyubomirsky@gmail.com>
      
      * Update include/tvm/relay/adt.h
      
      Co-Authored-By: Steven S. Lyubomirsky <slyubomirsky@gmail.com>
      
      * Eliminate trailing whitespace (my fault)
      雾雨魔理沙 committed
  6. 10 Jul, 2019 1 commit
    • [Relay][Testing] Relay-to-Python compilation (#3156) · db841c24
      * First pass at Relay-to-Python converter testing utility
      
      * Indicate astor as a dependency
      
      * Add astor dep to host as well
      
      * Typos and small bugs
      
      * Handle ADTs and matching in Python conversion
      
      * Remove any dependency on ast.parse
      
      * Eliminate unnecessary type var field in Python version of ConstructorValue (already gone on C++ side)
      
      * Update constructor value, fix syntax errors
      
      * Don't forget keywords arg on Call nodes
      
      * Fix some incorrect calls to ast nodes
      
      * Fix more calls, a little more cleaning up
      
      * Missing cases in attr conversion
      
      * Lower op calls instead of running them through interpreter, as in @MarisaKirisame's AoT compiler
      
      * We do still need the module
      
      * Remove changes to op attrs: Will PR separately
      
      * Smoke test and corrections
      
      * More tests and fixes
      
      * Ensure imports are properly global in generated Python code
      
      * Add unit tests for refs
      
      * Add unit test for tuple indexing
      
      * Add unit test for if expression
      
      * Remove astor dependency
      
      * Remove astor from meta.yaml too
      
      * Fix if test and add basic local function test
      
      * Add global function test, refactor earlier tests
      
      * Correct 'clause' field in ADT so Python and C++ field names match
      
      * More fixes and tests for matching and constructors
      
      * Dramatically simplify matching: no need for a thunk
      
      * Improve ref writing test
      
      * Ensure local recursion works
      
      * cleanup
      
      * Add test for global recursion
      
      * Add test for higher-order calls
      
      * Get ops working, add basic tests
      
      * Remove accidentally duplicated test
      
      * More docstrings to appease pylint
      
      * Forgot to fix a test using constructor values
      
      * Reduce optimization level in fusion and fix tuple input to operators
      
      * Test op with tuple output, fix tuple output code
      
      * Add unit test for batch norm
      
      * Add a couple more tricky test cases
      
      * Correct nat constructor to drop unnecessary field
      
      * Fix the op attrs file (accidentally reduced it)
      
      * Address review comments
      
      * Adapt to new ConstructorValue representation (no more runtime dep on module)
      
      * Use pass manager and updated interfaces. Extend module.from_expr to accommodate necessary demands
      
      * Use sequential return value
      
      * Lift out nested conditionals
      
      * Replace triple single quotes with triple double quotes
      
      * Use main variable instead of entry_func
      Steven S. Lyubomirsky committed
  7. 05 Jul, 2019 1 commit
  8. 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
  9. 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