39 const int patch_z = 2;
40 const int patch_y = 3;
41 const int patch_x = 5;
49 entire_volume_patch = tensor.extract_volume_patches(patch_z, patch_y, patch_x);
58 entire_volume_patch_row_major = tensor_row_major.extract_volume_patches(patch_z, patch_y, patch_x);
66 const int dz = patch_z - 1;
67 const int dy = patch_y - 1;
68 const int dx = patch_x - 1;
70 const int forward_pad_z = dz / 2;
71 const int forward_pad_y = dy / 2;
72 const int forward_pad_x = dx / 2;
74 for (
int pz = 0; pz < patch_z; pz++) {
75 for (
int py = 0;
py < patch_y;
py++) {
76 for (
int px = 0;
px < patch_x;
px++) {
77 const int patchId = pz + patch_z * (
py +
px * patch_y);
78 for (
int z = 0; z < patch_z; z++) {
79 for (
int y = 0;
y < patch_y;
y++) {
80 for (
int x = 0;
x < patch_x;
x++) {
81 for (
int b = 0;
b < batch;
b++) {
82 for (
int d = 0; d < depth; d++) {
83 float expected = 0.0f;
84 float expected_row_major = 0.0f;
85 const int eff_z = z - forward_pad_z + pz;
86 const int eff_y =
y - forward_pad_y +
py;
87 const int eff_x =
x - forward_pad_x +
px;
88 if (eff_z >= 0 && eff_y >= 0 && eff_x >= 0 && eff_z < patch_z && eff_y < patch_y && eff_x < patch_x) {
89 expected = tensor(d, eff_z, eff_y, eff_x,
b);
90 expected_row_major = tensor_row_major(
b, eff_x, eff_y, eff_z, d);
93 VERIFY_IS_EQUAL(entire_volume_patch_row_major(
b, patchId,
x,
y, z, d), expected_row_major);
Scalar * b
Definition: benchVecAdd.cpp:17
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const TensorLayoutSwapOp< const Derived > swap_layout() const
Definition: TensorBase.h:1084
The tensor class.
Definition: Tensor.h:68
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index dimension(std::size_t n) const
Definition: Tensor.h:99
RealScalar RealScalar * px
Definition: level1_cplx_impl.h:27
Scalar * y
Definition: level1_cplx_impl.h:128
int RealScalar int RealScalar * py
Definition: level1_cplx_impl.h:124
#define VERIFY_IS_EQUAL(a, b)
Definition: main.h:367
list x
Definition: plotDoE.py:28