Skip to content

Version 0.7

Latest
Compare
Choose a tag to compare
@anyzelman anyzelman released this 06 Apr 17:27
dbe9a76

Highlights:

  1. This release re-implements the nonblocking ALP/GraphBLAS backend by Mastoras
    et al. (GrAPL/IPDPSW '22, TACO '23) on the latest ALP code base. The use of
    the nonblocking backend for some algorithms results in multiple-factor
    speedups versus standard blocking execution as well as versus external
    industry-standard frameworks. This includes Eigen, which, like nonblocking
    ALP/GraphBLAS, perform cross-operation fusion. Simply compile your ALP
    programs using grbcxx -b nonblocking, and enjoy the speedups!

  2. We also introduce a new programming interface to the ALP software stack that
    allows vertex-centric programming in addition to programming using
    generalised sparse linear algebra. This new interface, ALP/Pregel,
    translates vertex-centric programs to standard ALP/GraphBLAS primitives
    during compilation, and thus benefits of all automatic optimisations
    included with the ALP software stack.

  3. Support for software prefetching during vxm and mxv has been added to
    the reference and reference_omp backends. Since optimal prefetch
    settings and its overall effectiveness relies strongly on 1) the structure
    of the sparse matrices and graphs considered as well as on 2) the algorithms
    used on those data, this new feature is turned off by default. To use it,
    please enable it via include/graphblas/reference/config.hpp and tune the
    there-defined prefetch distances.

  4. Finally, this release includes another new backend, the hyperdags backend.
    A program compiled with this backend will, after execution, dump a HyperDAG
    representation of the ALP computations that the program executed.

More detailed changes since v0.6 are noted in the changelog.

This release has been thoroughly tested using various combinations of:

  • OS: Fedora 31, CentOS Stream, Ubuntu 20.04 LTS;
  • GCC: 8.5.0, 9.3.1, 9.4.0, and 12.2.0;
  • MPI: MPICH 3.3.2, MPICH 3.4.2, and OpenMPI 4.1.1;
  • Linux kernels: 4.18.0, 5.4.0, and 5.8.18;
  • Architectures: x86_64 and ARMv8.2.