pytorch/test/cpp/jit
Jerry Zhang 1707774417 AddConstant and findConstant for ClassType (#29217)
Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/29217

We want to preserve constant information in ClassType so that
users can access the constants in the module by name.
This is also used later for freezing some attribute(converting
attributes to constant)

Test Plan:
tbd

Imported from OSS

Differential Revision: D18799955

fbshipit-source-id: fbfbcd5d3f7f560368b96e2a87e270c822a3d03a
2019-12-04 14:17:13 -08:00
..
__init__.py Add train() / eval() / is_training() to C++ ScriptModule API (#16044) 2019-02-01 13:07:38 -08:00
CMakeLists.txt Enable jit fusion on ROCm (#22872) 2019-09-05 18:22:08 -07:00
gtest.cpp big cpp test reorg (#24801) 2019-08-18 16:49:56 -07:00
README.md big cpp test reorg (#24801) 2019-08-18 16:49:56 -07:00
test_alias_analysis.cpp Trace module calls 2019-11-06 15:05:49 -08:00
test_argument_spec.cpp Merge ProfiledTensorType and TensorType (#24284) 2019-08-20 13:01:28 -07:00
test_autodiff.cpp Move most methods off Variable into torch::autograd::impl functions. (#29665) 2019-11-18 08:12:12 -08:00
test_base.h Use AT_INTERNAL_ASSERT in test_base (#20555) 2019-05-21 21:25:07 -07:00
test_class_import.cpp Factor Module into Object and Module 2019-11-17 22:58:50 -08:00
test_class_parser.cpp big cpp test reorg (#24801) 2019-08-18 16:49:56 -07:00
test_class_type.cpp AddConstant and findConstant for ClassType (#29217) 2019-12-04 14:17:13 -08:00
test_code_template.cpp big cpp test reorg (#24801) 2019-08-18 16:49:56 -07:00
test_constant_pooling.cpp big cpp test reorg (#24801) 2019-08-18 16:49:56 -07:00
test_constant_propagation.cpp Whenever possible, use function pointers rather than std::function to represent Operation's. (#26560) 2019-09-21 20:51:24 -07:00
test_create_autodiff_subgraphs.cpp big cpp test reorg (#24801) 2019-08-18 16:49:56 -07:00
test_custom_operators.cpp Delete all trivial uses of make_variable. (#29213) 2019-11-13 07:43:41 -08:00
test_dce.cpp big cpp test reorg (#24801) 2019-08-18 16:49:56 -07:00
test_fuser.cpp Remove unused DynamicDAG class. 2019-08-20 16:17:59 -07:00
test_graph_executor.cpp Delete all trivial uses of make_variable. (#29213) 2019-11-13 07:43:41 -08:00
test_inliner.cpp Use optimized graph in Inline (essentially, making Inline recursive now). (#26489) 2019-09-24 00:22:29 -07:00
test_interface.cpp Factor Module into Object and Module 2019-11-17 22:58:50 -08:00
test_interpreter.cpp big cpp test reorg (#24801) 2019-08-18 16:49:56 -07:00
test_ir.cpp API for finding a common ancestor block for a pair of nodes 2019-11-06 15:05:45 -08:00
test_irparser.cpp big cpp test reorg (#24801) 2019-08-18 16:49:56 -07:00
test_ivalue.cpp Add unsafeRemoveAttr and unsafeRemoveSlot to ivalue::Object (#29048) 2019-11-07 10:35:57 -08:00
test_lite_interpreter.cpp Mobile module forward() pass input by value. (#30060) 2019-11-18 22:33:38 -08:00
test_misc.cpp inline to prevent duplicate obj when linking (#30363) 2019-12-03 15:59:25 -08:00
test_module_api.cpp Add clone_instance for Module (#30168) 2019-11-21 13:00:34 -08:00
test_netdef_converter.cpp big cpp test reorg (#24801) 2019-08-18 16:49:56 -07:00
test_peephole_optimize.cpp Removes SymbolicVariable (#25077) 2019-08-31 11:19:50 -07:00
test_qualified_name.cpp big cpp test reorg (#24801) 2019-08-18 16:49:56 -07:00
test_save_load.cpp clean up exported source format (#28129) 2019-10-16 22:47:24 -07:00
test_schema_matching.cpp Whenever possible, use function pointers rather than std::function to represent Operation's. (#26560) 2019-09-21 20:51:24 -07:00
test_subgraph_matcher.cpp Removes SymbolicVariable from tests (#24007) 2019-08-19 20:49:37 -07:00
test_subgraph_rewriter.cpp Add filter function to subgraph rewriter runGraph (#26223) 2019-09-18 16:34:50 -07:00
test_subgraph_utils.cpp big cpp test reorg (#24801) 2019-08-18 16:49:56 -07:00
test_utils.cpp Switching tests to ProfilingExecutor (rebased) 2019-10-29 11:41:42 -07:00
test_utils.h Fix typos (#30606) 2019-12-02 20:17:42 -08:00
tests_setup.py (de)serialization of values between C++ and Python (#30108) 2019-11-23 00:06:07 -08:00
tests.h Add clone_instance for Module (#30168) 2019-11-21 13:00:34 -08:00
torch_python_test.cpp Fix misuages for TORCH_CHECK/TORCH_INTERNAL_ASSERT with string (#26897) 2019-09-27 13:45:19 -07:00

JIT C++ Tests

How to add 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.

Here is an example test file you can copy-paste.

#include <test/cpp/jit/test_base.h>

// Tests go in torch::jit
namespace torch {
namespace jit {

// 1. Test cases are void() functions.
// 2. They start with the prefix `test`
void testCaseOne() {
    // ...
}

void testCaseTwo() {
    // ...
}
}
}

Then, register your test in tests.h:

// Add to TH_FORALL_TESTS_CUDA instead for CUDA-requiring tests
#define TH_FORALL_TESTS(_)             \
  _(ADFormulas)                        \
  _(Attributes)                        \
  ...
  _(CaseOne)  // note that the `test` prefix is omitted.
  _(CaseTwo)

We glob all the test files together in CMakeLists.txt so that you don't have to edit it every time you add a test. Unfortunately, this means that in order to get the build to pick up your new test file, you need to re-run cmake:

python setup.py build --cmake

Why do we have two different test runners?

We have two different ways of running our cpp tests:

  1. With gtest, from a standalone binary.
  2. With Python, from TestJit.test_cpp and TestJit.test_cpp_cuda (in test/test_jit.py)

We want both because we need to test things from a pure-C++ environment and with all our various Python patch-points enabled.

How do I run the tests?

The following commands assume you are in PyTorch root.

  1. With gtest:
    # (re)build the test binary
    ninja build/bin/test_jit
    # run
    build/bin/test_jit --gtest_filter='glob_style_filter*'
    
  2. With Python:
    python test/test_jit.py TestJit.test_cpp TestJit.test_cpp_cuda