About Agent, Wave, and Device Address Space Threads

An understanding of the differences between agent, wave, and device address space threads is beneficial when you are debugging using wave-thread mode.

Agent Thread

An agent thread has a debugger thread ID and:

  • Is bound to the set of waves executing on a GPU agent via the debug-API-assigned wave IDs

  • Is an address space object that models the agent’s memory

  • Is a debugger thread object to model the execution state of the agent

  • Has an agent focus that identifies a focus wave and lane running on that agent

Wave Thread

A wave thread has a debugger thread ID and:

  • Is bound to a GPU wave via the debug-API-assigned wave ID

  • Has a shared reference to a device address space object to model the agent’s memory

  • Is a debugger thread object to model the execution state of the wave to which it is bound

  • Has a wave focus that identifies a focus lane in that wave

Device Address Space Thread

A device address space thread (when in wave-thread mode) has a debugger thread ID and:

  • Is an address space object that is shared by the wave threads on an agent

  • Is hidden by default as it’s largely an implementation artifact, except for unshared breakpoints

  • Has no meaningful execution state because it is not bound to any specific wave