Skip to main content

StreamScheduler.h File

Stage executor for fair multi-stream scheduling. More...

Included Headers

#include "graph/StageExecutor.h" #include "graph/nodes/StageNode.h" #include <cstddef> #include <cstdint> #include <deque> #include <memory> #include <string> #include <unordered_map> #include <unordered_set> #include <utility> #include <vector>

Namespaces Index

namespacesimaai
namespaceneat
namespacegraph
namespacenodes

Classes Index

structStreamSchedulerOptions

Configuration for a StreamScheduler stage. More...

classStreamScheduler

Stage executor that round-robin-schedules samples across multiple streams. More...

Description

Stage executor for fair multi-stream scheduling.

File Listing

The file content with the documentation metadata removed is:

1
6#pragma once
7
10
11#include <cstddef>
12#include <cstdint>
13#include <deque>
14#include <memory>
15#include <string>
16#include <unordered_map>
17#include <unordered_set>
18#include <utility>
19#include <vector>
20
22
31enum class StreamDropPolicy {
32 DropOldest = 0,
34};
35
45 std::size_t per_stream_queue = 2;
48 int max_batch = 1;
49};
50
63public:
66
68 void set_ports(const StagePorts& ports) override;
70 void on_input(StageMsg&& msg, std::vector<StageOutMsg>& out) override;
71
72private:
73 void ensure_stream_(const std::string& stream_id);
74 bool emit_one_(std::vector<StageOutMsg>& out);
75
77 std::unordered_map<std::string, std::deque<Sample>> queues_;
78 std::deque<std::string> rr_order_;
79 std::unordered_set<std::string> active_;
80 PortId out_port_ = kInvalidPort;
81};
82
92std::shared_ptr<simaai::neat::graph::Node> StreamSchedulerNode(StreamSchedulerOptions opt = {},
93 std::string label = {},
94 std::string input = "in",
95 std::string output = "out");
96
97} // namespace simaai::neat::graph::nodes

Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.9.8.