ALP User Documentation
0.8.preview
Algebraic Programming User Documentation
|
ALP code is compiled using a compiler wrapper, which optionally takes a backend parameter as an argument. More...
Classes | |
class | Properties< backend > |
Collection of various properties on the given ALP/GraphBLAS backend. More... | |
Enumerations | |
enum | Backend { reference, reference_omp, hyperdags, nonblocking , BSP1D , hybrid , banshee } |
A collection of all backends. More... | |
ALP code is compiled using a compiler wrapper, which optionally takes a backend parameter as an argument.
The backend selection controls for which use case the code is compiled. Options that are always included are:
Additionally, the following backends may be enabled by providing their dependences before building ALP:
The grb::Backend enum lists all backends known to ALP. Properties of a backend that may affect more advanced user code are collected in grb::Properties.
enum Backend |
A collection of all backends.
Depending on which dependences were configured during the bootstrapping of this ALP installation, some of these backends may be disabled.
Enumerator | |
---|---|
reference | The sequential reference implementation. Supports fast operations with both sparse and dense vectors, and employs auto-vectorisation. |
reference_omp | The threaded reference implementation. Supports fast operations with both sparse and dense vectors. Employs OpenMP used with a mixture of fork/join and SPMD programming styles. |
hyperdags | A backend that automatically extracts hyperDAGs from user computations. It only captures metadata for recording the hyperDAG, and relies on another backend to actually execute the requested computations– by default, this is the reference backend. |
nonblocking | The threaded nonblocking implementation. Supports fast operations with both sparse and dense vectors. This backend is currently under development. |
BSP1D | A parallel implementation based on a row-wise 1D data distribution, implemented using LPF. This backend manages multiple user processes, manages data distributions of containers between those user processes, and decomposes primitives into local compute phases with intermittent communications. For local compute phases it composes with a single user process backend, reference by default. |
hybrid | A composed backend that uses reference_omp within each user process and BSP1D between sockets. This backend is implemented using the BSP1D code, with the process-local backend overridden from reference to reference_omp. |
banshee | A variant for Snitch RISC-V cores. It is based on an older reference backend. |