From: Jan Eilers Date: Mon, 29 Jun 2020 15:48:44 +0000 (+0100) Subject: IVGCVSW-5021 Fix failure in SplitV X-Git-Tag: submit/tizen/20210421.062230~459 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c0761e9a82ec4d6bd4a81fda018d624659b629a7;p=platform%2Fupstream%2Farmnn.git IVGCVSW-5021 Fix failure in SplitV Signed-off-by: Jan Eilers Change-Id: I587f601d3e1b9ea11fbc3dc379f24c5ebdcf3cf8 --- diff --git a/src/armnnTfLiteParser/TfLiteParser.cpp b/src/armnnTfLiteParser/TfLiteParser.cpp index 1737da8..7f68199 100644 --- a/src/armnnTfLiteParser/TfLiteParser.cpp +++ b/src/armnnTfLiteParser/TfLiteParser.cpp @@ -2689,7 +2689,7 @@ void TfLiteParser::ParseSplitV(size_t subgraphIndex, size_t operatorIndex) boost::str( boost::format( "The number of dimensions: %1% for input tensors of the " - "split op cannot be greater than %2% %3%") + "SplitV op cannot be greater than %2% %3%") % inputTensorInfo.GetNumDimensions() % MaxNumOfTensorDimensions % CHECK_LOCATION().AsString())); @@ -2703,7 +2703,6 @@ void TfLiteParser::ParseSplitV(size_t subgraphIndex, size_t operatorIndex) // Set split sizes CHECK_VALID_SIZE(splitsInfo.GetNumDimensions(), 1); - std::vector splitsData(0); unsigned int numSplits{0}; if(options) @@ -2720,17 +2719,11 @@ void TfLiteParser::ParseSplitV(size_t subgraphIndex, size_t operatorIndex) throw ParseException("SplitV has invalid number of splits"); } - splitsData.resize(numSplits); + std::vector splitsData(numSplits); BufferRawPtr splitsBufferPtr = GetBuffer(m_Model, splitsTensor->buffer); - unsigned int idx{0}; - - for(auto& split: splitsData) - { - split = splitsBufferPtr->data[idx]; - idx++; - } + ::memcpy(splitsData.data(), splitsBufferPtr->data.data(), splitsInfo.GetNumBytes()); - idx = 0; + unsigned int idx = 0; int numInferred{0}; unsigned int inferIdx{0}; int splitSum{0}; diff --git a/src/armnnTfLiteParser/test/SplitV.cpp b/src/armnnTfLiteParser/test/SplitV.cpp index 59afeec..9541114 100644 --- a/src/armnnTfLiteParser/test/SplitV.cpp +++ b/src/armnnTfLiteParser/test/SplitV.cpp @@ -121,7 +121,7 @@ struct SplitVFixture : public ParserFlatbuffersFixture struct SimpleSplitVAxisOneFixture : SplitVFixture { SimpleSplitVAxisOneFixture() - : SplitVFixture( "[ 4, 2, 2, 2 ]", "[ 1, 3 ]", "[ 2 ]","[ ]", "2", + : SplitVFixture( "[ 4, 2, 2, 2 ]", "[ 1, 0, 0, 0, 3, 0, 0, 0 ]", "[ 2 ]","[ ]", "2", "[ 1, 2, 2, 2 ]", "[ 3, 2, 2, 2 ]", "[ 0, 0, 0, 0 ]", "FLOAT32") {} }; @@ -143,7 +143,7 @@ BOOST_FIXTURE_TEST_CASE(ParseAxisOneSplitVTwo, SimpleSplitVAxisOneFixture) struct SimpleSplitVAxisTwoFixture : SplitVFixture { SimpleSplitVAxisTwoFixture() - : SplitVFixture( "[ 2, 4, 2, 2 ]", "[ 3, 1 ]", "[ 2 ]","[ ]", "2", + : SplitVFixture( "[ 2, 4, 2, 2 ]", "[ 3, 0, 0, 0, 1, 0, 0, 0 ]", "[ 2 ]","[ ]", "2", "[ 2, 3, 2, 2 ]", "[ 2, 1, 2, 2 ]", "[ 1, 0, 0, 0 ]", "FLOAT32") {} }; @@ -165,7 +165,7 @@ BOOST_FIXTURE_TEST_CASE(ParseAxisTwoSplitVTwo, SimpleSplitVAxisTwoFixture) struct SimpleSplitVAxisThreeFixture : SplitVFixture { SimpleSplitVAxisThreeFixture() - : SplitVFixture( "[ 2, 2, 4, 2 ]", "[ 1, 3 ]", "[ 2 ]","[ ]", "2", + : SplitVFixture( "[ 2, 2, 4, 2 ]", "[ 1, 0, 0, 0, 3, 0, 0, 0 ]", "[ 2 ]","[ ]", "2", "[ 2, 2, 1, 2 ]", "[ 2, 2, 3, 2 ]", "[ 2, 0, 0, 0 ]", "FLOAT32") {} }; @@ -187,7 +187,7 @@ BOOST_FIXTURE_TEST_CASE(ParseAxisThreeSplitVTwo, SimpleSplitVAxisThreeFixture) struct SimpleSplitVAxisFourFixture : SplitVFixture { SimpleSplitVAxisFourFixture() - : SplitVFixture( "[ 2, 2, 2, 4 ]", "[ 3, 1 ]", "[ 2 ]","[ ]", "2", + : SplitVFixture( "[ 2, 2, 2, 4 ]", "[ 3, 0, 0, 0, 1, 0, 0, 0 ]", "[ 2 ]","[ ]", "2", "[ 2, 2, 2, 3 ]", "[ 2, 2, 2, 1 ]", "[ 3, 0, 0, 0 ]", "FLOAT32") {} };