Go to the documentation of this file.
22 #ifndef COMPUTATION_GRAPH_HANDLE_H
23 #define COMPUTATION_GRAPH_HANDLE_H
58 std::map<std::string, InputEngineNode*>
_inputs;
63 std::map<std::string, OutputEngineNode*>
_outputs;
76 boost::python::dict globalDict;
79 ComputationalGraph::ExecMode::OUTPUT_DRIVEN, globalDict);
85 for(
const auto &engine : engines) {
86 std::string input_id = engine->engineName()+
"_input";
87 std::string output_id = engine->engineName()+
"_output";
97 _outputs[engine->engineName()] = o_node;
112 for(
auto &engine : engines)
113 if(
_inputs.count(engine->engineName())) {
114 _inputs[engine->engineName()]->setDataPacks(
115 engine->getDataPacksFromEngine(
_inputs[engine->engineName()]->requestedDataPacks()));
118 catch(std::exception &)
128 void compute(
const std::vector<EngineClientInterfaceSharedPtr> & engines)
override
135 for(
auto &engine : engines)
136 if(
_outputs.count(engine->engineName()))
137 _outputs[engine->engineName()]->setDoCompute(
true);
154 for(
const auto &engine : engines)
155 if(
_outputs.count(engine->engineName())) {
157 auto devs =
_outputs[engine->engineName()]->getDataPacks();
158 engine->sendDataPacksToEngine(devs);
160 catch (std::exception &e) {
162 "Failed to send datapacks to engine \"" + engine->engineName() +
"\"");
171 #endif // COMPUTATION_GRAPH_HANDLE_H
Uses a Computation Graph to execute datapack transformation operations.
Definition: computational_graph_handle.h:43
void compute(const std::vector< EngineClientInterfaceSharedPtr > &engines) override
Perform computations on datapacks.
Definition: computational_graph_handle.h:128
std::map< std::string, OutputEngineNode * > _outputs
Map containing all OutputEngineNodes associated with this simulation.
Definition: computational_graph_handle.h:63
void createPythonGraphFromConfig(const nlohmann::json &config, const ComputationalGraph::ExecMode &execMode, const boost::python::dict &globalDict)
Definition: graph_utils.h:32
void compute()
Executes ComputationalGraph.
Definition: computational_graph_manager.h:126
std::map< std::string, InputEngineNode * > _inputs
Map containing all InputEngineNodes associated with this simulation.
Definition: computational_graph_handle.h:58
void init(const jsonSharedPtr &simConfig, const engine_interfaces_t &engines) override
Initializes the handler.
Definition: computational_graph_handle.h:72
InputIterationNode * _iteration
Pointer to the iteration_node of the graph.
Definition: computational_graph_handle.h:69
void sendDataPacksToEngines(const std::vector< EngineClientInterfaceSharedPtr > &engines) override
Send datapacks to engines.
Definition: computational_graph_handle.h:149
std::shared_ptr< nlohmann::json > jsonSharedPtr
Definition: json_schema_utils.h:35
Helper class for FTILoop encapsulating the datapack operations between Engines in a simulation loop.
Definition: datapack_handle.h:34
static ComputationalGraphManager & getInstance()
Get singleton instance of ComputationalGraphManager.
Definition: computational_graph_manager.cpp:31
unsigned long _simulationIteration
Definition: datapack_handle.h:131
void setComputePeriod(unsigned int computePeriod)
Definition: output_node.h:98
ComputationalNode * getNode(const std::string &id)
Retrieve a node from the graph as a pointer.
Definition: computational_graph_manager.h:95
bool _spinROS
Definition: computational_graph_handle.h:52
static EXCEPTION logCreate(LOG_EXCEPTION_T &exception, const std::string &msg, NRPLogger::spdlog_out_fcn_t spdlogCall=NRPLogger::critical)
Definition: nrp_exceptions.h:73
ComputationalGraphHandle(SimulationDataManager *simulationDataManager, bool slaveMode=false, bool spinROS=false)
Definition: computational_graph_handle.h:45
Manages all simulation data.
Definition: simulation_data_manager.h:53
PyGILState_STATE _pyGILState
Definition: computational_graph_handle.h:53
std::pair< InputClockNode *, InputIterationNode * > findTimeNodes()
Definition: graph_utils.h:61
bool _slaveMode
Definition: computational_graph_handle.h:51
void updateDataPacksFromEngines(const std::vector< EngineClientInterfaceSharedPtr > &engines) override
Request datapacks from engines.
Definition: computational_graph_handle.h:105
InputClockNode * _clock
Pointer to the clock_node of the graph.
Definition: computational_graph_handle.h:66
Singleton class managing a computational graph.
Definition: computational_graph_manager.h:45
SimulationTime _simulationTime
Definition: datapack_handle.h:130
Output node used to connect the computational graph with an EngineClient.
Definition: output_node.h:37
std::vector< EngineClientInterfaceSharedPtr > engine_interfaces_t
Definition: datapack_handle.h:38