|
|
|
@ -21,7 +21,7 @@
|
|
|
|
|
namespace paddle {
|
|
|
|
|
namespace framework {
|
|
|
|
|
|
|
|
|
|
class LODTensorTester : public ::testing::Test {
|
|
|
|
|
class LoDTensorTester : public ::testing::Test {
|
|
|
|
|
public:
|
|
|
|
|
virtual void SetUp() override {
|
|
|
|
|
// tensor's batch_size: 30
|
|
|
|
@ -29,7 +29,7 @@ class LODTensorTester : public ::testing::Test {
|
|
|
|
|
// 0 10 20
|
|
|
|
|
// 0 5 10 15 20
|
|
|
|
|
// 0 2 5 7 10 12 15 20
|
|
|
|
|
LOD lod;
|
|
|
|
|
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, 5, 7, 10, 12, 15, 17, 20});
|
|
|
|
@ -47,21 +47,21 @@ class LODTensorTester : public ::testing::Test {
|
|
|
|
|
protected:
|
|
|
|
|
platform::CPUPlace place;
|
|
|
|
|
Tensor tensor;
|
|
|
|
|
LODTensor lod_tensor;
|
|
|
|
|
LoDTensor lod_tensor;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
TEST_F(LODTensorTester, NumLevels) { ASSERT_EQ(lod_tensor.NumLevels(), 3UL); }
|
|
|
|
|
TEST_F(LoDTensorTester, NumLevels) { ASSERT_EQ(lod_tensor.NumLevels(), 3UL); }
|
|
|
|
|
|
|
|
|
|
TEST_F(LODTensorTester, NumElements) {
|
|
|
|
|
TEST_F(LoDTensorTester, NumElements) {
|
|
|
|
|
ASSERT_EQ(lod_tensor.NumElements(0), 2UL);
|
|
|
|
|
ASSERT_EQ(lod_tensor.NumElements(1), 4UL);
|
|
|
|
|
ASSERT_EQ(lod_tensor.NumElements(2), 8UL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(LODTensorTester, SliceLevels) {
|
|
|
|
|
TEST_F(LoDTensorTester, SliceLevels) {
|
|
|
|
|
// slice 1 level
|
|
|
|
|
for (size_t level = 0; level < 3UL; ++level) {
|
|
|
|
|
LODTensor new_lod_tensor = lod_tensor;
|
|
|
|
|
LoDTensor new_lod_tensor = lod_tensor;
|
|
|
|
|
new_lod_tensor.SliceLevels(level, level + 1);
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.NumLevels(), 1UL);
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.NumElements(0), lod_tensor.NumElements(level));
|
|
|
|
@ -70,7 +70,7 @@ TEST_F(LODTensorTester, SliceLevels) {
|
|
|
|
|
}
|
|
|
|
|
// slice 2 level
|
|
|
|
|
for (size_t level = 0; level < 2UL; ++level) {
|
|
|
|
|
LODTensor new_lod_tensor = lod_tensor;
|
|
|
|
|
LoDTensor new_lod_tensor = lod_tensor;
|
|
|
|
|
new_lod_tensor.SliceLevels(level, level + 2);
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.NumLevels(), 2UL);
|
|
|
|
|
ASSERT_EQ(new_lod_tensor.NumElements(0), lod_tensor.NumElements(level));
|
|
|
|
@ -80,9 +80,9 @@ TEST_F(LODTensorTester, SliceLevels) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST_F(LODTensorTester, SliceInLevel) {
|
|
|
|
|
TEST_F(LoDTensorTester, SliceInLevel) {
|
|
|
|
|
size_t level = 0;
|
|
|
|
|
LODTensor new_lod_tensor = lod_tensor;
|
|
|
|
|
LoDTensor new_lod_tensor = lod_tensor;
|
|
|
|
|
new_lod_tensor.SliceInLevel(level, 0, 2);
|
|
|
|
|
EXPECT_EQ(new_lod_tensor.NumLevels(), 3UL);
|
|
|
|
|
EXPECT_EQ(new_lod_tensor.NumElements(0), 2UL);
|
|
|
|
|