diff options
author | Hanjoung Lee <hanjoung.lee@samsung.com> | 2020-09-10 13:46:16 +0900 |
---|---|---|
committer | Chunseok Lee <chunseok.lee@samsung.com> | 2020-09-15 11:10:32 +0900 |
commit | bd3b73d5dd04eb8415b231c9b8cb74552aae142e (patch) | |
tree | f8716e991ea2ae73c868e6e825425d5e2a6d568f /tests/nnfw_api/src/one_op_tests | |
parent | 5828ffdff817bbc93dba5384fa67b934ae6fb2b4 (diff) | |
download | nnfw-bd3b73d5dd04eb8415b231c9b8cb74552aae142e.tar.gz nnfw-bd3b73d5dd04eb8415b231c9b8cb74552aae142e.tar.bz2 nnfw-bd3b73d5dd04eb8415b231c9b8cb74552aae142e.zip |
Add logging and test cases for Controlflow ops (#4129)tizen_6.0.m2_releasesubmit/tizen_6.0_hotfix/20201103.114803submit/tizen_6.0_hotfix/20201102.192503submit/tizen_6.0/20201029.205103submit/tizen/20200915.021158accepted/tizen/unified/20200915.060157accepted/tizen/6.0/unified/hotfix/20201103.051019accepted/tizen/6.0/unified/20201030.121029tizen_6.0_hotfixtizen_20201012accepted/tizen_6.0_unified_hotfix
- Log subgraph calls during execution so we can trace the execution stack.
- Add a OneOp TC for If
This is a squashed commit of 465828c0 8aba0221 and 117a4712 .
ONE-DCO-1.0-Signed-off-by: Hanjoung Lee <hanjoung.lee@samsung.com>
Change-Id: Idfa7044145b855222ab8ab382291e2d05af63f78
Signed-off-by: Chunseok Lee <chunseok.lee@samsung.com>
Diffstat (limited to 'tests/nnfw_api/src/one_op_tests')
-rw-r--r-- | tests/nnfw_api/src/one_op_tests/If.cc | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/tests/nnfw_api/src/one_op_tests/If.cc b/tests/nnfw_api/src/one_op_tests/If.cc new file mode 100644 index 000000000..2eb1d3420 --- /dev/null +++ b/tests/nnfw_api/src/one_op_tests/If.cc @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "GenModelTest.h" + +#include <memory> + +TEST_F(GenModelTest, OneOp_If) +{ + // The model looks just like the below pseudocode + // + // function model(x) + // { + // if (x < 0.0) + // return -100.0; + // else + // return 100.0; + // } + + CircleGen cgen; + + // constant buffers + std::vector<float> comp_data{0.0}; + uint32_t comp_buf = cgen.addBuffer(comp_data); + std::vector<float> then_data{-100}; + uint32_t then_buf = cgen.addBuffer(then_data); + std::vector<float> else_data{100}; + uint32_t else_buf = cgen.addBuffer(else_data); + + // primary subgraph + { + int x = cgen.addTensor({{1}, circle::TensorType_FLOAT32}); + int comp = cgen.addTensor({{1}, circle::TensorType_FLOAT32, comp_buf}); + int cond = cgen.addTensor({{1}, circle::TensorType_BOOL}); + cgen.addOperatorLess({{x, comp}, {cond}}); + + int ret = cgen.addTensor({{1}, circle::TensorType_FLOAT32}); + cgen.addOperatorIf({{cond}, {ret}}, 1, 2); + + cgen.setInputsAndOutputs({x}, {ret}); + } + + // then subgraph + { + cgen.nextSubgraph(); + int ret = cgen.addTensor({{1}, circle::TensorType_FLOAT32, then_buf}); + cgen.setInputsAndOutputs({}, {ret}); + } + + // else subgraph + { + cgen.nextSubgraph(); + int ret = cgen.addTensor({{1}, circle::TensorType_FLOAT32, else_buf}); + cgen.setInputsAndOutputs({}, {ret}); + } + + _context = std::make_unique<GenModelTestContext>(cgen.finish()); + _context->addTestCase({{{-1.0}}, {{-100.0}}}); + _context->addTestCase({{{1.0}}, {{100.0}}}); + _context->setBackends({"cpu"}); + + SUCCEED(); +} |