MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / TEST

Function TEST

dnn/test/common/relayout.cpp:147–179  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

145 }
146}
147TEST(RELAYOUT, TRANSPOSE_DET) {
148 auto run = [](const TensorShape& shape, const std::vector<size_t>& dimshuffle,
149 bool expect_is_transpose, const TransposeParam& p = {}) {
150 TensorLayout src{shape, dtype::Float32{}};
151 src = src.dimshuffle(dimshuffle).collapse_contiguous();
152 TensorLayout dst{TensorShape{src.total_nr_elems()}, src.dtype};
153 TransposeParam p_get;
154 bool succ = is_transpose(src, dst, p_get);
155 ASSERT_EQ(expect_is_transpose, succ);
156 if (succ) {
157 ASSERT_EQ(p_get.batch, p.batch);
158 ASSERT_EQ(p_get.m, p.m);
159 ASSERT_EQ(p_get.n, p.n);
160 ASSERT_EQ(p_get.c, p.c);
161 }
162 // swap m, n
163 succ = is_transpose(dst, src, p_get);
164 ASSERT_EQ(expect_is_transpose, succ);
165 if (succ) {
166 ASSERT_EQ(p_get.batch, p.batch);
167 ASSERT_EQ(p_get.m, p.n);
168 ASSERT_EQ(p_get.n, p.m);
169 ASSERT_EQ(p_get.c, p.c);
170 }
171 };
172 run({2, 3}, {1, 0}, true, {1, 2, 3, 1, 0});
173 run({2, 3, 5}, {1, 0, 2}, true, {1, 2, 3, 5, 0});
174 run({2, 3, 5}, {0, 2, 1}, true, {2, 3, 5, 1, 0});
175 run({3, 2, 3, 5}, {0, 2, 1, 3}, true, {3, 2, 3, 5, 0});
176 run({3, 2, 3, 5}, {0, 1, 3, 2}, true, {6, 3, 5, 1, 0});
177 run({2, 3, 5}, {2, 1, 0}, false);
178 run({3, 2, 3, 5}, {3, 2, 1, 0}, false);
179}
180// vim: syntax=cpp.doxygen

Callers

nothing calls this directly

Calls 4

collapse_contiguousMethod · 0.80
dimshuffleMethod · 0.80
runFunction · 0.50
total_nr_elemsMethod · 0.45

Tested by

no test coverage detected