|
|
|
@ -30,8 +30,8 @@ class LoDTensorTester : public ::testing::Test {
|
|
|
|
|
// 0 5 10 15 20
|
|
|
|
|
// 0 2 5 7 10 12 15 20
|
|
|
|
|
LoD lod;
|
|
|
|
|
lod.push_back(std::vector<size_t>{0, 10, 20});
|
|
|
|
|
lod.push_back(std::vector<size_t>{0, 5, 10, 15, 20});
|
|
|
|
|
lod.push_back(std::vector<size_t>{0, 2, 3});
|
|
|
|
|
lod.push_back(std::vector<size_t>{0, 2, 5, 8});
|
|
|
|
|
lod.push_back(std::vector<size_t>{0, 2, 5, 7, 10, 12, 15, 17, 20});
|
|
|
|
|
|
|
|
|
|
ASSERT_EQ(lod.size(), 3UL);
|
|
|
|
@ -52,14 +52,14 @@ TEST_F(LoDTensorTester, NumLevels) { ASSERT_EQ(lod_tensor_.NumLevels(), 3UL); }
|
|
|
|
|
|
|
|
|
|
TEST_F(LoDTensorTester, NumElements) {
|
|
|
|
|
ASSERT_EQ(lod_tensor_.NumElements(0), 2UL);
|
|
|
|
|
ASSERT_EQ(lod_tensor_.NumElements(1), 4UL);
|
|
|
|
|
ASSERT_EQ(lod_tensor_.NumElements(1), 3UL);
|
|
|
|
|
ASSERT_EQ(lod_tensor_.NumElements(2), 8UL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(LoDTensorTester, NumElements2) {
|
|
|
|
|
ASSERT_EQ(lod_tensor_.NumElements(0, 0), 2UL);
|
|
|
|
|
ASSERT_EQ(lod_tensor_.NumElements(0, 1), 2UL);
|
|
|
|
|
ASSERT_EQ(lod_tensor_.NumElements(1, 1), 2UL);
|
|
|
|
|
ASSERT_EQ(lod_tensor_.NumElements(0, 1), 1UL);
|
|
|
|
|
ASSERT_EQ(lod_tensor_.NumElements(1, 1), 3UL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(LoDTensorTester, ShrinkLevels) {
|
|
|
|
@ -68,17 +68,16 @@ TEST_F(LoDTensorTester, ShrinkLevels) {
|
|
|
|
|
LoDTensor new_lod_tensor = lod_tensor_;
|
|
|
|
|
new_lod_tensor.ShrinkLevels(level, level + 1);
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.NumLevels(), 1UL);
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.NumElements(0), lod_tensor_.NumElements(level));
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.data<float>(), lod_tensor_.data<float>());
|
|
|
|
|
}
|
|
|
|
|
// shrink 2 level
|
|
|
|
|
for (size_t level = 0; level < 2UL; ++level) {
|
|
|
|
|
LoDTensor new_lod_tensor = lod_tensor_;
|
|
|
|
|
new_lod_tensor.ShrinkLevels(level, level + 2);
|
|
|
|
|
// the lowest level's last element should be the tensor's batch_size.
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.lod().back().back(),
|
|
|
|
|
lod_tensor_.lod().back().back());
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.NumLevels(), 2UL);
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.NumElements(0), lod_tensor_.NumElements(level));
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.NumElements(1),
|
|
|
|
|
lod_tensor_.NumElements(level + 1));
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.data<float>(), lod_tensor_.data<float>());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -86,19 +85,19 @@ TEST_F(LoDTensorTester, ShrinkLevels) {
|
|
|
|
|
TEST_F(LoDTensorTester, ShrinkInLevel) {
|
|
|
|
|
size_t level = 0;
|
|
|
|
|
LoDTensor new_lod_tensor = lod_tensor_;
|
|
|
|
|
new_lod_tensor.ShrinkInLevel(level, 0, 2);
|
|
|
|
|
new_lod_tensor.ShrinkInLevel(level, 0, 1);
|
|
|
|
|
EXPECT_EQ(new_lod_tensor.NumLevels(), 3UL);
|
|
|
|
|
EXPECT_EQ(new_lod_tensor.NumElements(0), 2UL);
|
|
|
|
|
EXPECT_EQ(new_lod_tensor.NumElements(1), 4UL);
|
|
|
|
|
EXPECT_EQ(new_lod_tensor.NumElements(2), 8UL);
|
|
|
|
|
EXPECT_EQ(new_lod_tensor.NumElements(0), 1UL);
|
|
|
|
|
EXPECT_EQ(new_lod_tensor.NumElements(1), 2UL);
|
|
|
|
|
EXPECT_EQ(new_lod_tensor.NumElements(2), 5UL);
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.data<float>(), lod_tensor_.data<float>());
|
|
|
|
|
|
|
|
|
|
level = 1;
|
|
|
|
|
new_lod_tensor = lod_tensor_;
|
|
|
|
|
new_lod_tensor.ShrinkInLevel(level, 0, 2);
|
|
|
|
|
new_lod_tensor.ShrinkInLevel(level, 1, 2);
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.NumLevels(), 2UL);
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.NumElements(0), 2UL);
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.NumElements(1), 4UL);
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.NumElements(0), 1UL);
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.NumElements(1), 3UL);
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.data<float>(), lod_tensor_.data<float>());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|