Skip to content

Commit

Permalink
[Quantize] Skip for same input-output domain scale. (#2611)
Browse files Browse the repository at this point in the history
  • Loading branch information
ZihengJiang authored and eqy committed Feb 16, 2019
1 parent 2ae3124 commit 66cd036
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions src/relay/pass/quantize.cc
Original file line number Diff line number Diff line change
Expand Up @@ -198,14 +198,20 @@ Expr QuantizeRealize(const Call& ref_call,
// x * idom_scale = y * odom_scale
// => y = x * idom_scale / odom_scale
if (const auto* n = new_args[0].as<QRealizeIntExprNode>()) {
// int32->int8
Expr data = n->data;
float idom_scale_imm = GetScalarFromConstant<float>(n->dom_scale);
float odom_scale_imm = GetScalarFromConstant<float>(dom_scale);
if (idom_scale_imm == odom_scale_imm) {
// same domain scale, only clip
data = Clip(data, clip_min_imm, clip_max_imm);
return QRealizeIntExprNode::make(data, dom_scale, n->dtype);
}

float shift_nbit = std::log2(odom_scale_imm / idom_scale_imm);
// int32->int8
CHECK_GT(shift_nbit, 0);
if (static_cast<int>(shift_nbit) == shift_nbit) {
// use shift
// use right shift
if (cfg->round_for_shift) {
float round_bias = std::pow(2.0, shift_nbit - 1);
data = Add(data, MakeConstantScalar(cfg->dtype_activation, static_cast<int>(round_bias)));
Expand Down

0 comments on commit 66cd036

Please sign in to comment.