Universal Common Communication Substrate (UCCS) is a low-level communication substrate that exposes high-performance communication primitives, while providing network interoperability. It is intended to support multiple upper layer protocols (ULPs) or programming models including SHMEM, UPC, Titanium, Co-Array Fortran, Global Arrays, MPI, GASNet, and File I/O. It provides various communication operations including one-sided and two-sided point-to-point, collectives, and remote atomic operations. In addition to operations for ULPs, it provides an out-of-band communication channel required typically required to wire-up communication libraries.
- Provide a common low-level scalable, robust, portable, simple and performance driven communication API for multiple parallel programming models over modern network interfaces
- Provide common network code for implementing programming models, increasing code reusability and reducing development effort
- Support hybrid programming environments efficiently
- Provide flexible API to accommodate requirements of I/O systems, Big Data applications, and Languages
- Design driven by programming model requirements, hardware capabilities, and compiler optimizations
- Minimum abstraction over the network interfaces to achieve high performance and scalability
- Resource sharing among different instances to efficiently support hybrid programming environment
- Provide an API and a reference implementation, enabling others (Vendors) to innovate under the API
UCCS reference implementation consists of a front-end layer and high-performance communication back-end. The front-end is a lightweight layer exporting the API. The back-end layer consists of transport layers translating UCCS operations to network driver or hardware directives. Programming models and tools integrate UCCS as an network layer providing high-performance communication services. The RTE interface is used to integrate UCCS with a bootstrap environment, which could be an integrated part of a programming model or third part solution.
UCCS Communication Context Layout
- UCCS Context - Defines a scope of communication context and communication activities. All resources are allocated with a particular context. Concurrently running programming models may decide to use shared or dedicated communication resources.
- UCCS Resource Context - Network resource descriptor, that represent single or multiple networks devices, or ports. Various network hardware exposes device capabilities with a "query" interface.
- Endpoint - Communication context representing a particular communication peer. Endpoint is used by UCCS to define source or destination for communication operations.
- UCCS exposes a broad range of communication semantics that include RMAs, AMOs, Active Message, and Collectives
- All communications interfaces are non-blocking
- API independent of a bootstrap environment