BCL: A Cross-Platform Distributed Data Structures Library

BCL: A Cross-Platform Distributed Data Structures Library
复制标题

DOI:
10.1145/3337821.3337912
复制
发表时间:
2018-10
期刊:
Proceedings of the 48th International Conference on Parallel Processing
影响因子:
--
通讯作者:
Benjamin Brock;A. Buluç;K. Yelick
Benjamin Brock;A. Buluç;K. Yelick
中科院分区:
其他
文献类型:
--
作者:
Benjamin Brock;A. Buluç;K. Yelick

文献摘要

被引文献

相似文献

单边通信对于不规则的并行应用程序是一个有用的范例,但是大多数单边编程环境,包括MPI的单边接口和PGAS编程语言,缺乏应用程序级库来支持这些应用程序。我们提出了伯克利容器库,一组通用的,跨平台的,高性能的数据结构,为不规则的应用程序,包括队列,哈希表,布隆过滤器和更多。BCL是用C++编写的,使用内部DSL称为BCL Core,提供单边通信原语,如远程get和远程put操作。BCL Core拥有MPI、OpenSHMEM、GASNet-EX和UPC++的后端,允许BCL数据结构在使用任何这些编程环境编写的程序中原生使用。沿着我们的内部DSL,我们提出了BCL ObjectContainer抽象,它允许BCL数据结构透明地序列化复杂的数据类型,同时保持原语类型的效率。我们还介绍了一套BCL数据结构,并评估其性能在一些高性能的计算系统,表明BCL程序具有竞争力的手工优化的代码,即使隐藏了许多底层的消息聚合,序列化和同步的细节。
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.