- 28 Mar, 2020 2 commits
-
-
* [NODE][IR] Introduce StructuralHash for the Unified IR. This PR introduces a new way to handle structural hash for the unified IR. - Each object can now register an optional SEqualHash function, which describes how to reduce its structural equality to sequence of hash values. - Optionally, the object can choose to allow labeling of vars(e.g. function parameters) by calling DefHash - We implemented a non-recursive structural hasher that maintains its own stack to traverse te IR. This PR also improves the hash value property from the previous relay's hash utility. In particular, the graph node mode hashs a DAG differently from a tree by attaching an unique occurence index to each graph node. In all of the test cases so far, structural_hash is consistent with structural_equal. - if structrual(x, y) then structural_hash(x) == structural_hash(y) - if structural_hash(x) == structural_hash(y) then highly likely structural_equal(x, y) - hash no collison is found in our testcases. Ideally we should work on automatically generating these functions in the future. * Fix cases for EnvFunc and Array dims * fix testcase * Update src/node/structural_hash.cc Co-Authored-By: 雾雨魔理沙 <lolisa@marisa.moe> Co-authored-by: 雾雨魔理沙 <lolisa@marisa.moe>
Tianqi Chen committed -
* [NODE][IR] Introduce StructuralEqual Infra for the Unified IR. This PR introduces a new way to handle structural equality for both TIR and relay nodes in an extensive way. - Each object can now register an optional SEqualReduce function, which describes how to reduce its structural equality to another instance into equality of the children. - Optionally, the object can choose to allow remapping of vars(e.g. function parameters) by calling DefEqual - We implemented a non-recursive structural equality checker that recursively traverses the objects and does the structural equality checking. This PR also fixes a few potential problems in previous relay's AlphaEqual. - In particular, the new structural equality relation will be communicative. - It is can be dangerous to use same_as relation to quickly check equality, demonstrated by the following case. (%x, %y) are shared vars between two functions. - function0: fn (%x, %y) { %x + %y } - function1: fn (%y, %x) { %x + %y } The new structural equal is intented to supersede AlphaEqual and AttrsEqual. Follow-up PRs should be performed to redirect the existing usages, and removes the corresponding implementation. * Update the rule to distinguish between graph node and non-graph nodes. * Refactor the test cases to use structural equal. * address comments * Mark more relay::Expr as graph node, fix a testcase issue(was bug that was not caught by previous alpha equal) * Remove unrelated comment * Fix file comment * Address review comment * Relax condition to fit flaky case
Tianqi Chen committed
-
- 23 Mar, 2020 1 commit
-
-
* relay Node::make to constructor * patternwildcard * Address comments
Zhi committed
-
- 12 Mar, 2020 1 commit
-
-
* [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
-
- 02 Mar, 2020 1 commit
-
-
* add inline pass * IsInline -> IsMarkedInlined * fix comment
Zhi committed
-
- 10 Feb, 2020 1 commit
-
-
* [Relay] Added MergeComposite pass This pass allows for patterns to be wrapped in a function marked with 'Composite' and a composite function name. This is intended to be used with the external codegen for the cases where an external operator maps to multiple Relay operators. In that case, the mapping can be expressed as a pattern and assigned a name. For more information on this pass and its motivation, see the RFC: https://discuss.tvm.ai/t/rfc-external-codegen-defining-composite-relay-operators/5470 Change-Id: Icb1b803a9f0ac57c529143200228f3bb5793afc0 * [Relay] Merge composite tests Added tests for the merge_composite pass. Change-Id: I1728b4a05b0c1c36140a40f1afe028fde62185dd * Merge composite additional test Change-Id: I9bc7d6053c575e9468ac5abc31214c6ad8507e46 * Support priority order in merge_composite The order in which the patterns are matched was currently random as an unordered_map was used to store the pattern table. This uses arrays instead so that a distinct priority order of matching can be defined. Additional tests have also been added to verify this behaviour. Change-Id: Ief347df4262639138d5d9d7c8cee7ef233af7b56 * Improved merge composite docs Change-Id: Ie3a72045ecc3f13ad3c302fbdf192b7296a306a8 * Removed unused variable Change-Id: I7814d5fde368ffaf1b3d6d806060c774c7720364 * Remove unnecessary op check Change-Id: I38e78d2acd5b86cb8e837be72ff9d72cd10bcf33 * Improve styling on composite function creation Change-Id: I37add1c3134e0b5d5085fe1eb9daf8e06890fa8c * Comment reword Change-Id: Ie05872dcbbe0c3e1190b0597083b9a64e6b66c66 * Stylistic changes to avoid std::move Change-Id: I43a93995bbf10530399900c992aa99dd4ae4575f * Relax a check in ExtractPattern Change-Id: I0faef77a66c55f83f09e6e47c561ffaea63dedfa * Remove new line Change-Id: Ifdd02c12087a7e1a0a9b54825669bc0de8f13c3d * Removed MatchPattern from MergeComposite This is not necessary now that ExtractPattern can fulfill the same purpose. Change-Id: I14dc020afa8e50f2df4c0a2efb88a011987f8196 * Removed a new line Change-Id: I8b50f0c9069aa1bcaccbe68eb421031f01a64842 * Improved docs for merge composite Change-Id: Ib1959a35c856e7ea5639de2e4ef314a54f44caf5 * Fixed free vars in test Change-Id: I2b7f273db275964ec0e9820560663f0808adee79 * Handle case where root arg might not be a call Change-Id: I4eeea3ce723d3ba337d110dcc690377daebe8626 * Removed blank line Change-Id: I07f5392c0e95cfe3cfa5c333703cc6f82d6034fb * Change to CHECK_EQ Change-Id: I5c5d62d3cd57f72508b30b926f72091ae6f0d1cc * Revised a conditional Change-Id: I23a7897ca15a7cd076db5039dc653a4b8c27e803 * Improved doc styling Change-Id: I377f0a1c1ac70f3b8d7584b0c49bddc8c6c134ef * Fail extraction if vars conflict Change-Id: I78e36d805e8ed6b55e61d490212a967c857554a4 * Added further merge composite tests Change-Id: Ib1d800409fca4c1834c7fe0cab5a26ab99a26820 Co-authored-by: lhutton1 <35535092+lhutton1@users.noreply.github.com>
mbarrett97 committed
-
- 04 Feb, 2020 1 commit
-
-
* [LINT] Fix -Wextra * Fix virtual-dtor
Tianqi Chen committed
-
- 21 Jan, 2020 1 commit
-
-
* [REFACTOR] Establish printer in the source folder. As we move towards the unified IR, we will eventually want to build a unified printers for both relay and TIR. This PR isolate the printer component into a separate folder in src as a first step. - Refactored the Doc DSL using Object, clean up APIs. - Isolate out the meta data into a header. - move printer into relay_text_printer, add comments about further TODos. * Rename NodePrinter -> ReprPrinter to distinguish it from other printers
Tianqi Chen committed
-
- 15 Jan, 2020 1 commit
-
-
This PR moves attrs.h into the ir folder as it can serve as a common infra for building ir dats structures. We also moved common container(FloatImm) into ir/expr.h
Tianqi Chen committed
-
- 11 Jan, 2020 1 commit
-
-
This PR moves a few base types from relay and low-level Expr into the ir sub-folder. These classes will serve as a common type system across the stack. Rationale: - PrimExpr for low-level expressions - RelayExpr for advanced features, including Function definition. - Introduce BaseFunc to host all functions, including future PrimFunc(low-level expr functions, subject to discussion). This is a minimum change we can do to unify the classes into a common hierarchy. The main data structure that are variant specific will still be kept in the sub-namespaces. We only include classes that is needed to allow a common Module class. - BaseFunc - GlobalVar - Type definition part of ADT We will only need the BaseFunc and their checked_type to decide the calling convention across the function variants.
Tianqi Chen committed
-
- 31 Dec, 2019 1 commit
-
-
* [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
-
- 18 Dec, 2019 1 commit
-
-
Zhi committed
-
- 24 Nov, 2019 1 commit
-
-
Yizhi Liu committed
-
- 27 Oct, 2019 1 commit
-
-
* Add support for attaching params * Fix types * Fix test
Jared Roesch committed
-
- 24 Oct, 2019 1 commit
-
-
* [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
-
- 21 Oct, 2019 1 commit
-
-
* [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
-
- 12 Sep, 2019 1 commit
-
-
* Module refactor * Add load module * Add support for idempotent import * Tweak load paths * Move path around * Expose C++ import functions in Python * Fix import * Add doc string * Fix * Fix lint * Fix lint * Fix test failure * Add type solver * Fix lint
Jared Roesch committed
-
- 10 Jul, 2019 1 commit
-
-
* Implement type checking for Any Remove code generation related changes Remove compile changes Remove more Remove unification hack Add some code back that was needed, and clean up test Refactor test cases WIP Implement TypeHint AST Add test case which should fail Remove unification changes, and fix bug with let rec Restore unification for shapes Improve error reporting while debugging All examples type check All examples type check WIP First version that works with hints, needs clean up Remove dead code Tweaks Remove type hint Remove unecessary type hint stuff Remove more type hints Clean up Expose Any expression node Address CR Fix Fix solver Kill unecessary code Fix PyLint Fix Relocate loops Fix license and test Lint again Lint again Fix loops Fix docstring Fix template error Fix compiler issue Fix compile err Remove more runtime changes Restore buffer Fix segfault Fix Fix arange * Address feedback * Fix typo * Fix arange * Fix op level3 * Fix issue with Python wrapper
Jared Roesch committed
-
- 16 Apr, 2019 1 commit
-
-
雾雨魔理沙 committed
-
- 09 Apr, 2019 1 commit
-
-
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
-
- 08 Apr, 2019 2 commits
-
-
Jared Roesch committed
-
* [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
-
- 20 Mar, 2019 1 commit
-
-
Josh Pollock committed
-
- 27 Feb, 2019 1 commit
-
-
雾雨魔理沙 committed
-
- 15 Feb, 2019 1 commit
-
-
* move fix test fix lint fix test add more code fix lint better type infer ability * fix build * address comment
雾雨魔理沙 committed
-
- 22 Dec, 2018 1 commit
-
-
Jared Roesch committed
-
- 30 Nov, 2018 1 commit
-
-
* [RELAY] Finish alter op pass * [RELAY] AlterOpLayout Pass * fix broadcast operators * fix broadcast operators * fix broadcast operators * Support concatenate * address comments * address comments * add comments * rebase
Lianmin Zheng committed
-
- 27 Nov, 2018 1 commit
-
-
Tianqi Chen committed
-
- 19 Nov, 2018 1 commit
-
-
Tianqi Chen committed
-
- 16 Nov, 2018 1 commit
-
-
Tianqi Chen committed
-
- 13 Nov, 2018 1 commit
-
-
Tianqi Chen committed
-
- 02 Nov, 2018 1 commit
-
-
Jared Roesch committed
-
- 30 Oct, 2018 1 commit
-
-
Jared Roesch committed
-
- 28 Oct, 2018 2 commits
-
-
* [RELAY][PASS] FoldScaleAxis Forward * Introduce helper function type_as * Update per review comment * Fix according to comments
Tianqi Chen committed -
雾雨魔理沙 committed
-
- 25 Oct, 2018 1 commit
-
-
雾雨魔理沙 committed
-
- 20 Oct, 2018 1 commit
-
-
Tianqi Chen committed
-
- 18 Oct, 2018 1 commit
-
-
Tianqi Chen committed
-
- 15 Oct, 2018 1 commit
-
-
Tianqi Chen committed
-
- 10 Oct, 2018 1 commit
-
-
雾雨魔理沙 committed
-