Commit Graph

33 Commits

Author SHA1 Message Date
Haichen Shen 720e7b1ebd [Refactor] Rename asnumpy -> numpy in NDArray (#8083) 2021-05-21 08:32:27 -04:00
Tianqi Chen 7340c02d0e [TIR][REFACTOR] ForNode introduce thread binding and remove legacy field (#7306)
[TIR][REFACTOR] ForNode update

- Remove deprecated device_api.
- Add ThreadBinding for_type.
- Add additional annotations.

More style consistency refactor to make the ForNode
to be consistent with rest of the codebase.

- ForType => ForKind
- Add constant prefix k to enum consts per Google C style
- Introduce ForKind to the python side.
2021-01-18 23:00:11 -08:00
Tianqi Chen 926a315372 [DOCS] Update to reflect the repo name change (#6967) 2020-11-24 12:28:36 -05:00
Tianqi Chen 0cdd285abe [CI] Move to use main as the default (#6665) 2020-10-12 08:28:51 -04:00
Jared Roesch 98c2096f49 [Diagnostics][Relay][InferType] Refactor InferType to work on whole module, and use new diagnostics. (#6274)
* Refactor the type checker to use diagnostics

Although this patch is very large and seemingly disjoint the
fixes are required to get it working for the entire stack.
I started with first changing InferType to use the diagnostics,
these weren't yet in the pass manager so this required changes
to module and module pass. InferType wasn't actually written
correctly as a pass requring refactoring there, then in order
to add spans to AST it required turning on AnnotateSpans which
in term required changes to the parser, and module to make
it possible to use the errors. These changes to parse and module
required changes to diagnostics and InferType. Althought seemingly
disconnected there are hidden cycles between the components which
require simultaneous change in order to remove the old error
reporting.

A huge change due to this patch is that the module no longer
implicitly type checks functions which are added.

* Apply suggestions from code review

Co-authored-by: Robert Kimball <bobkimball@gmail.com>
Co-authored-by: Junru Shao <junrushao1994@gmail.com>

* Apply suggestions from code review

Co-authored-by: Tristan Konolige <tristan.konolige@gmail.com>

* Clean up parser

* CR feedback

* Apply Bobs suggestions

* Fix up Python interface for diagnostics

* Fix test_ir_parser and formatting

* Fix cpplint

* Fix lint

* Fix format

* More lint

* Fix format

* Kill dead doc comment

* Fix documentation comment

* Rebase fixups

* Add docs for type.h

* Fix parser.cc

* Fix unittests

* Fix black

* Skip previously typechecked functions

* fix ACL

* Fix numerous issues

* Add repr method

* Fix issue with Pytest, I am ready to cry

* Fix the rest of tests

* Kill dead code

* Fix dignostic tests

* Fix more tests

* fix more tests (#11)

* Fix diagnostic.py deinit bug

* Fix deinit issue

* Format

* Tweak disabling of override

* Format

* Fix BYOC

* Fix TensorArray stuff

* Fix PyTorch

* Format

* Format

Co-authored-by: Robert Kimball <bobkimball@gmail.com>
Co-authored-by: Junru Shao <junrushao1994@gmail.com>
Co-authored-by: Tristan Konolige <tristan.konolige@gmail.com>
Co-authored-by: Cody Yu <comaniac0422@gmail.com>
Co-authored-by: Zhi <5145158+zhiics@users.noreply.github.com>
2020-10-09 11:44:09 -07:00
Gus Smith 5aafff913b Bring Your Own Datatypes (#5812)
* Add ChangeDatatype pass and unittest

* [WIP] Jared's work on Fri

This was work that Jared did on my computer, trying to get Inception v3 running.

* Fix simplify inference to work over different data types.

* Formatting

* Copy setup code from other test file

* Logging in Relay

* Remove duplicate TVM_DLL

* Add Sub, Mul, Div, Max to bfloat lib

* Fix previous broken rebased commit

* Remove line

* Add LowerCustomDatatypes to build passes

* Upcast ints to custom datatypes too, as well as to floats

* Add and use convert_ndarray

* Lower Call

* Relay: create constant scalars of custom dtypes

We use the same method we use in TVM: store the value in a double.

* Custom datatype formatting in Relay

* Update unittests

* Add simpler example that's not working yet

* Add Python unittests to Makefile

* Fix bug

* Fix function name in GetPackedFunc call

* convert_ndarray makes its own executor

* Add simple test case

* Move setup() calls

* Use convert_ndarray

* Change import to make it more specific

* Fix another Registry::Get call

* Allow users to register minimum functions for custom datatypes

This commit allows users to register global functions named
`tvm.datatype.min.<type name>` which take the number of bits in the custom type
and return the corresponding minimum value (as a double).

A similar commit will need to be created for max, whenever that ends up being
needed!

* Remove check for float

* Add test

* Fix inception test

* Add MobileNet

* Lower custom datatypes before intrinsics

* Add exp and sqrt bfloat functions

* [buggy commit] Lower intrinsics like sqrt, exp

This commit has bugs in it, I'm fairly certain.

* Formatting

* Fix bug

* Add lowering for new ops in test

* Add int to bfloat

* Remove print

* Add all tests

* Correct image size

* Add TODO

* Add "notbfloat" type

This type is for testing purposes. It just stores a float in a uint32. It was
used to confirm the fact that my bfloat "implementation" is very numerically
unstable and was causing issues when running the model.

* Convert arguments

Not sure how necessary this actually is.

* Rewrite custom datatype constants in Relay

* Add test_ops

* Print constants in Relay

* Use topi.testing

* Test conv2d

* Add test_model

* Comment out model tests

* Register notbfloat

This could be unregistered at some point later

* Add commented code

Remove later

* Add posit tests

* test_ops_same_function

* [temporary] move incomplete commit to macbook

* Add more to tests

* Formatting

* Uncomment add

* Remove bad tests

* Change comments

* Change function name and docstring

* Change main function

* Restructure tests

* Fix visibility of posit functions

* YAPF

* Switching keywords around to resolve build errors on some systems

* Improve test by running smaller mobilenet

* Add test_cast

* Change datatype name; add simple test

* Rename to posit32

* Merge 3 posit types into one file

* Add a nop type

* Remove bfloat

* Refactor test comments

* Refactor conv2d test

* Add optional tolerance arguments

* Add posit8 and posit16

* Add comment about posit8

* Whoops -- actually add noptype to CMakeLists

* Add rtol, atol to run_workload

* Add noptype to tests

* Run noptype over other models, too

* Pass correct arguments to calls

* Fix line length errors

* Raise tolerances (again) to avoid flaky test

* fix style

* add test for tanh, log, sigmoid

* Remove references to bfloat, notbfloat

* Change comments

* Remove old test file

* fix min func

* refactoring unit test file

* use posits es2

* cleanup

* comment

* coment if_then_else

* support different bit widths

* use random seed to create stable tests

* update documentation

* removed nop-type and code consistency

* add batchnorm test

* rebase and update

* fix tests and format

* pylint

* change order of include

* include order

* fix style

* remove posit c linkage

* update universal

* fix style

* fix test

* fix overflow error with minfunc and posits

* style

* use change_dtype to convert params

* update universal

* fix fatal error

* fix constant repr

* minor update to posites2

* update universal

* fix rst

* fix invalid import and sqrt

* update universal

* comments

* comments and expand testing

* increase atol/rtol for custom[posites2]32

* Re-add newline

* Remove comment

* Remove opt level and comment

* Change docstring

* Add TODO

* Add file header and newline

* Update docstring

* Update file docstring

* Update docstrings

* Delete todos

* create_min_lower_func

* add better debugging message

* docs

* add BYODT tutorial

* add todo

* Reformat some of tutorial to RST, plus code fixes

* tutorial notebook runs now

* fix hyperlink

* rebase

* add to tutorial

* fix mobilenet model

* add skip tag

* black lint

* add compiler flag and add dummy float

* myfloat and posites2 test

* remove universal

* lint

* lint

* add setup

* build with USE_POSIT for CI/CD

* fix posit cmake

* add cd /

* undo docker changes

* change tutorial to use myfloat

* move files

* lint

* fix

* remove filter

* fix lint

* fix suggestions

Co-authored-by: Jared Roesch <roeschinc@gmail.com>
Co-authored-by: Andrew Liu <andrewlliu@gmail.com>
2020-09-26 15:49:20 -07:00
Jared Roesch f13fed55cf [Format] Convert all Python code w/o CI (#6448)
* Add black setup

* Tweak pyproject.toml

* Fix syntax issues

* Fix

* Tweak

* Black all Python code
2020-09-11 22:17:24 +09:00
Junru Shao 6b6661ed92 [Target] Tags, Composite Target, Unified Interface (#6369)
* Add `set_attr_preprocessor` to TargetKind registry, which is used to pre-process attribute maps.
* Use `set_attr_preprocessor` for NVPTX and ROCm backend to check and add mcpu and mtriple.
* Add TargetTag registration and retrieval on C++ side and python side. Allow creation of Target using the tag name.
* Unify target creation on C++ side, replace Target::Create and Target::FromConfig with the constructor.
* Unify target creation on python side, deprecate tvm.target.create and encourage direct use of the constructor of tvm.target.Target instead.
* Add initial support for composite target.
2020-09-10 08:39:04 -07:00
雾雨魔理沙 aae096a04b [Relay] Make check stricter: disallow inserting function with free vars into module. (#6313)
* save

lint

lint

fix test

fix test

* fix
2020-08-21 22:11:50 -07:00
Zhi 57213879e6 [DOCS] Update pass infra tutorial (#6193)
* [DOCS] Update pass infra tutorial

* update tutorial
2020-08-05 20:36:01 -07:00
Zheng Jiang cc8634b3c8 fix typos in comments and relay tutorial (#5999)
* [TypoFix]fix typos in comments and relay tutorial

* retrigger
2020-07-08 21:54:49 -07:00
Tianqi Chen 4404748e15 [TIR][REFACTOR] Add tir prefix to type keys (#5802) 2020-06-14 09:45:46 -07:00
Zhi c55ed37169 [REFACTOR][RELAY] Replace build_config with PassContext (#5698) 2020-05-29 21:59:35 -07:00
Tianqi Chen b2640260cd [REFACTOR][TIR][API-Change] Migrate BuildConfig to PassContext. (#5668)
* [REFACTOR][TIR] Migrate BuildConfig to PassContext.

This PR migrates the TIR configurations from BuildConfig to the
PassContext used by the unified IR.
Moving forward, PassContext will be the unified way to configure passes in the TVM stack.

Changes

- Refactored TVM_PASS_REGISTER_CONFIG_OPTION to take in the reference type.
- Removed BuildConfig.
- Migrated the passes to use PassContext.

* Update include/tvm/ir/attrs.h

Co-authored-by: Zhi <5145158+zhiics@users.noreply.github.com>

Co-authored-by: Zhi <5145158+zhiics@users.noreply.github.com>
2020-05-25 20:50:00 -07:00
Tianqi Chen 6cb5b882b1 [TIR] Enhance Substitute, python bindings for Substitute/PostOrderVisit/IRTransform. (#5400)
Substitute now takes a std::function to customize more replacing behaviors.

Co-authored-by: Siyuan Feng <hzfengsy@sjtu.edu.cn>

Co-authored-by: Siyuan Feng <hzfengsy@sjtu.edu.cn>
2020-04-22 13:25:36 -07:00
Tianqi Chen d3277874a2 [PTYTHON] Migrate VTA TIR passes to the new pass manager. (#5397) 2020-04-21 14:23:18 -07:00
Tianqi Chen c3511c5e2c [TIR][REFACTOR] Remove te::Tensor dependencies from TIR passes. (#5372)
* [TIR][REFACTOR] Remove te::Tensor dependencies from TIR passes.

te::Tensor is an useful object for tensor expression, but brings
un-necessary reverse dependency in TIR nodes such as Provide and Realize.

This PR is a first step to remove this dependency. We will use Buffer in all the places
where the te::Tensor was used. The rough correspondence are:

- Provide -> BufferStore
- Realize -> BufferRealize
- HalideCall -> BufferLoad.

After this change, we can not use IRModule of PrimFuncs cleanly to represent TIR
at any point of the optimizations. Buffer will serve as the abstraction for the TIR data
models to represent the intermediate storages and their constraints.

We still keep Realize/HalideCall and Provide as TIR nodes for now to make the change minimum.
Right after ScheduleOps, we call SchedulePostProcToPrimFunc to canonicalize the temporary IR
generated by TE(which contains these nodes) to the TIR.

The TIR optimizations are now mostly migrated to to the pass manager.
Followup PRs are needed to migrate the remaining few passes.

* Fix dev tutorial
2020-04-19 15:26:51 -07:00
Tianqi Chen 275e317c56 [RELAY] Remove re-exports of tvm.transform (#5337) 2020-04-14 17:03:15 -07:00
Adrian Muresan 7902f7627f Fixed typo and type mismatch (#5259)
Co-authored-by: Adrian Muresan <muresan.adrian.bn@gmail.com>
2020-04-07 08:21:23 -07:00
Tianqi Chen e63e08febd [REFACTOR][TIR] Migrate all low-level passes to the Pass Manager. (#5233)
* [REFACTOR][TIR] Migrate all low-level passes to the Pass Manager.

This PR migrates the tvm.lower to return IRModule of PrimFuncs
instead of the LoweredFuncs.

* Remove LoweredFunc.
2020-04-04 17:36:49 -07:00
Tianqi Chen 3bab699d47 [DOCS] Various sphinx related fix. (#5168)
* [DOCS] Various sphinx related fix.

- Use :ref: for reference.
- Use :py:class: to refer to API docs.
- Update installation guide to also refer to the download page.
- Only move html contents in doxygen.

* Address review comments

* Update wording
2020-03-29 19:06:58 -07:00
Tianqi Chen 9816efc2df [REFACTOR][PY][API-CHANGE] Remove legacy python files. (#4943)
* [REFACTOR][PY][API-CHANGE] Remove legacy python files.

Remove legacy python files.
Use the te namespace for most of the tensor expression primitives.

- tvm.create_schedule -> tvm.te.create_schedule
- tvm.placeholder -> tvm.te.placeholder
- tvm.compute -> tvm.te.compute

* Remove top-level exposures.
2020-02-26 21:10:47 -08:00
Haichen Shen 623dd20878 [Relay][AutoTVM] Relay op strategy (#4644)
* relay op strategy

fix lint

bitpack strategy

bitserial_dense (#6)

* update strategy

* address comments

fix a few topi test

Dense strategy (#5)

* dense

* add biforst; remove comments

* address comment

Refactor x86 conv2d_NCHWc (#4)

* Refactor x86 conv2d

* Add x86 depthwise_conv2d_NCHWc

* Add back topi x86 conv2d_nchw

* Merge x86 conv2d_nchw and conv2d_NCHWc

* Minor fix for x86 conv2d

fix more strategy

Add x86 conv2d_NCHWc_int8 strategy (#8)

* Add x86 conv2d_NCHWc_int8 strategy

* Remove contrib_conv2d_nchwc_int8

* Fix generic conv2d_NCHWc for int8

* Fix topi arm_cpu conv2d_NCHWc_int8

update x86 conv2d

enable specify relay ops to be tuned for autotvm

add cuda conv2d strategy

add conv2d strategy for rocm

add conv2d strategy for hls

add conv2d strategy for arm cpu

add conv2d strategy for mali

add conv2d strategy for bifrost

add conv2d strategy for intel graphics

clean up and fix lint

remove template keys from autotvm

remove 2 in the func name

address comments

fix

* fix bugs

* lint

* address comments

* add name to op implement

* Modify topi tests (#9)

* Add pooling, reorg, softmax and vision

* Add lrn

* fix topi test

* fix more topi test

* lint

* address comments

* x

* fix more tests & bugs

* Modify more tests (#10)

* Modify tests for bitserial_conv2d, bitserial_dense, bitserial_conv2d_rasp and bnn

* Minor fix

* More minor fix

* fix more test

* try to update vta using strategy

* fix cpptest

* x

* fix rebase err

* Fix two tests (#11)

* change autotvm log format

* lint

* minor fix

* try fix vta test

* fix rebase err

* tweak

* tmp hack for vta pass

* fix tutorial

* fix

* fix more tutorials

* fix vta tutorial

* minor

* address comments

* fix

* address comments

* fix cpptest

* fix docs

* change data structure name and api

* address comments

* lint

* fix rebase err

* updates

* fix winograd test

* fix doc

* rebase

* upgrade tophub version number

* fix bug

* re-enable vta tsim test after tophub is upgraded

* fix vta test to use the correct args so the config can be found in tophub

Co-authored-by: Yao Wang <kevinthesunwy@gmail.com>
2020-02-24 13:12:03 -08:00
tqchen b787ffa34a [REFACTOR][PY] Establish tvm.tir
- Move related files into the corresponding location as in C++
- Keep the top-level TVM API backward compatible to make minimum changes in topi
2020-02-13 20:24:01 -08:00
Tianqi Chen a566161147 [REFACTOR][PY][API-CHANGE] establish tvm.ir, migrate corresponding files (#4862)
* [REFACTOR][PY][API-CHANGE] establish tvm.ir, migrate corresponding relay files.

This PR establishes tvm.ir and migrates the corresponding relay
files into the new folder.

API Change:
- relay.Module -> tvm.IRModule

* Update with ADT

* Migrate transform

* address comments

* Migrate module

* Migrate json_compact

* Migrate attrs

* Move LoweredFunc to stmt temporarily

* temp migrate container

* Finish migrate container
2020-02-11 20:01:36 -08:00
Zhi 72d8a886c9 [doc][fix] fix sphinx parsing for pass infra tutorial (#4337) 2019-11-14 09:08:28 -08:00
Zhi cff62bdbd2 [tutorial] Relay pass infra tutorial (#4083)
* Add pass manager tutorial

* fix some examples

* retrigger ci

* Update tutorials/dev/relay_pass_infra.py

Co-Authored-By: 雾雨魔理沙 <lolisa@marisa.moe>

* Add ToANormalForm link
2019-11-10 21:57:43 -08:00
Tianqi Chen cffb4fba03 [HEADER] Add Header to Comply with ASF Release Policy (#2982)
* [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
2019-04-07 21:14:02 -07:00
Marina Kolpakova ec3a425191 A couple of fixes for GEN (#2593) 2019-02-12 07:49:50 -08:00
Tianqi Chen 6d1f4c0b5c [RELAY][EXPR] Make const numpy consistent (#2349) 2018-12-28 20:11:56 -08:00
Tianqi Chen 88d2a281e8 [RELAY][DOCS] Core Operator docs (#1821) 2018-10-04 18:42:04 -07:00
Jian Weng 7d6ca1b3a7 [Tutorial] fix the link thing for the pass tutorial (#1700) 2018-09-10 21:46:57 -07:00
Jian Weng d173e6374b [Tutorial] tutorial to writing a costumized pass (#1671) 2018-09-04 21:45:17 -08:00