pub struct CommandGraph { /* private fields */ }
Expand description

A directional sequence dependency graph representing the temporal requirements of each asynchronous read, write, copy, and kernel (commands) for a particular task.

Obviously this is an overkill for this example but this graph is flexible enough to schedule execution correctly and optimally with arbitrarily many parallel tasks with arbitrary duration reads, writes and kernels.

Note that in this example we are using buffer_id a usize to represent memory regions (because that’s what the allocator above is using) but we could easily use multiple part, complex identifiers/keys. For example, we may have a program with a large number of buffers which are organized into a complex hierarchy or some other arbitrary structure. We could swap buffer_id for some value which represented that as long as the identifier we used could uniquely identify each subsection of memory. We could also use ranges of values and do an overlap check and have byte-level precision.

Implementations

Returns a new, empty graph.

Adds a new command and returns the command index if successful.

Populates the list of requisite commands necessary for each command.

Requisite commands (preceding writers and following readers) for a command are those which are causally linked and must come either directly before or after. By determining whether or not a command comes directly before or after another we can determine the causal/temporal relationship between any two nodes on the graph.

Nodes without any preceding writers or following readers are start or finish endpoints respectively. It’s possible for a graph to have no endpoints, in which case the graph is closed and at least partially cyclical.

Returns the list of requisite events for a command.

Sets the event associated with the completion of a command.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The alignment of pointer.
The type for initializers.
Initializes a with the given initializer. Read more
Dereferences the given pointer. Read more
Mutably dereferences the given pointer. Read more
Drops the object pointed to by the given pointer. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.