BCL: A Cross-Platform Distributed Container Library

10/30/2018
by   Benjamin Brock, et al.
0

One-sided communication is a useful paradigm for irregular parallel applications, but most one-sided programming environments, including MPI's one-sided interface and PGAS programming languages, lack application level libraries to support these applications. We present the Berkeley Container Library, a set of generic, cross-platform, high-performance data structures for irregular applications, including queues, hash tables, Bloom filters and more. BCL is written in C++ using an internal DSL called the BCL Core that provides one-sided communication primitives such as remote get and remote put operations. The BCL Core has backends for MPI, OpenSHMEM, GASNet-EX, and UPC++, allowing BCL data structures to be used natively in programs written using any of these programming environments. Along with our internal DSL, we present the BCL ObjectContainer abstraction, which allows BCL data structures to transparently serialize complex data types while maintaining efficiency for primitive types. We also introduce the set of BCL data structures and evaluate their performance across a number of high-performance computing systems, demonstrating that BCL programs are competitive with hand-optimized code, even while hiding many of the underlying details of message aggregation, serialization, and synchronization.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
10/09/2018

MPI Windows on Storage for HPC Applications

Upcoming HPC clusters will feature hybrid memories and storage devices p...
research
07/12/2021

A Scalable Actor-based Programming System for PGAS Runtimes

PGAS runtimes are well suited to irregular applications due to their sup...
research
10/19/2020

High-Performance Distributed RMA Locks

We propose a topology-aware distributed Reader-Writer lock that accelera...
research
02/01/2019

ParaSail: A Pointer-Free Pervasively-Parallel Language for Irregular Computations

ParaSail is a language specifically designed to simplify the constructio...
research
08/30/2023

The Janus System: Multi-paradigm Programming in Prolog and Python

Python and Prolog express different programming paradigms, with differen...
research
12/01/2020

Enhancing Scalability of a Matrix-Free Eigensolver for Studying Many-Body Localization

In [Van Beeumen, et. al, HPC Asia 2020, https://www.doi.org/10.1145/3368...
research
05/19/2022

Primrose: Selecting Container Data Types by their Properties

Container data types are ubiquitous in computer programming, enabling de...

Please sign up or login with your details

Forgot password? Click here to reset