cxx11_tensor_custom_op.cpp File Reference
#include "main.h"
#include <Eigen/CXX11/Tensor>

Classes

struct  InsertZeros< TensorType >
 
struct  BatchMatMul< TensorType >
 

Functions

static void test_custom_unary_op ()
 
static void test_custom_binary_op ()
 
 EIGEN_DECLARE_TEST (cxx11_tensor_custom_op)
 

Function Documentation

◆ EIGEN_DECLARE_TEST()

EIGEN_DECLARE_TEST ( cxx11_tensor_custom_op  )
99  {
102 }
static void test_custom_unary_op()
Definition: cxx11_tensor_custom_op.cpp:37
static void test_custom_binary_op()
Definition: cxx11_tensor_custom_op.cpp:78
#define CALL_SUBTEST(FUNC)
Definition: main.h:382

References CALL_SUBTEST, test_custom_binary_op(), and test_custom_unary_op().

◆ test_custom_binary_op()

static void test_custom_binary_op ( )
static
78  {
79  Tensor<float, 3> tensor1(2, 3, 5);
80  tensor1.setRandom();
81  Tensor<float, 3> tensor2(3, 7, 5);
82  tensor2.setRandom();
83 
84  Tensor<float, 3> result = tensor1.customOp(tensor2, BatchMatMul());
85  for (int i = 0; i < 5; ++i) {
87  array<DimPair, 1> dims;
88  dims[0] = DimPair(1, 0);
89  Tensor<float, 2> reference = tensor1.chip<2>(i).contract(tensor2.chip<2>(i), dims);
90  TensorRef<Tensor<float, 2> > val = result.chip<2>(i);
91  for (int j = 0; j < 2; ++j) {
92  for (int k = 0; k < 7; ++k) {
93  VERIFY_IS_APPROX(val(j, k), reference(j, k));
94  }
95  }
96  }
97 }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorChippingOp< DimId, const Derived > chip(const Index offset) const
Definition: TensorBase.h:1141
A reference to a tensor expression The expression will be evaluated lazily (as much as possible).
Definition: TensorRef.h:114
The tensor class.
Definition: Tensor.h:68
Tensor< float, 1 >::DimensionPair DimPair
Definition: cxx11_tensor_contraction.cpp:17
#define VERIFY_IS_APPROX(a, b)
Definition: integer_types.cpp:13
char char char int int * k
Definition: level2_impl.h:374
std::array< T, N > array
Definition: EmulateArray.h:231
val
Definition: calibrate.py:119
Definition: cxx11_tensor_custom_op.cpp:57
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References Eigen::TensorBase< Derived, AccessLevel >::chip(), i, j, k, Eigen::TensorBase< Derived, AccessLevel >::setRandom(), calibrate::val, and VERIFY_IS_APPROX.

Referenced by EIGEN_DECLARE_TEST().

◆ test_custom_unary_op()

static void test_custom_unary_op ( )
static
37  {
38  Tensor<float, 2> tensor(3, 5);
39  tensor.setRandom();
40 
41  Tensor<float, 2> result = tensor.customOp(InsertZeros());
42  VERIFY_IS_EQUAL(result.dimension(0), 6);
43  VERIFY_IS_EQUAL(result.dimension(1), 10);
44 
45  for (int i = 0; i < 6; i += 2) {
46  for (int j = 0; j < 10; j += 2) {
47  VERIFY_IS_EQUAL(result(i, j), tensor(i / 2, j / 2));
48  }
49  }
50  for (int i = 1; i < 6; i += 2) {
51  for (int j = 1; j < 10; j += 2) {
52  VERIFY_IS_EQUAL(result(i, j), 0);
53  }
54  }
55 }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index dimension(std::size_t n) const
Definition: Tensor.h:99
#define VERIFY_IS_EQUAL(a, b)
Definition: main.h:367
Definition: cxx11_tensor_custom_op.cpp:16

References Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::dimension(), i, j, Eigen::TensorBase< Derived, AccessLevel >::setRandom(), and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().