Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
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
Show 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