# The Combinatorial BLAS Release Notes

This document describes the new features and changes in each release of the Combinatorial BLAS. The numbering is of the form Z.Y.X.

X denotes bug fixes and/or minor updates for existing functionality.

Y denotes new major functionality.

Z denotes an overall paradigm shift in terms of abstractions.

CombBLAS 1.6.2 (April 2018)

· Several bug fixes related to AWPM usage and its SuperLU integration

· Modernized cmake usage thanks to Tristan

CombBLAS 1.6.1 (January 2018)

· Several bug fixes

· Modernizing some calls to ParallelReadMM as opposed to ReadDistribute

· Introducing combblas:: namespace, thanks to Tristan.

CombBLAS 1.6 (September 2017)

· Fully parallel text-file reader for vectors (FullyDistSpVec::ParallelReadMM() and FullyDistVec::ParallelReadMM())

· Fully parallel text-file writer for vectors (FullyDistSpVec::ParallelWrite () and FullyDistVec::ParallelWrite())

· Reverse Cuthill-McKee (RCM) ordering implementation

- Please cite [12] if you use this implementation

· Novel multithreaded SpGEMM and SpMV (with sparse vectors) algorithms are integrated with the rest of CombBLAS.

- For benchmarking multithreaded SpMV with sparse vectors, go to Applications/SpMSpV-IPDPS2017 directory and use the code there.

- Please cite [13] if you use the new multithreaded SpMV with sparse vectors.

· Extended CSC support

· Previously deprecated SpParVec and DenseParVec (that were distributed to diagonal processors only) classes are removed.

· Lots of more bug fixes

CombBLAS 1.5 (January 2016)

· Fully parallel matrix market format reader (SpParMat::ParallelReadMM())

· Complete multithreading support, including SpGEMM (previously it was solely SpMV), enabled by -DTHREADED during compilation

· Experimental 3D SpGEMM (the ability to switch processor grids from 2D to 3D will have to wait for version 1.6)

- Please cite [9] if you use this implementation

- cd 3DSpGEMM/, make test_mpipspgemm, and call the executable with correct parameters

· Maximal and Maximum cardinality matching algorithms on bipartite graphs

- Please cite [10] for maximal cardinality and [11] for maximum cardinality matching

- cd MaximumMatching, make bpmm, and call the executable with correct parameters

· Automated MPI_Op creation from simple C++ function objects (simplifies semiring descriptions and Reduce() functions)

· FullyDistSpVec::Invert() to map from/to (integer) values to/from indices

· Many more helper functions

· Experimental CSC support for low concurrencies

· Lots of bug fixes

CombBLAS 1.4 (January 2014)

- Direction optimizing breadth-first search is available
- Several performance enhancements and bugfixes

CombBLAS 1.3 (February 2013)

- MPI C++ bindings are removed since they are no longer supported by the MPI-3 standard. All MPI calls are C-style.
- On-the-fly filtering support illustrated through examples.
- Frequently asked questions (FAQ) added.
- Maximal Independent Set (MIS) application implemented in the language of linear algebra.

### CombBLAS 1.2.1 (April 2012)

- Sparse matrix assignment is improved to cover cases where the additive inverses are not available.
- Prune with row/column vector indices are supported.
- New test/timing scripts for galerkin restriction.

## CombBLAS 1.2 (March 2012)

- It is made possible to create matrices with globally 64-bit, locally 32-bit indices.

- This is very handy because the index range for submatrices are typically addressible with 32-bit indices but the global semantics require 64-bit computation.
- Example: SpParMat <int64_t, float, SpDCCols<int32_t,float> > A;

- Some primitives (Sparse SpMV, EWiseMult, Apply, Set) are hybrid multithreaded (using OpenMP) within a socket. To enable, follow instructions here
- A new binary format is introduced that enables parallel I/O.
- Filtering (in the context of semantic graphs) is supported in Sparse SpMV and SpGEMM by checking against the semiring additive identity (SAID) that is returned by the scalar semiring multiply if the edge is filtered.

### CombBLAS 1.1.1 (August 2011)

- Bug fixes for the Graph500 sample script and some sample input files.

## CombBLAS 1.1 (May 2011)

- Fully distributed vectors are supported for better load balance; diagonally distributed vectors are deprecated.
- Scalable Sparse SpMV (that enables breadth-first search) is exposed.
- Many new functions such as Matlab equivalent Sparse()-like constructor and Find()
- An exact splitter is used recursively until the range is covered by at most 512 core, before PSort is called. This is because PSort needed local memory that was quadratic in the number of processors.
- Sparse matrix to dense vector reduction along rows is made memory efficient for large number of cores.

## CombBLAS 1.0 (May 2011)

- Initial release of the Combinatorial BLAS.

Go back to the the Combinatorial BLAS home page.