[TimeTests] Add test case for testing first time inference with caching enabled (#4933)
Important note: Invoker (e.g. test_timetest.py) must ignore first measurement when cache is not generated
This commit is contained in:
parent
325b5564f3
commit
ca99333982
66
tests/time_tests/src/timetests/timetest_infer_cache.cpp
Normal file
66
tests/time_tests/src/timetests/timetest_infer_cache.cpp
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
// Copyright (C) 2021 Intel Corporation
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <inference_engine.hpp>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
#include "timetests_helper/timer.h"
|
||||||
|
#include "timetests_helper/utils.h"
|
||||||
|
using namespace InferenceEngine;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Function that contain executable pipeline which will be called from
|
||||||
|
* main(). The function should not throw any exceptions and responsible for
|
||||||
|
* handling it by itself.
|
||||||
|
*/
|
||||||
|
int runPipeline(const std::string &model, const std::string &device) {
|
||||||
|
auto pipeline = [](const std::string &model, const std::string &device) {
|
||||||
|
Core ie;
|
||||||
|
CNNNetwork cnnNetwork;
|
||||||
|
ExecutableNetwork exeNetwork;
|
||||||
|
InferRequest inferRequest;
|
||||||
|
|
||||||
|
{
|
||||||
|
SCOPED_TIMER(first_inference_latency);
|
||||||
|
{
|
||||||
|
SCOPED_TIMER(load_plugin);
|
||||||
|
ie.GetVersions(device);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
SCOPED_TIMER(load_network);
|
||||||
|
ie.SetConfig({{"CACHE_DIR", "models_cache"}});
|
||||||
|
exeNetwork = ie.LoadNetwork(model, device);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
SCOPED_TIMER(first_inference);
|
||||||
|
inferRequest = exeNetwork.CreateInferRequest();
|
||||||
|
{
|
||||||
|
SCOPED_TIMER(fill_inputs)
|
||||||
|
const InferenceEngine::ConstInputsDataMap inputsInfo(exeNetwork.GetInputsInfo());
|
||||||
|
fillBlobs(inferRequest, inputsInfo, 1);
|
||||||
|
}
|
||||||
|
inferRequest.Infer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
pipeline(model, device);
|
||||||
|
} catch (const InferenceEngine::Exception &iex) {
|
||||||
|
std::cerr
|
||||||
|
<< "Inference Engine pipeline failed with Inference Engine exception:\n"
|
||||||
|
<< iex.what();
|
||||||
|
return 1;
|
||||||
|
} catch (const std::exception &ex) {
|
||||||
|
std::cerr << "Inference Engine pipeline failed with exception:\n"
|
||||||
|
<< ex.what();
|
||||||
|
return 2;
|
||||||
|
} catch (...) {
|
||||||
|
std::cerr << "Inference Engine pipeline failed\n";
|
||||||
|
return 3;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user