Synchronization primitives may be used to impose timing restrictions across multiple device queues or the host. I have granularized the interactions into distinct interfaces, each representing an interaction.
intra-device: A queue is blocked until a certain point in the execution is reached by another queue.
host to device: queue is blocked until host signals to continue
device to host: host is blocked (or polls) until a certain point in the execution is reached by the a queue.
Synchronization primitives may be used to impose timing restrictions across multiple device queues or the host. I have granularized the interactions into distinct interfaces, each representing an interaction.