From 9ad6ada9deaf084eb29dd6c25ad46f73f178421d Mon Sep 17 00:00:00 2001 From: Marat Dukhan Date: Thu, 27 Dec 2018 11:55:02 -0800 Subject: [PATCH] Update QNNPACK (#15561) Summary: Pull Request resolved: https://github.com/pytorch/pytorch/pull/15561 - Update QNNPACK submodule to master (API-incompatible) - Do matching changes in Caffe2 Int8 operators Reviewed By: dreiss Differential Revision: D13551322 fbshipit-source-id: 066f9087061167f7d7cfbc1c8f8628dfa93d056e --- caffe2/operators/quantized/int8_add_op.h | 1 + caffe2/operators/quantized/int8_average_pool_op.h | 2 ++ caffe2/operators/quantized/int8_channel_shuffle_op.h | 1 + caffe2/operators/quantized/int8_conv_op.h | 1 + caffe2/operators/quantized/int8_conv_transpose_op.h | 1 + caffe2/operators/quantized/int8_fc_op.h | 4 ++-- caffe2/operators/quantized/int8_leaky_relu_op.h | 1 + caffe2/operators/quantized/int8_max_pool_op.h | 1 + caffe2/operators/quantized/int8_relu_op.h | 1 + caffe2/operators/quantized/int8_sigmoid_op.h | 1 + caffe2/operators/quantized/int8_softmax_op.h | 1 + third_party/QNNPACK | 2 +- 12 files changed, 14 insertions(+), 3 deletions(-) diff --git a/caffe2/operators/quantized/int8_add_op.h b/caffe2/operators/quantized/int8_add_op.h index 4f3019500f2b..391bf86e4611 100644 --- a/caffe2/operators/quantized/int8_add_op.h +++ b/caffe2/operators/quantized/int8_add_op.h @@ -68,6 +68,7 @@ class Int8AddOp final : public Operator { static_cast(Y_zero_point), Y_scale, activationLimits(Y_scale, Y_zero_point, Ac).first, activationLimits(Y_scale, Y_zero_point, Ac).second, + 0 /* flags */, &qnnpackOperator_); CAFFE_ENFORCE( createStatus == qnnp_status_success, diff --git a/caffe2/operators/quantized/int8_average_pool_op.h b/caffe2/operators/quantized/int8_average_pool_op.h index 58ac4adc365c..1d542ce23019 100644 --- a/caffe2/operators/quantized/int8_average_pool_op.h +++ b/caffe2/operators/quantized/int8_average_pool_op.h @@ -62,6 +62,7 @@ class Int8AveragePoolOp final : public ConvPoolOpBase { Y->zero_point, Y->scale, activationLimits(Y->scale, Y->zero_point, Ac).first, activationLimits(Y->scale, Y->zero_point, Ac).second, + 0 /* flags */, &this->qnnpackGlobalOperator_); CAFFE_ENFORCE( createStatus == qnnp_status_success, @@ -102,6 +103,7 @@ class Int8AveragePoolOp final : public ConvPoolOpBase { Y->zero_point, Y->scale, activationLimits(Y->scale, Y->zero_point, Ac).first, activationLimits(Y->scale, Y->zero_point, Ac).second, + 0 /* flags */, &this->qnnpackOperator_); CAFFE_ENFORCE( createStatus == qnnp_status_success, diff --git a/caffe2/operators/quantized/int8_channel_shuffle_op.h b/caffe2/operators/quantized/int8_channel_shuffle_op.h index beef35eece6f..0037e1d7e6dd 100644 --- a/caffe2/operators/quantized/int8_channel_shuffle_op.h +++ b/caffe2/operators/quantized/int8_channel_shuffle_op.h @@ -54,6 +54,7 @@ class Int8ChannelShuffleOp final : public ConvPoolOpBase { const qnnp_status createStatus = qnnp_create_channel_shuffle_nc_x8( G /* groups */, C / G /* group channels */, + 0 /* flags */, &this->qnnpackOperator_); CAFFE_ENFORCE( createStatus == qnnp_status_success, diff --git a/caffe2/operators/quantized/int8_conv_op.h b/caffe2/operators/quantized/int8_conv_op.h index ad5b6d1a8a1c..51afa7a38e7d 100644 --- a/caffe2/operators/quantized/int8_conv_op.h +++ b/caffe2/operators/quantized/int8_conv_op.h @@ -93,6 +93,7 @@ class Int8ConvOp final : public ConvPoolOpBase { Y->scale, activationLimits(Y->scale, Y->zero_point, Ac).first, activationLimits(Y->scale, Y->zero_point, Ac).second, + 0 /* flags */, &this->qnnpackObject_); CAFFE_ENFORCE( createStatus == qnnp_status_success, diff --git a/caffe2/operators/quantized/int8_conv_transpose_op.h b/caffe2/operators/quantized/int8_conv_transpose_op.h index 85d2e4ede7a9..ad8ab3198fca 100644 --- a/caffe2/operators/quantized/int8_conv_transpose_op.h +++ b/caffe2/operators/quantized/int8_conv_transpose_op.h @@ -92,6 +92,7 @@ class Int8ConvTransposeOp final : public ConvTransposeUnpoolBase { Y->scale, std::numeric_limits::min(), std::numeric_limits::max(), + 0 /* flags */, &this->qnnpackObject_); CAFFE_ENFORCE( createStatus == qnnp_status_success, diff --git a/caffe2/operators/quantized/int8_fc_op.h b/caffe2/operators/quantized/int8_fc_op.h index 313fd6b8270f..398e8e101d94 100644 --- a/caffe2/operators/quantized/int8_fc_op.h +++ b/caffe2/operators/quantized/int8_fc_op.h @@ -65,6 +65,7 @@ class Int8FCOp final : public Operator { Y->scale, std::numeric_limits::min(), std::numeric_limits::max(), + 0 /* flags */, &this->qnnpackObject_); CAFFE_ENFORCE( createStatus == qnnp_status_success, @@ -88,8 +89,7 @@ class Int8FCOp final : public Operator { inputPtr, K /* input stride */, Y->t.template mutable_data(), - N /* output stride */, - nullptr /* threadpool */); + N /* output stride */); CAFFE_ENFORCE( setupStatus == qnnp_status_success, "failed to setup QNNPACK fully connected operator"); diff --git a/caffe2/operators/quantized/int8_leaky_relu_op.h b/caffe2/operators/quantized/int8_leaky_relu_op.h index 81ab8e16918f..ef7dc1fd6d2d 100644 --- a/caffe2/operators/quantized/int8_leaky_relu_op.h +++ b/caffe2/operators/quantized/int8_leaky_relu_op.h @@ -62,6 +62,7 @@ class Int8LeakyReluOp final : public Operator { static_cast(Y_zero_point), Y_scale, 0 /* output min */, 255 /* output max */, + 0 /* flags */, &qnnpackOperator_); CAFFE_ENFORCE( createStatus == qnnp_status_success, diff --git a/caffe2/operators/quantized/int8_max_pool_op.h b/caffe2/operators/quantized/int8_max_pool_op.h index c56c011fc609..ce65bb49cc04 100644 --- a/caffe2/operators/quantized/int8_max_pool_op.h +++ b/caffe2/operators/quantized/int8_max_pool_op.h @@ -55,6 +55,7 @@ class Int8MaxPoolOp final : public ConvPoolOpBase { channels, activationLimits(Y->scale, Y->zero_point, Ac).first, activationLimits(Y->scale, Y->zero_point, Ac).second, + 0 /* flags */, &this->qnnpackOperator_); CAFFE_ENFORCE( createStatus == qnnp_status_success, diff --git a/caffe2/operators/quantized/int8_relu_op.h b/caffe2/operators/quantized/int8_relu_op.h index d179087cfee5..843f8aa4c455 100644 --- a/caffe2/operators/quantized/int8_relu_op.h +++ b/caffe2/operators/quantized/int8_relu_op.h @@ -47,6 +47,7 @@ class Int8ReluOp final : public Operator { 1 /* channels */, X.zero_point /* output min */, 255 /* output max */, + 0 /* flags */, &qnnpackOperator_); CAFFE_ENFORCE( createStatus == qnnp_status_success, diff --git a/caffe2/operators/quantized/int8_sigmoid_op.h b/caffe2/operators/quantized/int8_sigmoid_op.h index feed15c15d0b..5773bdea4f6d 100644 --- a/caffe2/operators/quantized/int8_sigmoid_op.h +++ b/caffe2/operators/quantized/int8_sigmoid_op.h @@ -55,6 +55,7 @@ class Int8SigmoidOp final : public Operator { static_cast(Y_zero_point), Y_scale, 0 /* output min */, 255 /* output max */, + 0 /* flags */, &qnnpackOperator_); CAFFE_ENFORCE( createStatus == qnnp_status_success, diff --git a/caffe2/operators/quantized/int8_softmax_op.h b/caffe2/operators/quantized/int8_softmax_op.h index d1a532b05045..e625df75b9d3 100644 --- a/caffe2/operators/quantized/int8_softmax_op.h +++ b/caffe2/operators/quantized/int8_softmax_op.h @@ -55,6 +55,7 @@ class Int8SoftmaxOp final : public Operator { X.t.numel() / X.t.size(0) /* channels */, X_scale, static_cast(Y_zero_point), Y_scale, + 0 /* flags */, &qnnpackOperator_); CAFFE_ENFORCE( createStatus == qnnp_status_success, diff --git a/third_party/QNNPACK b/third_party/QNNPACK index dd56525aefd4..6c62fddc6d15 160000 --- a/third_party/QNNPACK +++ b/third_party/QNNPACK @@ -1 +1 @@ -Subproject commit dd56525aefd497f2b3098ac39107cec96d576acf +Subproject commit 6c62fddc6d15602be27e9e4cbb9e985151d2fa82