pytorch/test/cpp/jit
Chen Lai a5895f85be [PyTorch Edge][type] Add type check in compatibility api (#63129)
Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/63129

1. Add an api to get `supported_types` from runtime, expose in c++ only.
2. Add an api to get `contained_types` from model, expose in both c++ and PyThon.
3. Add a field `contained_types_` in `type_parser.cpp` to track the contained types when parsing python string.
4. Expand `is_compatible` api to check type. When checking type, it will check the contained type list from the model with the support type list from runtime.
5. Expand the unittest for compatibility to cover type
6. Add unit test in python to check type list
ghstack-source-id: 139826944

Test Plan:
```
buck test mode/dev //caffe2/test/cpp/jit:jit -- --exact 'caffe2/test/cpp/jit:jit - LiteInterpreterTest.GetContainTypes'

buck test mode/dev //caffe2/test/cpp/jit:jit -- --exact 'caffe2/test/cpp/jit:jit - LiteInterpreterTest.isCompatibleSuccess'
buck test mode/dev //caffe2/test/cpp/jit:jit -- --exact 'caffe2/test/cpp/jit:jit - LiteInterpreterTest.isCompatibleFail'

buck test //caffe2/test:mobile
```

Reviewed By: iseeyuan

Differential Revision: D30231419

fbshipit-source-id: 8427f423ec28cc5de56411f15fd960d8595d6947
2021-10-06 02:23:44 -07:00
..
__init__.py
CMakeLists.txt Compile without -Wno-unused-variable (take 2) (#66041) 2021-10-04 20:39:39 -07:00
README.md
script_module_v4.ptl
script_module_v5.ptl
script_module_v6.ptl
test_alias_analysis.cpp [JIT] Selectively enable precise alias analysis for TupleConstruct (#66025) 2021-10-01 20:42:22 -07:00
test_argument_spec.cpp
test_autodiff.cpp
test_backend.cpp [Pytorch Edge] Enable kineto profiler on mobile via EdgeKinetoProfiler (#62419) 2021-08-13 21:40:19 -07:00
test_backend_compiler_lib.cpp Compile without -Wno-unused-variable (take 2) (#66041) 2021-10-04 20:39:39 -07:00
test_backend_compiler_preprocess.cpp
test_backend_lib.cpp
test_class_import.cpp
test_class_parser.cpp
test_class_type.cpp
test_cleanup_passes.cpp
test_code_template.cpp
test_concat_opt.cpp [JIT] Move UseVariadicCat internals (#63577) 2021-08-23 17:30:36 -07:00
test_constant_pooling.cpp
test_create_autodiff_subgraphs.cpp
test_cs_debug_info_serialization.cpp
test_custom_class.cpp
test_custom_class_registrations.cpp
test_custom_class_registrations.h
test_custom_operators.cpp [jit] Make operation call accept Stack& instead Stack* (#63414) 2021-08-30 11:49:20 -07:00
test_dce.cpp
test_fuser.cpp
test_gpu.cpp Revert "Revert D30752939: [pytorch][PR] nvfuser update" (#65137) 2021-09-22 04:54:51 -07:00
test_gpu_shift.cpp Revert "Revert D30752939: [pytorch][PR] nvfuser update" (#65137) 2021-09-22 04:54:51 -07:00
test_gpu_validator.h Revert "Revert D30752939: [pytorch][PR] nvfuser update" (#65137) 2021-09-22 04:54:51 -07:00
test_graph_executor.cpp
test_graph_iterator.cpp
test_inliner.cpp
test_interface.cpp
test_interpreter.cpp [PyTorch Edge] Backport function for defaults args with out args, flag on (#63651) 2021-09-20 22:50:30 -07:00
test_interpreter_async.pt
test_ir.cpp
test_irparser.cpp
test_jit_logging_levels.cpp Added jit log stream changing function and some refactor (#65768) 2021-09-30 23:25:11 -07:00
test_jit_type.cpp
test_lite_interpreter.cpp [PyTorch Edge][type] Add type check in compatibility api (#63129) 2021-10-06 02:23:44 -07:00
test_lite_trainer.cpp
test_memory_dag.cpp
test_misc.cpp [PyTorch] Store Argument::alias_info_ on the heap (#64824) 2021-09-24 17:00:51 -07:00
test_mobile_type_parser.cpp
test_module_api.cpp
test_peephole_optimize.cpp
test_qualified_name.cpp
test_save_load.cpp
test_schema_matching.cpp [jit] Make operation call accept Stack& instead Stack* (#63414) 2021-08-30 11:49:20 -07:00
test_script_profile.cpp
test_stack_opt.cpp [JIT] Add variadic stack op (#63578) 2021-08-24 08:20:54 -07:00
test_subgraph_matcher.cpp
test_subgraph_rewriter.cpp keep output type after calling SubgraphRewriter (#65453) 2021-09-24 11:07:40 -07:00
test_subgraph_utils.cpp
test_union.cpp Support Union in TorchScript (#64234) 2021-09-03 06:12:24 -07:00
test_utils.cpp [jit] Make operation call accept Stack& instead Stack* (#63414) 2021-08-30 11:49:20 -07:00
test_utils.h Enhancement for smart serialization for out schemas (#63096) 2021-08-28 11:46:27 -07:00
tests_setup.py
torch_python_test.cpp

JIT C++ Tests

Adding a new test

First, create a new test file. Test files should have be placed in this directory, with a name that starts with test_, like test_foo.cpp.

In general a single test suite

Add your test file to the JIT_TEST_SRCS list in test/cpp/jit/CMakeLists.txt.

A test file may look like:

#include <gtest/gtest.h>

using namespace ::torch::jit

TEST(FooTest, BarBaz) {
   // ...
}

// Append '_CUDA' to the test case name will automatically filter it out if CUDA
// is not compiled.
TEST(FooTest, NeedsAGpu_CUDA) {
   // ...
}

// Similarly, if only one GPU is detected, tests with `_MultiCUDA` at the end
// will not be run.
TEST(FooTest, NeedsMultipleGpus_MultiCUDA) {
   // ...
}

Building and running the tests

The following commands assume you are in PyTorch root.

# ... Build PyTorch from source, e.g.
python setup.py develop
# (re)build just the binary
ninja -C build bin/test_jit
# run tests
build/bin/test_jit --gtest_filter='glob_style_filter*'