pytorch/test/cpp/jit
Martin Yuan f362cd510d Move prim ops from JIT registration to C10 (#30612)
Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/30612

The first version to move prim ops to c10 registration. After the reviewers are fine with the initial changes, more operators will be moved in the same style.

Test Plan: Imported from OSS

Differential Revision: D19237648

Pulled By: iseeyuan

fbshipit-source-id: c5a519604efffb80564a556536f17d829f71d9f9
2020-01-04 13:47:44 -08:00
..
__init__.py
CMakeLists.txt
gtest.cpp
README.md
test_alias_analysis.cpp Moving checks related to options.aliasAnalysis and schema.hasAliasInfo to read callsite (#30671) 2019-12-06 01:36:22 -08:00
test_argument_spec.cpp Deprecate tensor.type() (#30281) 2019-12-05 10:55:34 -08: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
test_class_import.cpp Factor Module into Object and Module 2019-11-17 22:58:50 -08:00
test_class_parser.cpp
test_class_type.cpp Add unsafeRemoveConstant for ClassType (#30787) 2020-01-04 01:11:59 -08:00
test_code_template.cpp
test_constant_pooling.cpp
test_constant_propagation.cpp Revert D19233558: add float[] str[] constants 2019-12-31 11:57:34 -08:00
test_create_autodiff_subgraphs.cpp
test_custom_class.cpp Separate torchbind from Python (#30242) 2019-12-21 22:52:40 -08:00
test_custom_operators.cpp Delete all trivial uses of make_variable. (#29213) 2019-11-13 07:43:41 -08:00
test_dce.cpp
test_fuser.cpp
test_graph_executor.cpp Delete all trivial uses of make_variable. (#29213) 2019-11-13 07:43:41 -08:00
test_inliner.cpp
test_interface.cpp Factor Module into Object and Module 2019-11-17 22:58:50 -08:00
test_interpreter.cpp
test_ir.cpp
test_irparser.cpp Revert D19233558: add float[] str[] constants 2019-12-31 11:57:34 -08:00
test_ivalue.cpp Proper print for one element tuple (#30853) 2019-12-09 14:15:40 -08:00
test_jit_type.cpp Fix type unification With Specialized Tensor Shapes (#31076) 2019-12-11 20:11:34 -08:00
test_lite_interpreter.cpp Move prim ops from JIT registration to C10 (#30612) 2020-01-04 13:47:44 -08:00
test_misc.cpp Correct definition of nodes that work with Autograd (#30683) 2019-12-10 15:39:38 -08:00
test_mobile_type_parser.cpp JIT Type parser for mobile (#30391) 2019-12-14 20:29:42 -08:00
test_module_api.cpp Expose class constant through attr and setattr in object (#29219) 2020-01-04 11:09:35 -08:00
test_netdef_converter.cpp
test_peephole_optimize.cpp
test_qualified_name.cpp
test_save_load.cpp
test_schema_matching.cpp
test_subgraph_matcher.cpp
test_subgraph_rewriter.cpp
test_subgraph_utils.cpp
test_utils.cpp
test_utils.h Fix typos (#30606) 2019-12-02 20:17:42 -08:00
tests.h Move prim ops from JIT registration to C10 (#30612) 2020-01-04 13:47:44 -08:00
tests_setup.py (de)serialization of values between C++ and Python (#30108) 2019-11-23 00:06:07 -08:00
torch_python_test.cpp

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