-
[Relay] Added Merge Composite pass (#4771) · 0dbe70c1
* [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