While workers abstract computational elements such as processes and threads as well as the communication resources, the elements abstracted have certain capabilities and components that may be exposed to the applications making use of UCX. This is accomplished through the use of interfaces, which abstract the physical device while exposing features of the device for usage by the application. Examples of the exposed elements include short and buffered copy capabilities, send and receive queues, keys for use with infiniband, device overhead, latency, and bandwidth as well as other features. By exposing a set of features to the user while abstracting the individual characteristics of the device, the user can make informed decisions about the communication between PEs without concern of future changes should the underlying network device change.
In order to maintain scalability and perform a fair distribution of requests, an arbiter is used within the interface to a device. The arbiter mediates the requests attempting to be fair with respect to request dispatches. This allows for requests to be dispatched when prior requests have yet to complete.