Skip to content

Commit e1f2d45

Browse files
committed
Add 8D tensor descriptor tests
Test high-dimensional tensors to verify no integer overflow in element space size calculations. Includes: - 8D packed test with prime dimensions (180180 elements) - 8D permuted layout test with non-monotonous strides (memory order differs from logical order)
1 parent 1a5d956 commit e1f2d45

1 file changed

Lines changed: 26 additions & 0 deletions

File tree

test/util/unit_tensor_descriptor_helper.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,3 +160,29 @@ TEST(MakeNaiveTensorDescriptorAligned, Align8)
160160
constexpr auto desc = make_naive_tensor_descriptor_aligned(lengths, Number<8>{});
161161
EXPECT_EQ(desc.GetElementSpaceSize(), 119);
162162
}
163+
164+
// Test high-dimensional tensors (8D) to verify no integer overflow
165+
TEST(MakeNaiveTensorDescriptorPacked, Simple8D)
166+
{
167+
// 8D packed tensor with small prime dimensions: 2x3x5x7x11x13x2x3
168+
// element_space_size = 2*3*5*7*11*13*2*3 = 180180
169+
constexpr auto lengths = make_tuple(Number<2>{}, Number<3>{}, Number<5>{}, Number<7>{},
170+
Number<11>{}, Number<13>{}, Number<2>{}, Number<3>{});
171+
constexpr auto desc = make_naive_tensor_descriptor_packed(lengths);
172+
EXPECT_EQ(desc.GetElementSpaceSize(), 180180);
173+
}
174+
175+
TEST(MakeNaiveTensorDescriptor, ElementSpaceSize8D)
176+
{
177+
// 8D tensor with permuted layout (non-monotonous strides): 2x3x5x7x11x13x17x19
178+
// Memory order: [dim7, dim3, dim1, dim5, dim2, dim0, dim6, dim4]
179+
// This gives strides: [25935, 133, 5187, 19, 881790, 399, 51870, 1]
180+
// Note: strides go up/down/up/down - not monotonously increasing or decreasing
181+
// element_space_size = 2*3*5*7*11*13*17*19 = 9699690
182+
constexpr auto lengths = make_tuple(Number<2>{}, Number<3>{}, Number<5>{}, Number<7>{},
183+
Number<11>{}, Number<13>{}, Number<17>{}, Number<19>{});
184+
constexpr auto strides = make_tuple(Number<25935>{}, Number<133>{}, Number<5187>{}, Number<19>{},
185+
Number<881790>{}, Number<399>{}, Number<51870>{}, Number<1>{});
186+
constexpr auto desc = make_naive_tensor_descriptor(lengths, strides);
187+
EXPECT_EQ(desc.GetElementSpaceSize(), 9699690);
188+
}

0 commit comments

Comments
 (0)