Summary
What is Bale?¶
Bale provides a library-based distributed programming model with a special focus on optimizing fine-grained communications.
hclib-actor
mainly depends on the following libraries from Bale:
libgetput
: a library that enables one-sided communications, remote atomics, and collectives built on top of UPC/OpenSHMEMspmat
: a library that facilitates the construction/manipulation of distributed sparse matrices, which is built on top oflibgetput
conveyors
: a communication aggregation library, built on top oflibgetput
exstack/exstack2
: a preliminary experimental version ofconveyors
.
For more details, please see the github repo for Bale can be found here.
How Bale is used in hclib-actor
?¶
The key motivation for introducing hclib-actor
is to simplify programming with conveyors
while keeping the same performance. Specifically, note that conveyors
requires ninja-level distributed programming skills as illustrated in this Histogram with conveyors example and providing a higher-level programming model would benefit non-ninja programmers such as domain experts and scientists.
hclib-actor
is mainly designed to provide an actor based distributed programming model and completely abstracts away conveyors
. Additionally, many of kernels and benchmarks in hclib-actor
use routines from spmat
and libgetput
libraries.
For more details, please see the followings:
Note
It is worth noting that hclib-actor
does not necessarily depend on spmat
or libgetput
libraries. For example, for PGAS SPMD execution, bare OpenSHMEM and UPC can be used instead of libgetput
.
Further Readings¶
- Jason DeVinney and John Gilbert. 2022. Bale: Kernels for irregular parallel computation (Not a benchmark) https://github.com/jdevinney/bale/blob/master/docs/Bale-StGirons-Final.pdf
- F. Miller Maley and Jason G. DeVinney. 2019. Conveyors for Many-to-Many Streaming Communication https://github.com/jdevinney/bale/blob/master/docs/uconvey.pdf