isaaclab_experimental.utils#

Sub-package containing experimental utilities.

Additional Public Classes#

The following classes are part of the public isaaclab_experimental.utils API.

ManagerCallMode

Execution mode for manager stage calls.

ManagerCallSwitch

Per-manager call switch for stable/warp/captured execution.

WarpGraphCache

Caches Warp CUDA graphs by stage name: captures on first call, replays after.

class isaaclab_experimental.utils.ManagerCallMode[source]#

Bases: IntEnum

Execution mode for manager stage calls.

  • STABLE (0): Call stable Python manager implementations from isaaclab.managers.

  • WARP_NOT_CAPTURED (1): Call Warp-compatible implementations without CUDA graph capture.

  • WARP_CAPTURED (2): Call Warp implementations with CUDA graph capture/replay.

Methods:

__new__(value)

__init__(*args, **kwds)

__new__(value)#
__init__(*args, **kwds)#
class isaaclab_experimental.utils.ManagerCallSwitch[source]#

Bases: object

Per-manager call switch for stable/warp/captured execution.

Routes each manager stage call through the configured execution path: stable Python, Warp (eager), or Warp (captured CUDA graph). Optionally wraps each call in a Timer context for profiling.

Methods:

__init__([cfg_source, max_modes])

__new__(*args, **kwargs)

__init__(cfg_source: dict | str | None = None, *, max_modes: dict[str, int] | None = None)[source]#
classmethod __new__(*args, **kwargs)#
class isaaclab_experimental.utils.WarpGraphCache[source]#

Bases: object

Caches Warp CUDA graphs by stage name: captures on first call, replays after.

On the very first call for a given stage, an eager warm-up run executes before graph capture. This lets one-time initialisation code (memory allocations, torch dtype casts, hasattr guards, etc.) run outside the capture context. Only the steady-state kernel launches are then recorded into the graph.

The return value from the capture run is cached and returned on every subsequent replay, ensuring captured stages return the same references (e.g. tensor views) as eager stages.

Usage:

cache = WarpGraphCache()
result = cache.capture_or_replay("my_stage", my_warp_function)
# uncaptured work here ...
result2 = cache.capture_or_replay("my_stage_post", my_other_function)

Methods:

__init__()

__new__(*args, **kwargs)

__init__()[source]#
classmethod __new__(*args, **kwargs)#