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
69da37bb
Commit
69da37bb
authored
Sep 03, 2019
by
Shucai Xiao
Browse files
fix review comments
parent
aefffcda
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
41 additions
and
54 deletions
+41
-54
src/include/migraphx/quantization.hpp
src/include/migraphx/quantization.hpp
+7
-12
src/py/migraphx_py.cpp
src/py/migraphx_py.cpp
+5
-5
src/quantization.cpp
src/quantization.cpp
+7
-15
test/cpu_ops_test.cpp
test/cpu_ops_test.cpp
+1
-1
test/gpu/miopen.cpp
test/gpu/miopen.cpp
+4
-4
test/quantization.cpp
test/quantization.cpp
+17
-17
No files found.
src/include/migraphx/quantization.hpp
View file @
69da37bb
...
@@ -14,8 +14,8 @@ inline namespace MIGRAPHX_INLINE_NS {
...
@@ -14,8 +14,8 @@ inline namespace MIGRAPHX_INLINE_NS {
struct
program
;
struct
program
;
void
quantize
(
program
&
prog
,
const
std
::
vector
<
std
::
string
>&
ins_names
);
void
quantize
_fp16
(
program
&
prog
,
const
std
::
vector
<
std
::
string
>&
ins_names
);
void
quantize
(
program
&
prog
);
void
quantize
_fp16
(
program
&
prog
);
// insert the capture operator for the inputs of each operator to be quantized
// insert the capture operator for the inputs of each operator to be quantized
// to int8
// to int8
...
@@ -24,9 +24,7 @@ std::size_t capture_arguments(program& prog,
...
@@ -24,9 +24,7 @@ std::size_t capture_arguments(program& prog,
const
std
::
function
<
void
(
std
::
size_t
,
std
::
vector
<
argument
>
)
>&
func
);
const
std
::
function
<
void
(
std
::
size_t
,
std
::
vector
<
argument
>
)
>&
func
);
std
::
shared_ptr
<
std
::
vector
<
std
::
pair
<
float
,
float
>>>
std
::
shared_ptr
<
std
::
vector
<
std
::
pair
<
float
,
float
>>>
capture_arguments_impl
(
program
&
prog
,
capture_arguments_impl
(
program
&
prog
,
const
target
&
t
,
const
std
::
vector
<
std
::
string
>&
ins_names
);
const
target
&
t
,
const
std
::
vector
<
std
::
string
>&
ins_names
=
{
"dot"
,
"convolution"
});
template
<
class
T
>
template
<
class
T
>
std
::
shared_ptr
<
std
::
vector
<
std
::
pair
<
float
,
float
>>>
capture_arguments
(
std
::
shared_ptr
<
std
::
vector
<
std
::
pair
<
float
,
float
>>>
capture_arguments
(
...
@@ -40,14 +38,11 @@ std::shared_ptr<std::vector<std::pair<float, float>>> capture_arguments(
...
@@ -40,14 +38,11 @@ std::shared_ptr<std::vector<std::pair<float, float>>> capture_arguments(
void
quantize_int8
(
program
&
prog
,
void
quantize_int8
(
program
&
prog
,
const
target
&
t
,
const
target
&
t
,
std
::
vector
<
program
::
parameter_map
>&
calibration_args
);
std
::
vector
<
program
::
parameter_map
>&
calibration_args
,
const
std
::
vector
<
std
::
string
>&
ins_names
=
{
"dot"
,
"convolution"
});
void
quantize_int8
(
program
&
prog
,
void
quantize_int8
(
program
&
prog
,
const
target
&
t
,
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
,
const
std
::
vector
<
std
::
string
>&
ins_names
,
const
std
::
vector
<
std
::
string
>&
ins_names
);
std
::
vector
<
program
::
parameter_map
>&
calibration_args
);
void
quantize_int8
(
program
&
prog
,
const
std
::
vector
<
std
::
string
>&
ins_names
,
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
);
}
// namespace MIGRAPHX_INLINE_NS
}
// namespace MIGRAPHX_INLINE_NS
}
// namespace migraphx
}
// namespace migraphx
...
...
src/py/migraphx_py.cpp
View file @
69da37bb
...
@@ -183,22 +183,22 @@ PYBIND11_MODULE(migraphx, m)
...
@@ -183,22 +183,22 @@ PYBIND11_MODULE(migraphx, m)
});
});
m
.
def
(
"generate_argument"
,
&
migraphx
::
generate_argument
,
py
::
arg
(
"s"
),
py
::
arg
(
"seed"
)
=
0
);
m
.
def
(
"generate_argument"
,
&
migraphx
::
generate_argument
,
py
::
arg
(
"s"
),
py
::
arg
(
"seed"
)
=
0
);
m
.
def
(
"quantize"
,
[](
migraphx
::
program
&
p
,
std
::
vector
<
std
::
string
>&
ins_names
)
{
m
.
def
(
"quantize
_fp16
"
,
[](
migraphx
::
program
&
p
,
std
::
vector
<
std
::
string
>&
ins_names
)
{
migraphx
::
quantize
(
p
,
ins_names
);
migraphx
::
quantize
_fp16
(
p
,
ins_names
);
});
});
m
.
def
(
"quantize"
,
[](
migraphx
::
program
&
p
)
{
migraphx
::
quantize
(
p
,
{
"all"
});
});
m
.
def
(
"quantize
_fp16
"
,
[](
migraphx
::
program
&
p
)
{
migraphx
::
quantize
_fp16
(
p
,
{
"all"
});
});
m
.
def
(
"quantize_int8"
,
m
.
def
(
"quantize_int8"
,
[](
migraphx
::
program
&
p
,
[](
migraphx
::
program
&
p
,
std
::
vector
<
std
::
string
>&
ins_names
,
std
::
vector
<
std
::
string
>&
ins_names
,
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
)
{
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
)
{
migraphx
::
quantize_int8
(
p
,
ins_names
,
quant_params
);
migraphx
::
quantize_int8
(
p
,
quant_param
s
,
ins_name
s
);
});
});
m
.
def
(
"quantize_int8"
,
m
.
def
(
"quantize_int8"
,
[](
migraphx
::
program
&
p
,
[](
migraphx
::
program
&
p
,
const
migraphx
::
target
&
t
,
const
migraphx
::
target
&
t
,
std
::
vector
<
std
::
string
>&
ins_names
,
std
::
vector
<
std
::
string
>&
ins_names
,
std
::
vector
<
migraphx
::
program
::
parameter_map
>&
cali_args
)
{
std
::
vector
<
migraphx
::
program
::
parameter_map
>&
cali_args
)
{
migraphx
::
quantize_int8
(
p
,
t
,
ins_names
,
cali_arg
s
);
migraphx
::
quantize_int8
(
p
,
t
,
cali_args
,
ins_name
s
);
});
});
m
.
def
(
"quantize_int8"
,
m
.
def
(
"quantize_int8"
,
[](
migraphx
::
program
&
p
,
[](
migraphx
::
program
&
p
,
...
...
src/quantization.cpp
View file @
69da37bb
...
@@ -96,7 +96,7 @@ instruction_ref insert_quant_ins(program& prog,
...
@@ -96,7 +96,7 @@ instruction_ref insert_quant_ins(program& prog,
// For the conversion, there could be cases of overflowing, but it
// For the conversion, there could be cases of overflowing, but it
// is very rare in the area of deeping learning, so we just do a
// is very rare in the area of deeping learning, so we just do a
// truncate of the input to get the fp16.
// truncate of the input to get the fp16.
void
quantize
(
program
&
prog
,
const
std
::
vector
<
std
::
string
>&
ins_names
)
void
quantize
_fp16
(
program
&
prog
,
const
std
::
vector
<
std
::
string
>&
ins_names
)
{
{
std
::
unordered_map
<
instruction_ref
,
instruction_ref
>
map_fp16
;
std
::
unordered_map
<
instruction_ref
,
instruction_ref
>
map_fp16
;
for
(
auto
ins
:
iterator_for
(
prog
))
for
(
auto
ins
:
iterator_for
(
prog
))
...
@@ -161,7 +161,7 @@ void quantize(program& prog, const std::vector<std::string>& ins_names)
...
@@ -161,7 +161,7 @@ void quantize(program& prog, const std::vector<std::string>& ins_names)
}
}
}
}
void
quantize
(
program
&
prog
)
{
quantize
(
prog
,
{
"all"
});
}
void
quantize
_fp16
(
program
&
prog
)
{
quantize
_fp16
(
prog
,
{
"all"
});
}
static
void
ins_quantize_int8
(
program
&
prog
,
static
void
ins_quantize_int8
(
program
&
prog
,
instruction_ref
ins
,
instruction_ref
ins
,
...
@@ -306,8 +306,8 @@ static void ins_quantize_int8(program& prog,
...
@@ -306,8 +306,8 @@ static void ins_quantize_int8(program& prog,
// a shift, then the convert can be done as v_int8 = fp * scale + shift.
// a shift, then the convert can be done as v_int8 = fp * scale + shift.
// To simplify the changes, we consider shift as 0.0f for now.
// To simplify the changes, we consider shift as 0.0f for now.
void
quantize_int8
(
program
&
prog
,
void
quantize_int8
(
program
&
prog
,
const
std
::
vector
<
std
::
string
>&
ins_n
am
e
s
,
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_par
ams
,
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_par
ams
)
const
std
::
vector
<
std
::
string
>&
ins_n
am
e
s
)
{
{
// For now, we only support the int8 quantization of gemm and convolution
// For now, we only support the int8 quantization of gemm and convolution
std
::
vector
<
std
::
string
>
op_names
=
{
"dot"
,
"convolution"
};
std
::
vector
<
std
::
string
>
op_names
=
{
"dot"
,
"convolution"
};
...
@@ -402,8 +402,8 @@ void quantize_int8(program& prog,
...
@@ -402,8 +402,8 @@ void quantize_int8(program& prog,
void
quantize_int8
(
program
&
prog
,
void
quantize_int8
(
program
&
prog
,
const
target
&
t
,
const
target
&
t
,
const
std
::
vector
<
std
::
string
>&
ins_name
s
,
std
::
vector
<
program
::
parameter_map
>&
calibration_arg
s
,
std
::
vector
<
program
::
parameter_map
>&
calibration_arg
s
)
const
std
::
vector
<
std
::
string
>&
ins_name
s
)
{
{
// insert capture operator
// insert capture operator
auto
cap_prog
=
prog
;
auto
cap_prog
=
prog
;
...
@@ -432,15 +432,7 @@ void quantize_int8(program& prog,
...
@@ -432,15 +432,7 @@ void quantize_int8(program& prog,
cap_prog
.
eval
(
m
);
cap_prog
.
eval
(
m
);
}
}
quantize_int8
(
prog
,
ins_names
,
*
int8_quant_params
);
quantize_int8
(
prog
,
*
int8_quant_params
,
ins_names
);
}
void
quantize_int8
(
program
&
prog
,
const
target
&
t
,
std
::
vector
<
program
::
parameter_map
>&
calibration_args
)
{
std
::
vector
<
std
::
string
>
ins_names
=
{
"dot"
,
"convolution"
};
quantize_int8
(
prog
,
t
,
ins_names
,
calibration_args
);
}
}
// For the input of each input argument, we need to insert a
// For the input of each input argument, we need to insert a
...
...
test/cpu_ops_test.cpp
View file @
69da37bb
...
@@ -1821,7 +1821,7 @@ TEST_CASE(fp32_fp16_test)
...
@@ -1821,7 +1821,7 @@ TEST_CASE(fp32_fp16_test)
auto
test_case
=
[
&
](
std
::
vector
<
std
::
string
>&&
op_names
)
{
auto
test_case
=
[
&
](
std
::
vector
<
std
::
string
>&&
op_names
)
{
std
::
vector
<
float
>
gold_res
=
{
2.0
,
4.0
,
6.0
,
8.0
,
10.0
,
12.0
};
std
::
vector
<
float
>
gold_res
=
{
2.0
,
4.0
,
6.0
,
8.0
,
10.0
,
12.0
};
auto
p
=
create_program
();
auto
p
=
create_program
();
migraphx
::
quantize
(
p
,
op_names
);
migraphx
::
quantize
_fp16
(
p
,
op_names
);
p
.
compile
(
migraphx
::
cpu
::
target
{});
p
.
compile
(
migraphx
::
cpu
::
target
{});
auto
result
=
p
.
eval
({});
auto
result
=
p
.
eval
({});
std
::
vector
<
float
>
res
;
std
::
vector
<
float
>
res
;
...
...
test/gpu/miopen.cpp
View file @
69da37bb
...
@@ -3694,7 +3694,7 @@ struct test_fp32_fp16_lall : verify_program<test_fp32_fp16_lall>
...
@@ -3694,7 +3694,7 @@ struct test_fp32_fp16_lall : verify_program<test_fp32_fp16_lall>
auto
l1
=
p
.
add_literal
(
migraphx
::
literal
(
s
,
data
));
auto
l1
=
p
.
add_literal
(
migraphx
::
literal
(
s
,
data
));
auto
l2
=
p
.
add_parameter
(
"p2"
,
s
);
auto
l2
=
p
.
add_parameter
(
"p2"
,
s
);
p
.
add_instruction
(
migraphx
::
op
::
add
{},
l1
,
l2
);
p
.
add_instruction
(
migraphx
::
op
::
add
{},
l1
,
l2
);
migraphx
::
quantize
(
p
,
{
"all"
});
migraphx
::
quantize
_fp16
(
p
,
{
"all"
});
return
p
;
return
p
;
};
};
};
};
...
@@ -3710,7 +3710,7 @@ struct test_fp32_fp16_ladd : verify_program<test_fp32_fp16_ladd>
...
@@ -3710,7 +3710,7 @@ struct test_fp32_fp16_ladd : verify_program<test_fp32_fp16_ladd>
auto
l1
=
p
.
add_literal
(
migraphx
::
literal
(
s
,
data
));
auto
l1
=
p
.
add_literal
(
migraphx
::
literal
(
s
,
data
));
auto
l2
=
p
.
add_parameter
(
"p2"
,
s
);
auto
l2
=
p
.
add_parameter
(
"p2"
,
s
);
p
.
add_instruction
(
migraphx
::
op
::
add
{},
l1
,
l2
);
p
.
add_instruction
(
migraphx
::
op
::
add
{},
l1
,
l2
);
migraphx
::
quantize
(
p
,
{
"add"
});
migraphx
::
quantize
_fp16
(
p
,
{
"add"
});
return
p
;
return
p
;
};
};
};
};
...
@@ -3726,7 +3726,7 @@ struct test_fp32_fp16_add : verify_program<test_fp32_fp16_add>
...
@@ -3726,7 +3726,7 @@ struct test_fp32_fp16_add : verify_program<test_fp32_fp16_add>
auto
sum
=
p
.
add_instruction
(
migraphx
::
op
::
add
{},
p1
,
p2
);
auto
sum
=
p
.
add_instruction
(
migraphx
::
op
::
add
{},
p1
,
p2
);
auto
diff
=
p
.
add_instruction
(
migraphx
::
op
::
sub
{},
sum
,
p2
);
auto
diff
=
p
.
add_instruction
(
migraphx
::
op
::
sub
{},
sum
,
p2
);
p
.
add_instruction
(
migraphx
::
op
::
add
{},
diff
,
p1
);
p
.
add_instruction
(
migraphx
::
op
::
add
{},
diff
,
p1
);
migraphx
::
quantize
(
p
,
{
"add"
});
migraphx
::
quantize
_fp16
(
p
,
{
"add"
});
return
p
;
return
p
;
};
};
...
@@ -3743,7 +3743,7 @@ struct test_fp32_fp16_sub : verify_program<test_fp32_fp16_sub>
...
@@ -3743,7 +3743,7 @@ struct test_fp32_fp16_sub : verify_program<test_fp32_fp16_sub>
auto
sum
=
p
.
add_instruction
(
migraphx
::
op
::
add
{},
p1
,
p2
);
auto
sum
=
p
.
add_instruction
(
migraphx
::
op
::
add
{},
p1
,
p2
);
auto
diff
=
p
.
add_instruction
(
migraphx
::
op
::
sub
{},
sum
,
p2
);
auto
diff
=
p
.
add_instruction
(
migraphx
::
op
::
sub
{},
sum
,
p2
);
p
.
add_instruction
(
migraphx
::
op
::
add
{},
diff
,
p1
);
p
.
add_instruction
(
migraphx
::
op
::
add
{},
diff
,
p1
);
migraphx
::
quantize
(
p
,
{
"sub"
});
migraphx
::
quantize
_fp16
(
p
,
{
"sub"
});
return
p
;
return
p
;
};
};
...
...
test/quantization.cpp
View file @
69da37bb
...
@@ -43,7 +43,7 @@ TEST_CASE(param_add)
...
@@ -43,7 +43,7 @@ TEST_CASE(param_add)
auto
p1
=
create_program_float
();
auto
p1
=
create_program_float
();
auto
p2
=
create_program_half
();
auto
p2
=
create_program_half
();
migraphx
::
quantize
(
p1
);
migraphx
::
quantize
_fp16
(
p1
);
EXPECT
(
p1
==
p2
);
EXPECT
(
p1
==
p2
);
}
}
...
@@ -51,7 +51,7 @@ TEST_CASE(param_add)
...
@@ -51,7 +51,7 @@ TEST_CASE(param_add)
auto
p1
=
create_program_float
();
auto
p1
=
create_program_float
();
auto
p2
=
create_program_half
();
auto
p2
=
create_program_half
();
migraphx
::
quantize
(
p1
,
{
"add"
});
migraphx
::
quantize
_fp16
(
p1
,
{
"add"
});
EXPECT
(
p1
==
p2
);
EXPECT
(
p1
==
p2
);
}
}
}
}
...
@@ -127,7 +127,7 @@ TEST_CASE(param_add_sub)
...
@@ -127,7 +127,7 @@ TEST_CASE(param_add_sub)
auto
p1
=
create_program_float
();
auto
p1
=
create_program_float
();
auto
p2
=
create_program_half_add
();
auto
p2
=
create_program_half_add
();
migraphx
::
quantize
(
p1
,
{
"add"
});
migraphx
::
quantize
_fp16
(
p1
,
{
"add"
});
EXPECT
(
p1
==
p2
);
EXPECT
(
p1
==
p2
);
}
}
...
@@ -135,7 +135,7 @@ TEST_CASE(param_add_sub)
...
@@ -135,7 +135,7 @@ TEST_CASE(param_add_sub)
auto
p1
=
create_program_float
();
auto
p1
=
create_program_float
();
auto
p2
=
create_program_half_sub
();
auto
p2
=
create_program_half_sub
();
migraphx
::
quantize
(
p1
,
{
"sub"
});
migraphx
::
quantize
_fp16
(
p1
,
{
"sub"
});
EXPECT
(
p1
==
p2
);
EXPECT
(
p1
==
p2
);
}
}
...
@@ -143,7 +143,7 @@ TEST_CASE(param_add_sub)
...
@@ -143,7 +143,7 @@ TEST_CASE(param_add_sub)
auto
p1
=
create_program_float
();
auto
p1
=
create_program_float
();
auto
p2
=
create_program_half_all
();
auto
p2
=
create_program_half_all
();
migraphx
::
quantize
(
p1
);
migraphx
::
quantize
_fp16
(
p1
);
migraphx
::
run_passes
(
p1
,
{
migraphx
::
dead_code_elimination
{}});
migraphx
::
run_passes
(
p1
,
{
migraphx
::
dead_code_elimination
{}});
EXPECT
(
p1
==
p2
);
EXPECT
(
p1
==
p2
);
...
@@ -181,7 +181,7 @@ TEST_CASE(literal_add)
...
@@ -181,7 +181,7 @@ TEST_CASE(literal_add)
auto
p1
=
create_program_float
();
auto
p1
=
create_program_float
();
auto
p2
=
create_program_half
();
auto
p2
=
create_program_half
();
migraphx
::
quantize
(
p1
,
{
"all"
});
migraphx
::
quantize
_fp16
(
p1
,
{
"all"
});
migraphx
::
run_passes
(
p1
,
migraphx
::
run_passes
(
p1
,
{
migraphx
::
propagate_constant
{},
migraphx
::
dead_code_elimination
{}});
{
migraphx
::
propagate_constant
{},
migraphx
::
dead_code_elimination
{}});
migraphx
::
run_passes
(
p2
,
migraphx
::
run_passes
(
p2
,
...
@@ -194,7 +194,7 @@ TEST_CASE(literal_add)
...
@@ -194,7 +194,7 @@ TEST_CASE(literal_add)
auto
p1
=
create_program_float
();
auto
p1
=
create_program_float
();
auto
p2
=
create_program_half
();
auto
p2
=
create_program_half
();
migraphx
::
quantize
(
p1
,
{
"add"
});
migraphx
::
quantize
_fp16
(
p1
,
{
"add"
});
migraphx
::
run_passes
(
p1
,
migraphx
::
run_passes
(
p1
,
{
migraphx
::
propagate_constant
{},
migraphx
::
dead_code_elimination
{}});
{
migraphx
::
propagate_constant
{},
migraphx
::
dead_code_elimination
{}});
migraphx
::
run_passes
(
p2
,
migraphx
::
run_passes
(
p2
,
...
@@ -313,7 +313,7 @@ TEST_CASE(dot_float)
...
@@ -313,7 +313,7 @@ TEST_CASE(dot_float)
auto
p
=
create_program
();
auto
p
=
create_program
();
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{
{
0.1
f
,
0.0
f
},
{
0.1
f
,
0.0
f
},
{
0.1
f
,
100.0
f
}};
{
0.1
f
,
0.0
f
},
{
0.1
f
,
0.0
f
},
{
0.1
f
,
100.0
f
}};
migraphx
::
quantize_int8
(
p
,
{
"dot"
},
quant_params
);
migraphx
::
quantize_int8
(
p
,
quant_params
,
{
"dot"
}
);
migraphx
::
run_passes
(
p
,
{
migraphx
::
dead_code_elimination
{}});
migraphx
::
run_passes
(
p
,
{
migraphx
::
dead_code_elimination
{}});
auto
qp
=
create_int8_quantized_prog
();
auto
qp
=
create_int8_quantized_prog
();
...
@@ -375,7 +375,7 @@ TEST_CASE(dot_double_2args)
...
@@ -375,7 +375,7 @@ TEST_CASE(dot_double_2args)
auto
p
=
create_program
();
auto
p
=
create_program
();
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{{
0.1
f
,
0.0
f
},
{
0.1
f
,
0.0
f
}};
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{{
0.1
f
,
0.0
f
},
{
0.1
f
,
0.0
f
}};
migraphx
::
quantize_int8
(
p
,
{
"dot"
},
quant_params
);
migraphx
::
quantize_int8
(
p
,
quant_params
,
{
"dot"
}
);
auto
qp
=
create_int8_quantized_prog
();
auto
qp
=
create_int8_quantized_prog
();
EXPECT
(
p
==
qp
);
EXPECT
(
p
==
qp
);
...
@@ -440,7 +440,7 @@ TEST_CASE(dot_large_alpha_beta_float)
...
@@ -440,7 +440,7 @@ TEST_CASE(dot_large_alpha_beta_float)
auto
p
=
create_program
();
auto
p
=
create_program
();
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{
{
0.1
f
,
1.0
f
},
{
0.1
f
,
0.0
f
},
{
0.1
f
,
100.0
f
}};
{
0.1
f
,
1.0
f
},
{
0.1
f
,
0.0
f
},
{
0.1
f
,
100.0
f
}};
migraphx
::
quantize_int8
(
p
,
{
"dot"
},
quant_params
);
migraphx
::
quantize_int8
(
p
,
quant_params
,
{
"dot"
}
);
auto
qp
=
create_int8_quantized_prog
();
auto
qp
=
create_int8_quantized_prog
();
EXPECT
(
p
==
qp
);
EXPECT
(
p
==
qp
);
...
@@ -504,7 +504,7 @@ TEST_CASE(dot_large_alpha_beta_int32)
...
@@ -504,7 +504,7 @@ TEST_CASE(dot_large_alpha_beta_int32)
auto
p
=
create_program
();
auto
p
=
create_program
();
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{
{
0.1
f
,
1.0
f
},
{
0.1
f
,
0.0
f
},
{
0.1
f
,
100.0
f
}};
{
0.1
f
,
1.0
f
},
{
0.1
f
,
0.0
f
},
{
0.1
f
,
100.0
f
}};
migraphx
::
quantize_int8
(
p
,
{
"dot"
},
quant_params
);
migraphx
::
quantize_int8
(
p
,
quant_params
,
{
"dot"
}
);
auto
qp
=
create_int8_quantized_prog
();
auto
qp
=
create_int8_quantized_prog
();
EXPECT
(
p
==
qp
);
EXPECT
(
p
==
qp
);
...
@@ -548,7 +548,7 @@ TEST_CASE(dot_int32_one_arg)
...
@@ -548,7 +548,7 @@ TEST_CASE(dot_int32_one_arg)
auto
p
=
create_program
();
auto
p
=
create_program
();
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{{
1.0
f
,
1.0
f
}};
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{{
1.0
f
,
1.0
f
}};
migraphx
::
quantize_int8
(
p
,
{
"dot"
},
quant_params
);
migraphx
::
quantize_int8
(
p
,
quant_params
,
{
"dot"
}
);
auto
qp
=
create_int8_quantized_prog
();
auto
qp
=
create_int8_quantized_prog
();
EXPECT
(
p
==
qp
);
EXPECT
(
p
==
qp
);
...
@@ -622,7 +622,7 @@ TEST_CASE(dot_int32)
...
@@ -622,7 +622,7 @@ TEST_CASE(dot_int32)
auto
p
=
create_program
();
auto
p
=
create_program
();
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{
{
0.1
f
,
1.0
f
},
{
0.1
f
,
0.0
f
},
{
0.1
f
,
100.0
f
}};
{
0.1
f
,
1.0
f
},
{
0.1
f
,
0.0
f
},
{
0.1
f
,
100.0
f
}};
migraphx
::
quantize_int8
(
p
,
{
"dot"
},
quant_params
);
migraphx
::
quantize_int8
(
p
,
quant_params
,
{
"dot"
}
);
auto
qp
=
create_int8_quantized_prog
();
auto
qp
=
create_int8_quantized_prog
();
EXPECT
(
p
==
qp
);
EXPECT
(
p
==
qp
);
...
@@ -671,7 +671,7 @@ TEST_CASE(dot_float_convert)
...
@@ -671,7 +671,7 @@ TEST_CASE(dot_float_convert)
auto
p
=
create_program
();
auto
p
=
create_program
();
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{{
0.1
f
,
1.0
f
},
{
0.1
f
,
0.0
f
}};
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{{
0.1
f
,
1.0
f
},
{
0.1
f
,
0.0
f
}};
migraphx
::
quantize_int8
(
p
,
{
"dot"
},
quant_params
);
migraphx
::
quantize_int8
(
p
,
quant_params
,
{
"dot"
}
);
migraphx
::
run_passes
(
p
,
{
migraphx
::
dead_code_elimination
{}});
migraphx
::
run_passes
(
p
,
{
migraphx
::
dead_code_elimination
{}});
auto
qp
=
create_int8_quantized_prog
();
auto
qp
=
create_int8_quantized_prog
();
...
@@ -726,7 +726,7 @@ TEST_CASE(conv_float)
...
@@ -726,7 +726,7 @@ TEST_CASE(conv_float)
auto
p
=
create_program
();
auto
p
=
create_program
();
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{{
0.1
f
,
0.0
f
},
{
0.1
f
,
0.0
f
}};
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{{
0.1
f
,
0.0
f
},
{
0.1
f
,
0.0
f
}};
migraphx
::
quantize_int8
(
p
,
{
"convolution"
}
,
quant_params
);
migraphx
::
quantize_int8
(
p
,
quant_params
,
{
"convolution"
});
auto
qp
=
create_int8_quantized_prog
();
auto
qp
=
create_int8_quantized_prog
();
EXPECT
(
p
==
qp
);
EXPECT
(
p
==
qp
);
...
@@ -782,7 +782,7 @@ TEST_CASE(conv_int32)
...
@@ -782,7 +782,7 @@ TEST_CASE(conv_int32)
auto
p
=
create_program
();
auto
p
=
create_program
();
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{{
0.1
f
,
0.0
f
},
{
0.1
f
,
0.0
f
}};
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{{
0.1
f
,
0.0
f
},
{
0.1
f
,
0.0
f
}};
migraphx
::
quantize_int8
(
p
,
{
"convolution"
}
,
quant_params
);
migraphx
::
quantize_int8
(
p
,
quant_params
,
{
"convolution"
});
auto
qp
=
create_int8_quantized_prog
();
auto
qp
=
create_int8_quantized_prog
();
EXPECT
(
p
==
qp
);
EXPECT
(
p
==
qp
);
...
@@ -840,7 +840,7 @@ TEST_CASE(conv_half)
...
@@ -840,7 +840,7 @@ TEST_CASE(conv_half)
auto
p
=
create_program
();
auto
p
=
create_program
();
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{{
0.1
f
,
0.0
f
},
{
0.1
f
,
0.0
f
}};
const
std
::
vector
<
std
::
pair
<
float
,
float
>>&
quant_params
{{
0.1
f
,
0.0
f
},
{
0.1
f
,
0.0
f
}};
migraphx
::
quantize_int8
(
p
,
{
"convolution"
}
,
quant_params
);
migraphx
::
quantize_int8
(
p
,
quant_params
,
{
"convolution"
});
auto
qp
=
create_int8_quantized_prog
();
auto
qp
=
create_int8_quantized_prog
();
EXPECT
(
p
==
qp
);
EXPECT
(
p
==
qp
);
...
...
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