SuiteSparse v5.6.0
SuiteSparse v5.6.0, Oct 21, 2019, with GraphBLAS v3.1.1.
Release notes for GraphBLAS, since v2.3.5 in SuiteSparse v5.5.0:
GraphBLAS Version 3.1.1, Oct 21, 2019
* minor edits: user guide and comments in code
GraphBLAS Version 3.1.0, Oct 2, 2019
* added MATLAB interface: GraphBLAS/GraphBLAS is new. In Source/, added
global pointer to printf for MATLAB mexPrintf, pointer to
mexMakeMemoryPersistent for Sauna workspace. Changed how GraphBLAS
objects are printed with GxB_print. Changed how duplicate indices are
handled in assign and extract, to match the MATLAB stadard. Added
helper functions for MATLAB (GB_matlab_helper.[ch]).
Code size: @GrB is 9.7KLOC, test/ is 4.5KLOC).
* bug counter added to this ChangeLog: to count # of bugs that appeared
in formal releases that affect production code. The count excludes
bug fixes for test code, bugs in the demo codes, bugs introduced
in beta versions that were fixed before any formal release, and
bugs prior to version 1.0. Code size of Source/, Include/ excluding
Source/Generated, and Config/*.m4, is 42,659 lines (not including the
new MATLAB interface). 13 bugs / 42K lines is a bug rate of 0.3 bugs
per KLOC, much lower than most commercial software, but higher than
UMFPACK, CHOLMOD, etc (with about 0.1 bug per KLOC). GraphBLAS is a
much more complex library, from the external view, than solving Ax=b.
If UMFPACK has a bug, then Ax-b is typically large; there is no
'residual' to check for GraphBLAS. Also, in GraphBLAS, the test suite
has about the same size as the main library (32K lines in Test/ and
Tcov/). For UMFPACK, etc, the test suite is always about 1/3 the size
of the library itself.
* 'make dox': for doxygen removed (not really that useful)
* (13) bug fix to GB_reduce_to_vector: to avoid integer divide-by-zero for
a matrix with n=0 columns.
* (12) bug fix to GB_accum_mask: when C+=T if C has no entries except
pending tuples
* (11) bug fix to GB_resize: when pending tuples exist and vdim is growing
from vdim <= 1 to vdim > 1, GB_WAIT(A) is required first.
* (10) bug fix to GB_subref_phase1: "int nI" parameter should be int64_t.
GraphBLAS Version 3.0.1, July 26, 2019
* version number: Three changes to the user-visible API are not
backward-compatible with V2.x: the added parameters to GxB_init and
GxB_SelectOp_new, and the change in the type of the Thunk argument for
GxB_select. Thus, the SO version of SuiteSparse:GraphBLAS is now 3, no
longer 2. This change only affects SuiteSparse:GraphBLAS GxB_*
extenstions, not any GrB_* functions or definitions.
* added GxB_Scalar: acts like a GrB_Vector of length 1.
* OpenMP parallelism: added nthreads and chunk parameters to GxB_set/get.
* added parameter to GxB_init: bool user_malloc_is_thread_safe,
for the MATLAB mexFunction interface, or any other malloc library that
might not be thread-safe. mxMalloc is not thread-safe.
This change is not backward compatible with Version 2.x.
* changed thunk parameter of GxB_select: was (void *), now GxB_Scalar.
This change is not backward compatible with Version 2.x.
* added parameter to GxB_SelectOp_new: to specify the type of the Thunk.
This change is not backward compatible with Version 2.x.
* added options to GxB_get: determine if a matrix is hypersparse or not,
global library, API information, nthreads, and chunk.
* added options to GxB_set: nthreads, and chunk.
* new operators and semirings: RDIV (f(x,y)=y/x) and RMINUS (y-x)
binary operators.