* Add Auto TensorCore TensorCore Unit Test
* Rebase to tvm master branch & Add auto tensor core
* Code Refine
* Add tensor core switch by pragma
* Add pragma in tensor core example code
* Get real tile size to replace hard coded 16
* support more than 2 dimensions (e.g. batchmatmul) for buffer bind scope
* support batch matmul
* Move cuda env check to tensor_core.cc
* Coderefine for tensor_core.cc
* Refine comments
* Some refinements of code and comment
* Update TensorCore UT to pass the CPU test
* remove redundant code
* matmul's storage align for different layout
* Add support for differenct position of type cast
* Add formal tutorial for auto tensorcore codegen
* move tensorcore check up to tutorial code
* code and doc refine
* comment out tune_and_evaluate in tutorial
* fix cpplint error
* Batch matmul tuning running but with errors.
* Default x86 schedule as good as before.
* Code Cleanup
* Remove unused argument.
* improved template documentation.
* Silly lint fix
* Removed leftover comment.
* Moved cfg declaration to schedule for batch_matmul
* Moved x86 dense cfg declaration to schedule.
* lint fix
* Removed duplicate cfg declaration in dense.
* Reverted changes to dense.
* Added slice v10
* Added constantofshape operation and small refactor.
* Finished one_hot implementation.
* Reshape working across all bert layers.
* Fixed constantofshape and removed code duplication.
* onnx model fully ingested.
* Working on improving onnx tests.
* Changed onnx testing to use onnxruntime instead of caffe2, also formatted.
* Add arbitrary output nodes to onnx frontend.
* Added v6 tiling for bert squad 8 support.
* Small syntax fixes
* Reduced code duplication in split opset versions.
* Added batch matmul test
* Added unstack split testing.
* Adde onehot test, needs a little cleanup probably.
* Replaced deprecated constant fill with constantofshape and updated tests accordingly.
* Added tests for new opset version of slice and tile.
* lint clean up
* Lint fixes
* Changed onnx dependency
* Went back to caffe2 runtime for CI integration.
* Rebase and small typo/syntax changes.
* Added hard casting of onehot attributes to int.
* :add scale2 for upsample
* update unit test for upsampling
* support latest upsample op for multiple frontend
* fix lint
* fix lint
* fix lint
* fix lint
* update scale description and rebase
* add tensor core support
* avoid memory bank conflict
* fix thread sync & better performance
* better performance
* add schedule test for conv2d
* extend into BatchMatMul
* support config fragment shape and layout using intrinsic
* add TensorCore tutorial
* add int support and fix lint
* address comment
* add 32*16*8 TensorCore test
* fix wmma include logic
* [rpc] use callback func to do send & recv. don't get fd from sock as it is deprecated in java
* fix java build
* fix min/max macro define in windows
* keep the old rpc setup for py
* add doc for CallbackChannel
This patch adds multiply operator for quantized tensors.
The details of the quantized multiplication are outlined
in the code.
This builds on pull request 3927 and includes the changes
Animesh mentions in the comments on that request.
Change-Id: I555715b53d0266a91d5c03dc3dfe8fc31e7ce4e1
* [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
* [relay][vm] Separate VM runtime with executable
* Address comments
* move ctx back to vm
* make only vm related fields and methods protected
* integrate seriliaztion/deserialization to executable
* create stream
* [RUNTIME] Refactor object python FFI to new protocol.
This is a pre-req to bring the Node system under object protocol.
Most of the code reflects the current code in the Node system.
- Use new instead of init so subclass can define their own constructors
- Allow register via name, besides type idnex
- Introduce necessary runtime C API functions
- Refactored Tensor and Datatype to directly use constructor.
* address review comments
* [RUNTIME] Introduce new object protocol.
This PR introduces a new object protocol to unify the node and object.
We also updated the existing runtime::vm code to make use of the new system.
Update to the node will be done in a follow up PR.
Other changes:
- Remove object related code in json serializer as that code logic was not complete
and we have a separate serializer for VM, can revisit later.
* address review comment
* Fix the child slot logic