Unified Parallel C (UPC) is an extension of the C programming language designed for high performance computing on large-scale parallel systems. The language provides a uniform programming model for shared and distributed memory hardware. The processor memory has a single shared, partitioned address space, where variables may be directly read and written by any processor, but each variable is physically associated with a single processor. UPC uses a Single Program Multiple Data (SPMD) model of computation in which the amount of parallelism is fixed at program startup time, typically with a single thread of execution per processor.
Mellanox HPC-X™ UPC is based on the Berkeley Unified Parallel C project. Berkeley UPC library includes an underlying communication conduit called GASNET, which works over the OpenFabrics RDMA for Linux stack (OFED™). Mellanox has optimized this GASNET layer with the inclusion of their Mellanox Messaging libraries (MXM) as well as Mellanox Fabric Collective Accelerations (FCA), providing an unprecedented level of scalability for UPC programs running over InfiniBand.
The HPC-X UPC main features are:
- Provides a programming library for shared memory communication model extending use of InfiniBand to Berkeley UPC applications
- Seamless integration with MPI libraries and job schedulers allowing for Hybrid programming model
- Maximum collective scalability through integration with Mellanox Fabric Collective Accelerator (FCA)
- High message rate performance with integration and Mellanox Messaging Accelerator (MXM)