Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
task_registry_dummy.hpp
Go to the documentation of this file.
1#pragma once
2
9
10#include <coroutine>
11#include <cstdio>
12#include <exception>
13#include <string>
14#include <vector>
15
16namespace uni20::async
17{
18class EpochContext;
19class NodeInfo;
20} // namespace uni20::async
21
22namespace uni20
23{
24
27 public:
29 enum class DumpMode
30 {
31 None,
32 Basic,
33 Full,
34 };
35
37 enum class TaskState
38 {
40 Running,
42 Failed,
43 Leaked,
44 };
45
47 enum class EpochTaskRole
48 {
49 Reader,
50 Writer,
51 };
52
55 {
56 std::string output_dir{"/tmp"};
57 std::string file_prefix{"uni20-dag"};
58 };
59
67
77
80
83
86
89 static constexpr void register_task(std::coroutine_handle<> h) noexcept { static_cast<void>(h); }
92 static constexpr void destroy_task(std::coroutine_handle<> h) noexcept { static_cast<void>(h); }
95 static constexpr void leak_task(std::coroutine_handle<> h) noexcept { static_cast<void>(h); }
98 static constexpr void mark_running(std::coroutine_handle<> h) noexcept { static_cast<void>(h); }
101 static constexpr void mark_suspended(std::coroutine_handle<> h) noexcept { static_cast<void>(h); }
103 static constexpr void record_unhandled_exception(std::coroutine_handle<> h, std::exception_ptr exception,
104 bool originating_failure) noexcept
105 {
106 static_cast<void>(h);
107 static_cast<void>(exception);
108 static_cast<void>(originating_failure);
109 }
112 static constexpr void record_task_scheduled(std::coroutine_handle<> h) noexcept { static_cast<void>(h); }
117 static constexpr void
118 record_task_dependencies(std::coroutine_handle<> h, std::vector<async::NodeInfo const*> const& read_dependencies,
119 std::vector<async::NodeInfo const*> const& write_dependencies) noexcept
120 {
121 static_cast<void>(h);
122 static_cast<void>(read_dependencies);
123 static_cast<void>(write_dependencies);
124 }
129 static constexpr void record_await_dependency(std::coroutine_handle<> h, async::NodeInfo const* node,
130 EpochTaskRole role) noexcept
131 {
132 static_cast<void>(h);
133 static_cast<void>(node);
134 static_cast<void>(role);
135 }
139 static void name_task(std::coroutine_handle<> h, std::string const& label) noexcept
140 {
141 static_cast<void>(h);
142 static_cast<void>(label);
143 }
147 static void name_async_value(async::NodeInfo const* node, std::string const& label) noexcept
148 {
149 static_cast<void>(node);
150 static_cast<void>(label);
151 }
154 static constexpr void register_epoch_context(async::EpochContext const* epoch_context) noexcept
155 {
156 static_cast<void>(epoch_context);
157 }
160 static constexpr void destroy_epoch_context(async::EpochContext const* epoch_context) noexcept
161 {
162 static_cast<void>(epoch_context);
163 }
168 static constexpr void bind_epoch_task(async::EpochContext const* epoch_context, std::coroutine_handle<> h,
169 EpochTaskRole role) noexcept
170 {
171 static_cast<void>(epoch_context);
172 static_cast<void>(h);
173 static_cast<void>(role);
174 }
179 static constexpr void unbind_epoch_task(async::EpochContext const* epoch_context, std::coroutine_handle<> h,
180 EpochTaskRole role) noexcept
181 {
182 static_cast<void>(epoch_context);
183 static_cast<void>(h);
184 static_cast<void>(role);
185 }
189 static std::vector<std::coroutine_handle<>> epoch_reader_tasks(async::EpochContext const* epoch_context)
190 {
191 static_cast<void>(epoch_context);
192 return {};
193 }
197 static std::vector<std::coroutine_handle<>> epoch_writer_tasks(async::EpochContext const* epoch_context)
198 {
199 static_cast<void>(epoch_context);
200 return {};
201 }
204 static constexpr DumpMode dump_mode() noexcept { return DumpMode::None; }
208 static constexpr void dump_epoch_context(async::EpochContext const* epoch_context,
209 char const* reason = nullptr) noexcept
210 {
211 static_cast<void>(epoch_context);
212 static_cast<void>(reason);
213 }
215 static constexpr void dump() noexcept {}
218 static GraphSnapshot snapshot() { return GraphSnapshot{}; }
226 {
227 static_cast<void>(snapshot);
228 return GraphDiagnostics{};
229 }
232 static std::string graphviz_dot() { return "digraph uni20_async_dag {\n rankdir=LR;\n}\n"; }
235 static std::string graphviz_dot_best_effort() { return graphviz_dot(); }
239 static std::string graphviz_dot(GraphSnapshot const& snapshot)
240 {
241 static_cast<void>(snapshot);
242 return graphviz_dot();
243 }
248 static std::string graphviz_dot(GraphSnapshot const& snapshot, GraphDiagnostics const& diagnostics)
249 {
250 static_cast<void>(snapshot);
251 static_cast<void>(diagnostics);
252 return graphviz_dot();
253 }
256 static void dump_graphviz(std::FILE* stream = stderr)
257 {
258 if (!stream) return;
259 auto dot = graphviz_dot();
260 std::fputs(dot.c_str(), stream);
261 }
265 static bool dump_graphviz_file(std::string const& path)
266 {
267 if (auto* stream = std::fopen(path.c_str(), "w"); stream)
268 {
269 auto dot = graphviz_dot();
270 auto const ok = std::fputs(dot.c_str(), stream) >= 0;
271 return std::fclose(stream) == 0 && ok;
272 }
273 return false;
274 }
278 static bool dump_graphviz_file_best_effort(std::string const& path) { return dump_graphviz_file(path); }
293 static void
295 {
296 static_cast<void>(options);
297 }
299 static constexpr void reset_coroutine_exception_diagnostics_options() noexcept {}
311 static void set_stacktrace_options(StacktraceOptions const& options) noexcept { static_cast<void>(options); }
313 static constexpr void reset_stacktrace_options() noexcept {}
323 static std::string default_graphviz_dump_path(GraphvizDumpOptions const& options)
324 {
325 auto dir = options.output_dir.empty() ? std::string(".") : options.output_dir;
326 if (!dir.empty() && dir.back() == '/') dir.pop_back();
327 return dir + "/" + options.file_prefix + ".dot";
328 }
330 static constexpr void request_graphviz_dump() noexcept {}
333 static bool service_debug_requests() noexcept { return false; }
337 static bool service_debug_requests(GraphvizDumpOptions const& options) noexcept
338 {
339 static_cast<void>(options);
340 return false;
341 }
344 static bool start_diagnostics_service() noexcept { return false; }
348 static bool start_diagnostics_service(DiagnosticsServiceOptions const& options) noexcept
349 {
350 static_cast<void>(options);
351 return false;
352 }
354 static constexpr void stop_diagnostics_service() noexcept {}
355};
356
357} // namespace uni20
No-op task registry implementation for non-debug async builds.
Definition task_registry_dummy.hpp:26
static std::vector< std::coroutine_handle<> > epoch_reader_tasks(async::EpochContext const *epoch_context)
Returns an empty reader list in dummy mode.
Definition task_registry_dummy.hpp:189
static void set_stacktrace_options(StacktraceOptions const &options) noexcept
Ignores stacktrace formatting options in dummy mode.
Definition task_registry_dummy.hpp:311
TaskState
Lifecycle states mirrored from the debug registry interface.
Definition task_registry_dummy.hpp:38
static constexpr void reset_stacktrace_options() noexcept
Resets stacktrace formatting options in dummy mode.
Definition task_registry_dummy.hpp:313
static DiagnosticsServiceOptions default_diagnostics_service_options()
Builds default diagnostics-service options in dummy mode.
Definition task_registry_dummy.hpp:302
static bool dump_graphviz_file(std::string const &path)
Writes an empty Graphviz DOT document in dummy mode.
Definition task_registry_dummy.hpp:265
static std::string default_graphviz_dump_path(GraphvizDumpOptions const &options)
Builds a dummy default Graphviz dump path.
Definition task_registry_dummy.hpp:323
static void dump_graphviz(std::FILE *stream=stderr)
Prints an empty Graphviz DOT document in dummy mode.
Definition task_registry_dummy.hpp:256
static constexpr void record_task_dependencies(std::coroutine_handle<> h, std::vector< async::NodeInfo const * > const &read_dependencies, std::vector< async::NodeInfo const * > const &write_dependencies) noexcept
No-op coarse DAG dependency hook.
Definition task_registry_dummy.hpp:118
static constexpr void record_await_dependency(std::coroutine_handle<> h, async::NodeInfo const *node, EpochTaskRole role) noexcept
No-op concrete await DAG dependency hook.
Definition task_registry_dummy.hpp:129
static bool start_diagnostics_service() noexcept
No-op diagnostics service start hook in dummy mode.
Definition task_registry_dummy.hpp:344
static bool service_debug_requests() noexcept
No-op request service hook in dummy mode.
Definition task_registry_dummy.hpp:333
static std::vector< std::coroutine_handle<> > epoch_writer_tasks(async::EpochContext const *epoch_context)
Returns an empty writer list in dummy mode.
Definition task_registry_dummy.hpp:197
static constexpr void record_unhandled_exception(std::coroutine_handle<> h, std::exception_ptr exception, bool originating_failure) noexcept
No-op unhandled-exception hook.
Definition task_registry_dummy.hpp:103
static std::string graphviz_dot_best_effort()
Returns an empty best-effort Graphviz DOT document in dummy mode.
Definition task_registry_dummy.hpp:235
static GraphvizDumpOptions default_graphviz_dump_options()
Builds default file-output options in dummy mode.
Definition task_registry_dummy.hpp:281
static std::string graphviz_dot(GraphSnapshot const &snapshot)
Renders a graph snapshot as Graphviz DOT in dummy mode.
Definition task_registry_dummy.hpp:239
static constexpr void reset_coroutine_exception_diagnostics_options() noexcept
No-op automatic exception-diagnostics policy reset in dummy mode.
Definition task_registry_dummy.hpp:299
static constexpr void mark_suspended(std::coroutine_handle<> h) noexcept
No-op suspended-state hook.
Definition task_registry_dummy.hpp:101
static constexpr DumpMode dump_mode() noexcept
Returns DumpMode::None in dummy mode.
Definition task_registry_dummy.hpp:204
static CoroutineExceptionDiagnosticsOptions coroutine_exception_diagnostics_options()
Returns a disabled automatic exception-diagnostics policy in dummy mode.
Definition task_registry_dummy.hpp:288
static constexpr void dump() noexcept
No-op global dump hook.
Definition task_registry_dummy.hpp:215
static void name_task(std::coroutine_handle<> h, std::string const &label) noexcept
No-op task label hook.
Definition task_registry_dummy.hpp:139
static constexpr void register_epoch_context(async::EpochContext const *epoch_context) noexcept
No-op epoch-context registration hook.
Definition task_registry_dummy.hpp:154
static constexpr void destroy_epoch_context(async::EpochContext const *epoch_context) noexcept
No-op epoch-context destruction hook.
Definition task_registry_dummy.hpp:160
static constexpr void request_graphviz_dump() noexcept
No-op dump request hook in dummy mode.
Definition task_registry_dummy.hpp:330
static constexpr void unbind_epoch_task(async::EpochContext const *epoch_context, std::coroutine_handle<> h, EpochTaskRole role) noexcept
No-op epoch-task unbinding hook.
Definition task_registry_dummy.hpp:179
static constexpr void bind_epoch_task(async::EpochContext const *epoch_context, std::coroutine_handle<> h, EpochTaskRole role) noexcept
No-op epoch-task binding hook.
Definition task_registry_dummy.hpp:168
static constexpr void record_task_scheduled(std::coroutine_handle<> h) noexcept
No-op scheduler submission provenance hook.
Definition task_registry_dummy.hpp:112
static GraphDiagnostics diagnose_snapshot(GraphSnapshot const &snapshot)
Returns empty diagnostics for a graph snapshot in dummy mode.
Definition task_registry_dummy.hpp:225
static constexpr void leak_task(std::coroutine_handle<> h) noexcept
No-op task leak hook.
Definition task_registry_dummy.hpp:95
static constexpr void dump_epoch_context(async::EpochContext const *epoch_context, char const *reason=nullptr) noexcept
No-op epoch-context dump hook.
Definition task_registry_dummy.hpp:208
static void name_async_value(async::NodeInfo const *node, std::string const &label) noexcept
No-op async value label hook.
Definition task_registry_dummy.hpp:147
static void set_coroutine_exception_diagnostics_options(CoroutineExceptionDiagnosticsOptions const &options) noexcept
Ignores automatic exception-diagnostics policy in dummy mode.
Definition task_registry_dummy.hpp:294
static GraphSnapshot snapshot()
Returns an empty structured graph snapshot in dummy mode.
Definition task_registry_dummy.hpp:218
static constexpr void destroy_task(std::coroutine_handle<> h) noexcept
No-op task destruction hook.
Definition task_registry_dummy.hpp:92
static constexpr void stop_diagnostics_service() noexcept
No-op diagnostics service stop hook in dummy mode.
Definition task_registry_dummy.hpp:354
EpochTaskRole
Reader/writer role mirrored from the debug registry interface.
Definition task_registry_dummy.hpp:48
static GraphSnapshot snapshot_best_effort()
Returns an empty best-effort structured graph snapshot in dummy mode.
Definition task_registry_dummy.hpp:221
static std::string graphviz_dot(GraphSnapshot const &snapshot, GraphDiagnostics const &diagnostics)
Renders a graph snapshot and diagnostics as Graphviz DOT in dummy mode.
Definition task_registry_dummy.hpp:248
static CoroutineExceptionDiagnosticsOptions default_coroutine_exception_diagnostics_options()
Returns a disabled automatic exception-diagnostics policy in dummy mode.
Definition task_registry_dummy.hpp:283
static StacktraceOptions default_stacktrace_options()
Builds default stacktrace formatting options in dummy mode.
Definition task_registry_dummy.hpp:305
static StacktraceOptions stacktrace_options()
Returns stacktrace formatting options in dummy mode.
Definition task_registry_dummy.hpp:308
static constexpr void register_task(std::coroutine_handle<> h) noexcept
No-op task registration hook.
Definition task_registry_dummy.hpp:89
static bool start_diagnostics_service(DiagnosticsServiceOptions const &options) noexcept
No-op diagnostics service start hook in dummy mode.
Definition task_registry_dummy.hpp:348
static constexpr void mark_running(std::coroutine_handle<> h) noexcept
No-op running-state hook.
Definition task_registry_dummy.hpp:98
static std::string default_graphviz_dump_path()
Builds a dummy default Graphviz dump path.
Definition task_registry_dummy.hpp:316
static bool service_debug_requests(GraphvizDumpOptions const &options) noexcept
No-op request service hook in dummy mode.
Definition task_registry_dummy.hpp:337
DumpMode
Verbosity levels mirrored from the debug registry interface.
Definition task_registry_dummy.hpp:30
static std::string graphviz_dot()
Returns an empty Graphviz DOT document in dummy mode.
Definition task_registry_dummy.hpp:232
static bool dump_graphviz_file_best_effort(std::string const &path)
Writes an empty best-effort Graphviz DOT document in dummy mode.
Definition task_registry_dummy.hpp:278
Definition epoch_context.hpp:169
Records node information for DAG/debugging visualization.
Definition async_node.hpp:171
This represents the reverse-mode adjoint for functions of complex variables, assuming a real-valued s...
Definition async/async.hpp:26
Definition async/async.hpp:26
GraphvizDumpOptions dump_options
Definition task_registry_debug.hpp:73
bool enabled
Definition task_registry_debug.hpp:71
bool write_graphviz
Definition task_registry_debug.hpp:72
int signal_number
Definition task_registry_debug.hpp:80
std::string request_file
Definition task_registry_debug.hpp:81
int poll_interval_ms
Definition task_registry_debug.hpp:82
bool block_signal_in_calling_thread
Definition task_registry_debug.hpp:83
GraphvizDumpOptions dump_options
Definition task_registry_debug.hpp:79
std::string file_prefix
Definition task_registry_debug.hpp:65
std::string output_dir
Definition task_registry_debug.hpp:64
Diagnostics derived from a structured task-registry graph snapshot.
Definition task_registry_snapshot.hpp:114
Structured task-registry graph snapshot.
Definition task_registry_snapshot.hpp:104
Runtime controls for formatting captured task-registry stacktraces.
Definition task_registry_snapshot.hpp:33
Automatic coroutine-exception dump policy mirrored from the debug registry.
Definition task_registry_dummy.hpp:62
Diagnostics-service options mirrored from the debug registry interface.
Definition task_registry_dummy.hpp:70
File-output options mirrored from the debug registry interface.
Definition task_registry_dummy.hpp:55
std::string output_dir
Definition task_registry_dummy.hpp:56
std::string file_prefix
Definition task_registry_dummy.hpp:57
Structured async task-registry graph snapshots and diagnostics.