Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
MIGraphX
Commits
b31735e8
Commit
b31735e8
authored
May 06, 2022
by
charlie
Browse files
Fix serialize errors
parent
7c63b13b
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
23 additions
and
19 deletions
+23
-19
src/include/migraphx/shape.hpp
src/include/migraphx/shape.hpp
+7
-1
src/shape.cpp
src/shape.cpp
+6
-7
test/shape_test.cpp
test/shape_test.cpp
+10
-11
No files found.
src/include/migraphx/shape.hpp
View file @
b31735e8
...
@@ -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
)
...
...
src/shape.cpp
View file @
b31735e8
...
@@ -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
};
}
}
...
...
test/shape_test.cpp
View file @
b31735e8
...
@@ -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
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment