From 8eb88d51f250b994c73936e67f34b9327e1abb85 Mon Sep 17 00:00:00 2001 From: Edward Shogulin Date: Tue, 9 Jun 2020 06:59:37 +0300 Subject: [PATCH] [LPT] GPU tests were fixed --- .../network_helper.hpp | 2 -- .../src/fully_connected.cpp | 18 ++++++------------ .../src/network_helper.cpp | 14 -------------- .../gemm_transformation.cpp | 2 +- .../layer_transformation.cpp | 3 ++- .../gemm_transformation.cpp | 4 ---- 6 files changed, 9 insertions(+), 34 deletions(-) diff --git a/inference-engine/src/low_precision_transformations/include/low_precision_transformations/network_helper.hpp b/inference-engine/src/low_precision_transformations/include/low_precision_transformations/network_helper.hpp index 069d9300f27..8e2001eb8b5 100644 --- a/inference-engine/src/low_precision_transformations/include/low_precision_transformations/network_helper.hpp +++ b/inference-engine/src/low_precision_transformations/include/low_precision_transformations/network_helper.hpp @@ -93,8 +93,6 @@ public: static Blob::Ptr getBlob(const CNNLayer* layer, const std::string& blobName); - static bool blobValuesAreEqual(const CNNLayer& layer, const std::string& blobName); - static std::shared_ptr getFloatData(const CNNLayerPtr& layer, const std::string& blobName); static std::shared_ptr getFloatData(const Blob::Ptr& srcBlob); diff --git a/inference-engine/src/low_precision_transformations/src/fully_connected.cpp b/inference-engine/src/low_precision_transformations/src/fully_connected.cpp index 4981f08f577..6da5e9bfbcd 100644 --- a/inference-engine/src/low_precision_transformations/src/fully_connected.cpp +++ b/inference-engine/src/low_precision_transformations/src/fully_connected.cpp @@ -68,21 +68,15 @@ bool FullyConnectedTransformation::canBeTransformed(const TransformationContext& return false; } - // 3D tensor custom validation - if ((inTensorDims.size() == 3ul) && - ((!CNNNetworkHelper::blobValuesAreEqual(*scaleShift, "weights")) || (!CNNNetworkHelper::blobValuesAreEqual(*scaleShift, "biases")))) { + std::vector dequantizationScales; + std::vector dequantizationShifts; + fillFromDequantizationLayer(*scaleShift, dequantizationScales, dequantizationShifts); + + if ((inTensorDims.size() == 3ul) && (!DequantizationDetails::isPerTensor(dequantizationScales, dequantizationShifts))) { return false; } - const Blob::Ptr prevDequantizationScaleBlob = CNNNetworkHelper::getBlob(scaleShift, "weights"); - const size_t prevDequantizationScaleBlobSize = prevDequantizationScaleBlob->size(); - if (prevDequantizationScaleBlobSize != inTensorDims[1]) { - return false; - } - - const Blob::Ptr prevDequantizationShiftBlob = CNNNetworkHelper::getBlob(scaleShift, "biases"); - const size_t prevDequantizationShiftBlobSize = prevDequantizationShiftBlob->size(); - if (prevDequantizationShiftBlobSize != inTensorDims[1]) { + if ((dequantizationScales.size() != inTensorDims[1]) || (dequantizationShifts.size() != inTensorDims[1])) { return false; } diff --git a/inference-engine/src/low_precision_transformations/src/network_helper.cpp b/inference-engine/src/low_precision_transformations/src/network_helper.cpp index addc6171e49..5318ebaf4d8 100644 --- a/inference-engine/src/low_precision_transformations/src/network_helper.cpp +++ b/inference-engine/src/low_precision_transformations/src/network_helper.cpp @@ -615,20 +615,6 @@ Blob::Ptr CNNNetworkHelper::getBlob(const CNNLayer* layer, const std::string& bl return it->second; } -bool CNNNetworkHelper::blobValuesAreEqual(const CNNLayer& layer, const std::string& blobName) { - const Blob::Ptr blob = CNNNetworkHelper::getBlob(&layer, blobName); - const std::shared_ptr buffer = CNNNetworkHelper::getFloatData(blob); - if (!std::equal( - buffer.get(), - buffer.get() + blob->size(), - buffer.get(), - [](const float value1, const float value2) { return value1 == value2; })) { - return false; - } - - return true; -} - Blob::Ptr CNNNetworkHelper::getBlob(CNNLayerPtr layer, const std::string& blobName) { return getBlob(layer.get(), blobName); } diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/gemm_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/gemm_transformation.cpp index afe6987ed9f..4dc0c21c226 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/gemm_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/gemm_transformation.cpp @@ -20,7 +20,7 @@ const std::vector dimensions = { }; const std::vector trasformationParamValues = { - LayerTestsUtils::LayerTransformationParamsFactory::createParams() + LayerTestsUtils::LayerTransformationParamsFactory::createParamsI8I8() }; INSTANTIATE_TEST_CASE_P(LPT, GemmTransformation, diff --git a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/layer_transformation.cpp b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/layer_transformation.cpp index f75b3a4d4b2..da8c15ae342 100644 --- a/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/layer_transformation.cpp +++ b/inference-engine/tests/functional/plugin/gpu/shared_tests_instances/low_precision_transformations/layer_transformation.cpp @@ -38,6 +38,7 @@ #include "low_precision_transformations/convolution.hpp" #include "low_precision_transformations/scaleshift_to_convolution.hpp" #include "low_precision_transformations/fully_connected.hpp" +#include "low_precision_transformations/gemm.hpp" using namespace InferenceEngine::details; #include "common_test_utils/common_utils.hpp" @@ -52,7 +53,7 @@ InferenceEngine::details::LowPrecisionTransformations LayerTransformation::getLo return LowPrecisionTransformer::getAllTransformations(params) .add( InferenceEngine::details::LayerTransformation::Params(params).setSupportAsymmetricQuantization(false), "FullyConnected") - .add( + .add( InferenceEngine::details::LayerTransformation::Params(params).setSupportAsymmetricQuantization(false), "GEMM"); } diff --git a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/gemm_transformation.cpp b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/gemm_transformation.cpp index b79cf258d53..4a645b17ced 100644 --- a/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/gemm_transformation.cpp +++ b/inference-engine/tests/functional/plugin/shared/src/low_precision_transformations/gemm_transformation.cpp @@ -104,10 +104,6 @@ void GemmTransformation::validate() { TEST_P(GemmTransformation, CompareWithRefImpl) { Run(); - - if (targetDevice == std::string{CommonTestUtils::DEVICE_GPU}) { - PluginCache::get().reset(); - } }; } // namespace LayerTestsDefinitions