torch-mlir/frontends/pytorch/test/ivalue_import
Sean Silva 39d50ccf0d Add end-to-end testing framework for TorchScript.
The E2E tests can be run with
```
npcpy frontends/pytorch/e2e_testing/torchscript/main.py
```

This commit adds a couple items supporting that end, including new sugar
for annotations (no more raw use of ClassAnnotator!).

Recommended review order:

1. `frontends/pytorch/e2e_testing/torchscript/main.py` for
   the harness + `basic.py` in that directory for examples of tests.
2. Annotation sugar in `frontends/pytorch/python/torch_mlir/torchscript/annotations.py`
   and unittest in `frontends/pytorch/test/ivalue_import/annotations/sugar.py`
3. Global test registry / sugar in
   `frontends/pytorch/python/torch_mlir/torchscript/e2e_test/registry.py`
4. `frontends/pytorch/python/torch_mlir/torchscript/e2e_test/framework.py`
   for the meat of the testing framework (start at `run_tests`), and
   looking at the backend configs in
   `frontends/pytorch/python/torch_mlir/torchscript/e2e_test/configs`
   for examples of backends. This is likely the bulk of review time.
5. Unit tests of the framework logic in `frontends/pytorch/test/torchscript_e2e_test`

There's TODO's scattered throughout, but this seems functional enough to
start pulling stuff into and kicking the tires. A few missing pieces:

1. Marking test expected pass/fail per backend.
2. Figuring out how best to fit this into dev workflows.
3. IREE TestConfig.

Also, forgive this Python newbie... Any advice on Python code structure
/ library design would be much appreciated.
2021-04-20 12:00:35 -07:00
..
annotations Add end-to-end testing framework for TorchScript. 2021-04-20 12:00:35 -07:00
README.md Rename tests to match the code they test 2021-02-25 13:31:33 -08:00
functions-that-call-methods.py Properly import the entire torch::jit::CompilationUnit 2021-03-01 12:08:01 -08:00
functions.py Properly import the entire torch::jit::CompilationUnit 2021-03-01 12:08:01 -08:00
list.py Rename tests to match the code they test 2021-02-25 13:31:33 -08:00
methods-derefine.py Add prim::device and handle derefining for prim::CallMethod 2021-03-11 14:10:09 -08:00
methods-locations.py Rename tests to match the code they test 2021-02-25 13:31:33 -08:00
methods.py Properly import the entire torch::jit::CompilationUnit 2021-03-01 12:08:01 -08:00
object-identity-error-submodule.py Rename tests to match the code they test 2021-02-25 13:31:33 -08:00
object-identity-error.py Rename tests to match the code they test 2021-02-25 13:31:33 -08:00
object-identity-torch-bug.py Rename tests to match the code they test 2021-02-25 13:31:33 -08:00
object-identity.py Rename tests to match the code they test 2021-02-25 13:31:33 -08:00
prim.py Properly import the entire torch::jit::CompilationUnit 2021-03-01 12:08:01 -08:00
primitives.py Rename tests to match the code they test 2021-02-25 13:31:33 -08:00
strings.py [torch] Add import support for IValue string Type(s) (#179) 2021-03-04 13:08:50 -08:00
submodules-select.py Rename tests to match the code they test 2021-02-25 13:31:33 -08:00
submodules.py Rename tests to match the code they test 2021-02-25 13:31:33 -08:00
tensors.py Rename tests to match the code they test 2021-02-25 13:31:33 -08:00
tuple.py Rename tests to match the code they test 2021-02-25 13:31:33 -08:00

README.md

ivalue_import

Most of the tests in this directory test importing of TorchScript torch::jit::Module's.

Modules are just one of many types of c10::IValue's and recursively contain c10::IValue's. Thus, the work of importing TorchScript modules is mainly about importing the wide variety of possible c10::IValue's, hence the name of this directory and the corresponding code in ivalue_importer.cpp that it exercises.