Unified Runtime

Overview

The Unified Runtime project serves as an interface layer between the DPC++ runtime and the device-specific runtime layers which control execution on devices. The parts of it primarily utilized by DPC++ are its C API, loader library, and the adapter libraries that implement the API for various backends.

The DPC++ runtime accesses the UR api via the Plugin object. Each Plugin object owns a ur_adapter_handle_t, which represents a UR backend (e.g. OpenCL, Level Zero, etc).

The picture below illustrates the placement of UR within the overall DPC++ runtime stack. Dotted lines show components or paths which are not yet available in the runtime, but are likely to be developed. UR in DPC++ runtime architecture

For detailed information about the UR project including the API specification see the Unified Runtime Documentation. You can find the Unified Runtime repo here.