Commit b31735e8 authored by charlie's avatar charlie
Browse files

Fix serialize errors

parent 7c63b13b
...@@ -63,7 +63,13 @@ struct shape ...@@ -63,7 +63,13 @@ struct shape
{ {
std::size_t min = 0; std::size_t min = 0;
std::size_t max = 0; std::size_t max = 0;
std::size_t opt = 0; std::size_t opt = 1;
dynamic_dimension(std::size_t i_min, std::size_t i_max, std::size_t i_opt)
: min(i_min), max(i_max), opt(i_opt)
{
}
bool is_fixed() const { return min == max; } bool is_fixed() const { return min == max; }
bool has_optimal() const { return opt != 0; } bool has_optimal() const { return opt != 0; }
friend bool operator==(const dynamic_dimension& x, const dynamic_dimension& y) friend bool operator==(const dynamic_dimension& x, const dynamic_dimension& y)
......
...@@ -388,7 +388,7 @@ const std::vector<shape::dynamic_dimension>& shape::dyn_dims() const { return im ...@@ -388,7 +388,7 @@ const std::vector<shape::dynamic_dimension>& shape::dyn_dims() const { return im
std::vector<std::size_t> shape::min_dyn_dims() const std::vector<std::size_t> shape::min_dyn_dims() const
{ {
auto num_dims = dyn_dims().size(); auto num_dims = dyn_dims().size();
std::vector<std::size_t> ret{num_dims}; std::vector<std::size_t> ret(num_dims);
for(int i = 0; i < num_dims; ++i) for(int i = 0; i < num_dims; ++i)
{ {
ret.at(i) = dyn_dims().at(i).min; ret.at(i) = dyn_dims().at(i).min;
...@@ -399,7 +399,7 @@ std::vector<std::size_t> shape::min_dyn_dims() const ...@@ -399,7 +399,7 @@ std::vector<std::size_t> shape::min_dyn_dims() const
std::vector<std::size_t> shape::max_dyn_dims() const std::vector<std::size_t> shape::max_dyn_dims() const
{ {
auto num_dims = dyn_dims().size(); auto num_dims = dyn_dims().size();
std::vector<std::size_t> ret{num_dims}; std::vector<std::size_t> ret(num_dims);
for(int i = 0; i < num_dims; ++i) for(int i = 0; i < num_dims; ++i)
{ {
ret.at(i) = dyn_dims().at(i).max; ret.at(i) = dyn_dims().at(i).max;
...@@ -410,7 +410,7 @@ std::vector<std::size_t> shape::max_dyn_dims() const ...@@ -410,7 +410,7 @@ std::vector<std::size_t> shape::max_dyn_dims() const
std::vector<std::size_t> shape::opt_dyn_dims() const std::vector<std::size_t> shape::opt_dyn_dims() const
{ {
auto num_dims = dyn_dims().size(); auto num_dims = dyn_dims().size();
std::vector<std::size_t> ret{num_dims}; std::vector<std::size_t> ret(num_dims);
for(int i = 0; i < num_dims; ++i) for(int i = 0; i < num_dims; ++i)
{ {
ret.at(i) = dyn_dims().at(i).opt; ret.at(i) = dyn_dims().at(i).opt;
...@@ -503,12 +503,11 @@ void migraphx_from_value(const value& v, shape& s) ...@@ -503,12 +503,11 @@ void migraphx_from_value(const value& v, shape& s)
auto mins = v.at("min_dyn_dims").to_vector<std::size_t>(); auto mins = v.at("min_dyn_dims").to_vector<std::size_t>();
auto maxes = v.at("max_dyn_dims").to_vector<std::size_t>(); auto maxes = v.at("max_dyn_dims").to_vector<std::size_t>();
auto opts = v.at("opt_dyn_dims").to_vector<std::size_t>(); auto opts = v.at("opt_dyn_dims").to_vector<std::size_t>();
assert(mins.size() == maxes.size() == opts.size()); assert(mins.size() == maxes.size() and maxes.size() == opts.size());
auto num_dims = mins.size(); std::vector<shape::dynamic_dimension> dyn_dims;
std::vector<shape::dynamic_dimension> dyn_dims{num_dims};
for(int i = 0; i < mins.size(); ++i) for(int i = 0; i < mins.size(); ++i)
{ {
dyn_dims.at(i) = {mins[i], maxes[i], opts[i]}; dyn_dims.emplace_back(mins[i], maxes[i], opts[i]);
} }
s = shape{shape::parse_type(t), dyn_dims}; s = shape{shape::parse_type(t), dyn_dims};
} }
......
...@@ -15,7 +15,6 @@ TEST_CASE(test_shape_default) ...@@ -15,7 +15,6 @@ TEST_CASE(test_shape_default)
EXPECT(s.elements() == 0); EXPECT(s.elements() == 0);
EXPECT(s.bytes() == 0); EXPECT(s.bytes() == 0);
} }
TEST_CASE(test_shape_assign) TEST_CASE(test_shape_assign)
{ {
migraphx::shape s1{migraphx::shape::float_type, {100, 32, 8, 8}}; migraphx::shape s1{migraphx::shape::float_type, {100, 32, 8, 8}};
...@@ -45,9 +44,9 @@ TEST_CASE(test_shape_standard) ...@@ -45,9 +44,9 @@ TEST_CASE(test_shape_standard)
TEST_CASE(test_shape_dynamic_fixed) TEST_CASE(test_shape_dynamic_fixed)
{ {
std::vector<migraphx::shape::dynamic_dimension> dims = {}; std::vector<migraphx::shape::dynamic_dimension> dims = {};
dims.emplace_back(migraphx::shape::dynamic_dimension{2, 2, 0}); dims.emplace_back(2, 2, 0);
dims.emplace_back(migraphx::shape::dynamic_dimension{2, 2, 0}); dims.emplace_back(2, 2, 0);
dims.emplace_back(migraphx::shape::dynamic_dimension{3, 3, 0}); dims.emplace_back(3, 3, 0);
migraphx::shape s{migraphx::shape::float_type, dims}; migraphx::shape s{migraphx::shape::float_type, dims};
EXPECT(not s.standard()); EXPECT(not s.standard());
EXPECT(not s.packed()); EXPECT(not s.packed());
...@@ -62,8 +61,8 @@ TEST_CASE(test_shape_dynamic_fixed) ...@@ -62,8 +61,8 @@ TEST_CASE(test_shape_dynamic_fixed)
TEST_CASE(test_shape_dynamic_not_fixed) TEST_CASE(test_shape_dynamic_not_fixed)
{ {
std::vector<migraphx::shape::dynamic_dimension> dims = {}; std::vector<migraphx::shape::dynamic_dimension> dims = {};
dims.emplace_back(migraphx::shape::dynamic_dimension{2, 5, 2}); dims.emplace_back(2, 5, 2);
dims.emplace_back(migraphx::shape::dynamic_dimension{2, 8, 0}); dims.emplace_back(2, 8, 0);
migraphx::shape s{migraphx::shape::float_type, dims}; migraphx::shape s{migraphx::shape::float_type, dims};
EXPECT(not s.standard()); EXPECT(not s.standard());
EXPECT(not s.packed()); EXPECT(not s.packed());
...@@ -97,8 +96,8 @@ TEST_CASE(test_shape_dynamic_compares) ...@@ -97,8 +96,8 @@ TEST_CASE(test_shape_dynamic_compares)
TEST_CASE(test_shape_dynamic_errors) TEST_CASE(test_shape_dynamic_errors)
{ {
std::vector<migraphx::shape::dynamic_dimension> dims = {}; std::vector<migraphx::shape::dynamic_dimension> dims = {};
dims.emplace_back(migraphx::shape::dynamic_dimension{2, 5, 2}); dims.emplace_back(2, 5, 2);
dims.emplace_back(migraphx::shape::dynamic_dimension{2, 8, 0}); dims.emplace_back(2, 8, 0);
migraphx::shape s{migraphx::shape::float_type, dims}; migraphx::shape s{migraphx::shape::float_type, dims};
EXPECT(test::throws([&] { s.element_space(); })); EXPECT(test::throws([&] { s.element_space(); }));
EXPECT(test::throws([&] { s.elements(); })); EXPECT(test::throws([&] { s.elements(); }));
...@@ -112,13 +111,13 @@ TEST_CASE(test_shape_dynamic_errors) ...@@ -112,13 +111,13 @@ TEST_CASE(test_shape_dynamic_errors)
TEST_CASE(test_shape_dynamic_serialize) TEST_CASE(test_shape_dynamic_serialize)
{ {
std::vector<migraphx::shape::dynamic_dimension> dims1 = {}; std::vector<migraphx::shape::dynamic_dimension> dims1 = {};
dims1.emplace_back(migraphx::shape::dynamic_dimension{2, 5, 2}); dims1.emplace_back(2, 5, 2);
dims1.emplace_back(migraphx::shape::dynamic_dimension{2, 8, 0}); dims1.emplace_back(2, 8, 0);
migraphx::shape s1{migraphx::shape::float_type, dims1}; migraphx::shape s1{migraphx::shape::float_type, dims1};
auto v1 = migraphx::to_value(s1); auto v1 = migraphx::to_value(s1);
std::vector<migraphx::shape::dynamic_dimension> dims2 = {}; std::vector<migraphx::shape::dynamic_dimension> dims2 = {};
dims2.emplace_back(migraphx::shape::dynamic_dimension{2, 5, 2}); dims2.emplace_back(2, 5, 2);
migraphx::shape s2{migraphx::shape::uint64_type, dims2}; migraphx::shape s2{migraphx::shape::uint64_type, dims2};
auto v2 = migraphx::to_value(s2); auto v2 = migraphx::to_value(s2);
EXPECT(v1 != v2); EXPECT(v1 != v2);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment