pytorch/test/cpp/tensorexpr
Mikhail Zolotukhin 1ceb90405b [TensorExpr] Add plumbing for conv2d fusion. (#54439)
Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/54439

For now the only way to represent conv2d in TE is via an external call,
and since aten library doesn't have an out variant for conv2d, the
external call has to perform an extra copy. Because of that fusing
conv2d now regressed performance and hence is disabled. However, in near
future we should have two alternative ways to enable it:
1) represent conv2d natively in TE (without an external call)
2) add an out variant for conv2d

Test Plan: Imported from OSS

Reviewed By: bertmaher

Differential Revision: D27237045

Pulled By: ZolotukhinM

fbshipit-source-id: f5545ff711b75f9f37bc056316d1999a70043b4c
2021-03-24 18:49:07 -07:00
..
CMakeLists.txt [TensorExpr] Add IRVerifier. (#52901) 2021-03-01 20:38:00 -08:00
gtest_assert_float_eq.h
padded_buffer.cpp
padded_buffer.h
README.md
test_approx.cpp [nnc] Allow 1 ulp tolerance in log approximation (#52165) 2021-02-16 16:49:36 -08:00
test_aten.cpp
test_base.h
test_boundsinference.cpp [NNC] Implementing LoopFusion (#54461) 2021-03-23 21:20:00 -07:00
test_conv.cpp
test_cpp_codegen.cpp changed TE 'Allocate' API to take one argument 'Buf' instead of three arguments 'Var', 'dtype', 'dims'. (#50167) 2021-02-22 15:08:51 -08:00
test_cuda.cpp [TensorExpr] Add an unmasked Load constructor. (#52790) 2021-02-24 22:45:29 -08:00
test_expr.cpp [TensorExpr] Add IRVerifier. (#52901) 2021-03-01 20:38:00 -08:00
test_external_calls.cpp [TensorExpr] Add plumbing for conv2d fusion. (#54439) 2021-03-24 18:49:07 -07:00
test_ir_printer.cpp
test_ir_verifier.cpp [TensorExpr] IRVerifier: add index verifier for Store. (#53137) 2021-03-02 19:56:28 -08:00
test_kernel.cpp [NNC] Implementation for aten::cat without conditionals. (#53128) 2021-03-07 22:57:02 -08:00
test_llvm.cpp Resubmit: Adding parallel support for the LLVM backend. (#54122) 2021-03-18 07:19:37 -07:00
test_loopnest.cpp [NNC] Implementing LoopFusion (#54461) 2021-03-23 21:20:00 -07:00
test_memdependency.cpp
test_reductions.cpp [nnc] Add an initialization expression to Reduce() (#53751) 2021-03-10 17:13:14 -08:00
test_registerizer.cpp [TensorExpr] Add an unmasked Load constructor. (#52790) 2021-02-24 22:45:29 -08:00
test_simplify.cpp [nnc] Tests for proposed feature: loop bounds conditional simplification (#54121) 2021-03-17 11:01:10 -07:00
test_te_fuser_pass.cpp
test_train.cpp
test_train.h
test_train_impl.cpp
test_type.cpp
test_utils.h
tutorial.cpp [TensorExpr] Add an unmasked Load constructor. (#52790) 2021-02-24 22:45:29 -08:00

TensorExpr 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/tensorexpr/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

How do I run the tests?

The following commands assume you are in PyTorch root.

# (re)build the test binary
ninja build/bin/test_tensorexpr
# run
build/bin/test_tensorexpr --gtest_filter='glob_style_filter*'