blob: 77a6cb264ccac8566f213da8a249740226fa94c6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
// Copyright (C) 2018 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
/**
* @brief a header file for IInferRequest interface
* @file ie_iinfer_request.hpp
*/
#pragma once
#include <map>
#include <string>
#include <vector>
#include <memory>
#include <unordered_set>
#include <ie_common.h>
#include <cpp_interfaces/impl/ie_infer_request_internal.hpp>
#include <cpp_interfaces/impl/ie_executable_network_internal.hpp>
#include <cpp/ie_infer_request.hpp>
#include <cpp/ie_executable_network.hpp>
namespace HeteroPlugin {
class HeteroInferRequest : public InferenceEngine::InferRequestInternal {
public:
typedef std::shared_ptr<HeteroInferRequest> Ptr;
struct SubRequestDesc {
InferenceEngine::ExecutableNetwork::Ptr _network;
InferenceEngine::InferRequest::Ptr _request;
std::unordered_set<std::string> _iNames;
std::unordered_set<std::string> _oNames;
InferenceEngine::ProfilingTask _profilingTask;
};
using SubRequestsList = std::vector<SubRequestDesc>;
explicit HeteroInferRequest(InferenceEngine::InputsDataMap networkInputs,
InferenceEngine::OutputsDataMap networkOutputs,
const SubRequestsList &inferRequests);
void InferImpl() override;
void
GetPerformanceCounts(std::map<std::string, InferenceEngine::InferenceEngineProfileInfo> &perfMap) const override;
void updateInOutIfNeeded();
void setCallbackSequence();
void startFirstAsyncRequest();
InferenceEngine::StatusCode waitAllRequests(int64_t millis_timeout);
void setCallbackForLastRequest(std::function<void(InferenceEngine::InferRequest, InferenceEngine::StatusCode)>& callback);
bool isAnyRequestBusy();
private:
SubRequestsList _inferRequests;
std::map<std::string, InferenceEngine::Blob::Ptr> _blobs;
};
} // namespace HeteroPlugin
|