Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Classes | Namespaces | Enumerations | Functions
debug_scheduler.hpp File Reference

Coroutine scheduler for AsyncTask. More...

#include "async.hpp"
#include "cuda_task.hpp"
#include "scheduler.hpp"
#include "task_registry.hpp"
#include <algorithm>
#include <cstdint>
#include <numeric>
#include <random>
#include <uni20/common/display.hpp>
#include <utility>
#include <vector>
Include dependency graph for debug_scheduler.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  uni20::async::DebugScheduler
 Single-threaded scheduler with configurable runnable-batch ordering. More...
 
struct  uni20::async::DebugSchedulerOptions
 Configuration for deterministic debug scheduling. More...
 
class  uni20::async::ScopedScheduler
 RAII helper that temporarily overrides the global scheduler. More...
 

Namespaces

namespace  uni20
 
namespace  uni20::async
 This represents the reverse-mode adjoint for functions of complex variables, assuming a real-valued scalar loss function ( L \colon \mathbb{C} \to \mathbb{R} ).
 

Enumerations

enum class  uni20::async::DebugSchedulerOrder { uni20::async::fifo , uni20::async::reverse , uni20::async::random }
 Runnable-batch ordering policy for DebugScheduler. More...
 

Functions

template<class Function >
requires std::invocable<Function&, std::size_t>
void uni20::async::execute_batch (std::size_t size, Function &&function)
 Execute a synchronous lightweight batch on the global scheduler.
 
IAsyncScheduler * uni20::async::get_global_scheduler ()
 Returns the currently-installed process-wide scheduler.
 
void uni20::async::reset_global_scheduler ()
 Restores the process-wide scheduler to the default debug scheduler.
 
void uni20::async::schedule (AsyncTask &&task)
 Schedule a task on the currently configured global scheduler.
 
void uni20::async::schedule (CudaTask &&task)
 Schedule a CUDA task on the currently configured global scheduler.
 
void uni20::async::schedule (CudaTask &&task, int device)
 Schedule a CUDA task with initial device affinity.
 
void uni20::async::set_global_scheduler (IAsyncScheduler *sched)
 Sets the process-wide scheduler used by async helpers.
 

Detailed Description

Coroutine scheduler for AsyncTask.