Kaspersky Neuromorphic Platform  1.0.0
API Reference
Loading...
Searching...
No Matches
model_executor.h
Go to the documentation of this file.
1
22#pragma once
23
24#include <knp/core/impexp.h>
27#include <knp/framework/model.h>
30
31#include <filesystem>
32#include <functional>
33#include <memory>
34#include <unordered_map>
35#include <utility>
36#include <vector>
37
38
42namespace knp::framework
43{
47class KNP_DECLSPEC ModelExecutor
48{
49public:
57 knp::framework::Model &model, std::shared_ptr<core::Backend> backend, ModelLoader::InputChannelMap i_map)
58 : loader_(backend, i_map)
59 {
60 loader_.load(model);
61 }
62
63public:
67 void start();
68
73 void start(core::Backend::RunPredicate run_predicate);
74
78 void stop();
79
80public:
87 template <class Message>
88 void add_observer(monitoring::MessageProcessor<Message> &&message_processor, const std::vector<core::UID> &senders)
89 {
90 observers_.emplace_back(monitoring::MessageObserver<Message>(
91 get_backend()->get_message_bus().create_endpoint(), std::move(message_processor), core::UID{true}));
92
93 std::visit([&senders](auto &entity) { entity.subscribe(senders); }, observers_.back());
94 }
95
99 void start_learning() { get_backend()->start_learning(); }
100
104 void stop_learning() { get_backend()->stop_learning(); }
105
110 std::shared_ptr<core::Backend> get_backend() { return loader_.get_backend(); }
111
116 auto &get_loader() { return loader_; }
117
118private:
119 knp::core::BaseData base_;
120 ModelLoader loader_;
121
122 std::vector<monitoring::AnyObserverVariant> observers_;
123};
124} // namespace knp::framework
Backend loader interface.
The ModelExecutor class is a definition of an executor that runs the uploaded model on the specified ...
void stop_learning()
Lock synapse weights.
std::shared_ptr< core::Backend > get_backend()
Get pointer to backend object.
void add_observer(monitoring::MessageProcessor< Message > &&message_processor, const std::vector< core::UID > &senders)
Add observer to executor.
ModelExecutor(knp::framework::Model &model, std::shared_ptr< core::Backend > backend, ModelLoader::InputChannelMap i_map)
ModelExecutor constructor.
void start_learning()
Unlock synapse weights.
auto & get_loader()
Get model loader object.
void stop()
Stop model execution.
void start()
Start model execution.
void start(core::Backend::RunPredicate run_predicate)
Start model execution.
Header for input converter.
Model interface.
Model loader interface.
Framework namespace.
Observer class that unloads messages and stores them.