Jan 20, 2024: version 5.2.0 * bug fix: CHOLMOD 5.1.0 added a new variable in the CHOLMOD Common struct for development only but this change broke ABI compatibility since the SOVERSION was not bumped at the same time. v5.2.0 reverts this change so the new variable does not appear in production, thus restoring ABI compatibility with v5.0.x. Jan 10, 2024: version 5.1.1 * MATLAB interface: add -DNO_SSIZE_T for Windows * minor updates to build system Dec 30, 2023: version 5.1.0 * major change to build system: by Markus Mützel * support for single precision matrices: for all Modules, except for the GPU kernels (which are only supported for double and complex double matrices). * GPU: various bug fixes Oct 31, 2023, version 5.0.1 * cholmod.h: remove use of "I" which conflicts with #include . Oct 23, 2023, version 5.0.0 * CHOLMOD v5.0.0: introduces the first part of support for single precision sparse matrices, with the introduction of the new CHOLMOD:Utility Module. The CHOLMOD:Utility Module replaces CHOLMOD:Core in prior versions. Single precision is not yet incorporated into the remaining Modules, however. Oct 18, 2023: version 4.2.2 * CHOLMOD 4.2.2: bug fix to CHOLMOD/Supernodal (heuristic to determine # threads to use for last supernode was incorrect) Sept 18, 2023: version 4.2.1 * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux Sept 8, 2023: version 4.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel * bug fix: typecast was broken in cholmod_postorder.c * minor fixes to debug scaffolding and test code: cholmod_internal.h, cholmod_metis_wrapper.c, Tcov/memory.c. * support for SPQR: minor changes to support SPQR v4.2.0 with 32-bit integers; no change to user-visible API. * METIS now using GKRAND: with threadprivate state variables, to avoid global system lock when using CHOLMON on many user threads June 16, 2023: version 4.0.4 * cmake build system updates: update by Markus Muetzel * METIS: fixed non-standard prototypes in gk_proto.h and gk_mkrandom.h Jan 17, 2022: version 4.0.3 * NFORTRAN: option added to disable Fortran entirely * SuiteSparse_config: now v7.0.0 Dec 9, 2022: version 4.0.2 * minor change to build system * Fortran: no longer required to build CHOLMOD * NPARTITION: if CHOLMOD is compiled with -DNPARTITION, then METIS is not compiled. However, the CHOLMOD interface to METIS is still present; they simply return CHOLMOD_NOT_INSTALLED. This allows methods that depend on CHOLMOD's METIS interface to use a run-time test, instead of requiring them to be compiled with -DNPARTITION (SPQR in particular). Nov 12, 2022: version 4.0.1 * BLAS definitions: no longer exposed to the user application Nov 12, 2022: version 4.0.0 * using CMake build system * integers: int (32-bit) and SuiteSparse_long (nominally 64-bit) replaced with int32_t and int64_t. * cholmod.h: single include file for all Modules * BLAS/LAPACK: relying on SuiteSparse_config and CMake to find and link with the BLAS and LAPACK libraries * libcholmod_cuda.so: CUDA support split into a separate library. * OpenMP: CHOLMOD_OMP_NUM_THREADS removed, replaced with run time controls (Common->nthreads_max, Common->chunk) * METIS: no longer built as a separate libary. A slightly modified version of METIS is embedded into the CHOLMOD library, with a prefix appended to each function name so it won't conflict with a standard METIS library that may already exist in the application. June 30, 2020: no change to version number * minor update to MATLAB tests: no change to compiled library, so version number remains 3.0.14. * replaced UFget with ssget in MATLAB tests Feb 20, 2020: version 3.0.14 * minor update to cholmod_check to print a matrix Dec 20, 2018: version 3.0.13 * bug fix to cholmod_core.h: so that a CUDA include file is properly included in a C++ caller; also required for SPQR. Mar 12, 2018: version 3.0.12 * bug fix to cholmod_rowcolcounts.c (int overflow was possible) May 4, 2016: version 3.0.11 * minor changes to Makefile Apr 1, 2016: version 3.0.10 * licensing simplified (no other change); refer to CHOLMOD/Doc/License.txt Feb 1, 2016: version 3.0.9 * update to Makefiles * minor change to CHOLMOD/Check/cholmod_write.c, when compiling with certain modules disabled. * more verbose error reporting * Demos now compile with MatrixOps module disabled, but they don't compute all residuals (requires the CHOLMOD/MatrixOps package) Jan 30, 2016: version 3.0.8 * better Makefiles for creating and installing shared libraries * CHOLMOD now uses METIS 5.1.0, which is distributed with SuiteSparse * correction to mexFunctions required for MATLAB R2015b, for sparse empty matrices and NULL mxGetPr Jan 1, 2016: version 3.0.7 * modified Makefile to create shared libraries No change to C code except version number July 14, 2015: version 3.0.6 * disabling of MatrixOps, Modify, and Supernodal modules didn't work properly. * added MATLAB interface for row add/delete (lurowmod mexFunction) Jan 19, 2015: version 3.0.5 * minor bug fix to cholmod_symmetry.c for the 'quick return' (option == 0). Jan 7, 2015: version 3.0.4 * serious bug fix to supernodal factorization. The bug was introduced in CHOLMOD v3.0.0 when the GPU acceleration was given a major update. The bug can cause a segfault, whether or not the GPU is used. Oct 23, 2014: version 3.0.3 * minor fix for CHOLMOD/Supernodal/cholmod_super_symbolic.c (was using a non-ANSI C method to declare and initialize a variable). * added additional paper in CHOLMOD/Doc Oct 10, 2014: version 3.0.2 * changes to accomodate GPU-accelerated SPQR * added CHOLMOD/Include/cholmod_function.h for backward compatibility for function pointers (moved from Common to SuiteSparse_config, as of v2.2.0) July 18, 2014: version 3.0.1 * minor correction to 3.0.0 Beta build process, to compile SPQR when CHOLMOD is compiled on the GPU * added cholmod_rowfac_mask2 function for LPDASA * to test the GPU, use 'make big' in CHOLMOD/Demo. You will need to first download the GHS_psdef/audikw_1.mtx: http://sparse.tamu.edu/GHS_psdef/audikw_1 March 26, 2014: version 3.0.0 (beta) * major update to GPU acceleration. Released at NVIDIA GTC 2014. July 31, 2013: version 2.2.0 * modified the CHOLMOD Common so that it is the same size regardless of whether or not the GPU is used. * changed malloc, printf, hypot, and divcomplex pointers to use SuiteSparse_config. Removed CHOLMOD Common-> function pointers. Apr 25, 2013: version 2.1.2 * minor update for CHOLMOD/Cholesky/*solve*.c: version 2.1.0 broke the Microsoft Visual C/C++ compiler Apr 16, 2013: version 2.1.1 * bug fix to Lib/Makefile and Demo/Makefile, to handle -DNCAMD correctly. * changes to Supernodal/t_cholmod_gpu.c: to fix a GPU memory leak, to fix the statistics on TRSM timing, and to reduce CPU-GPU memory traffic. * added cholmod_version function. Mar 27, 2013: version 2.1.0 * added the -DNCAMD option. Formerly, the -DNPARTITION option disabled both METIS and the interface to CAMD, CCOLAMD, and CSYMAMD. Now, -DNPARTITION controls just whether or not the interface to METIS is compiled. The new -DNCAMD option controls whether or not the interfaces to CAMD, CCOLAMD, and CSYMAMD are compiled. Both features remain in the Partition Module, as in prior versions. * added cholmod_lsolve_pattern and modified cholmod_row_lsubtree, to compute nonzero pattern of L\b where b is sparse * added cholmod_solve2 and cholmod_ensure_dense, so that repeated forward/backsolves can be done without the need to malloc/free, memory on each solve. Also provides the option for solving for a subset of the solution vector x (via the Bset and Xset parameters to cholmod_solve2). The last option required an IPerm member to be added to the Cholesky factorization object. It is only allocated and used if cholmod_solve2 solves with Bset. Jun 20, 2012: verison 2.0.1 * minor update for Windows (removed filesep, compiler port fix) * minor changes to format of User Guide * bug fix for GPU code (singular case) Jun 1, 2012: version 2.0.0 * changed from UFconfig to SuiteSparse_config * added interface to CUDA BLAS Dec 7, 2011: version 1.7.4 * fixed the Makefile to better align with CFLAGS and other standards * Makefile now detects whether or not METIS is present, and sets -DNPARTITION if it is not Jan 25, 2011: version 1.7.3 * minor fix to "make install" * minor change to Core/cholmod_memory.c, rename "I" which conflicts with a predefined token in some compilers Nov 30, 2009: version 1.7.2 * added "make install" and "make uninstall" * fixed interface to 64-bit BLAS for MATLAB 7.8 Sept 30, 2008, version 1.7.1 * bug fix to cholmod_symmetry; it reported incorrectly if the matrix had a zero-free diagonal or not. No effect on the use of CHOLMOD in MATLAB. No effect on the mwrite function, either, which uses cholmod_symmetry. Note that the number of nonzeros on the diagonal was (and still is) correctly computed. Only effect is on the UF_Index.cholcand statistic reported in the UFget index, and on the web pages, for the UF Sparse Matrix Collection (the UF_Index.cholcand field). This affects the output of spsym. Sept 20, 2008, version 1.7.0 * update for SuiteSparseQR: - add SuiteSparseQR knobs and stats to CHOLMOD Common - SuiteSparseQR uses CHOLMOD for its multifrontal symbolic analysis - changed (char *) input parameters to (const char *), to avoid spurious compiler warnings when C++ calls C. - minor change to the AMD backup strategy in cholmod_analyze, to better suit SuiteSparseQR - modified cholmod_analyze and cholmod_super_symbolic, to add "for_cholesky" parameter; new function cholmod_analyze_p2. This parameter is false for SuiteSparseQR. - minor correction to comments in cholmod_postorder.c - performance enhancement to supernodal symbolic analysis, when A or AA' is fairly dense Nov 1, 2007, version 1.6.0 * minor lint cleanup (no bugs) * new CHOLMOD_CLEAR_FLAG macro, which speeds up the calls to cholmod_clear_flag, avoiding the function call if not needed. Note that this leads to untested lines in the Tcov test, but the lines of the macro are tested in several places, just not everywhere it appers. * port to MATLAB 7.5 (mex -lmwblas option now required for Linux) * minor bug fix to cholmod_add.c to avoid potential Int overflow * extra option added to cholmod2 mexFunction * sparse2 mexFunction modified to ensure nnz(A) == nzmax(A) always holds (It didn't in v1.5.0 if numerically zero entries were dropped in A). * correction to Help comments for spsym function * bug fix to cholmod_symmetry.c: determination of Hermitian vs non-Hermitian matrices was incorrect if the diagonal was imaginary. * performance fix for cholmod_nesdis.c and nesdis mexFunction May 31, 2007, version 1.5.0 * 64-bit MATLAB interface * MATLAB interface back-ported to MATLAB 6.1. * bug fix: solving Dx=b using a supernodal factorization, in cholmod_l_solve, when sizeof(UF_long) > sizeof(BLAS integer) * changes to Makefiles to reflect directory changes in COLAMD and CCOLAMD v2.7.0 directory structure (CHOLMOD v1.5 requires v2.7.0 of those two packages) * update to Modify/cholmod_updown.c, to allow input vector R to be packed or unpacked. * bug fix to Tcov/huge.c test code, for 64-bit case (this has no effect on the CHOLMOD library itself, just the test code) Dec 12, 2006, version 1.4.0 * added support for large files (larger than 2GB) * minor MATLAB cleanup * renamed MATLAB function from cholmod to cholmod2, to avoid filename clash with itself (the built-in version of cholmod). Dec 2, 2006, version 1.3.0 * Major modification to cholmod_read.c; now fully supports all forms of the Matrix Market format. Added cholmod_read_dense and cholmod_read_matrix functions to cholmod_read.c. Major changes to mread MATLAB function. Added Common->prefer_binary option for cholmod_read. * Added cholmod_write.c (cholmod_write_sparse and cholmod_write_dense functions). Added mwrite MATLAB function. * Added 2nd output argument to sparse2 (Z, binary pattern of explicit zero entries). * Added the function cholmod_symmetry to the MatrixOps module. Added spsym MATLAB function. * 2nd argument to cholmod_triplet_to_sparse changed from int to size_t. * minor correction to cholmod_analyze_ordering, cholmod_dense.c * minor change to cholmod_rowfac.c, cholmod_solve.c, ... to allow for easier testing. Sept 28, 2006, version 1.2.1 * bug fix to cholmod_matlab.c, when working with sparse INT64 matrices in the "sparse2" function Aug 31, 2006, version 1.2 * Common->default_nesdis parameter and Common->called_nd statistic added. Otherwise, no change to user interface. v1.2 is fully upward compatible with v1.1 (even binary compatible). * non-supernodal Lx=b and L'x=b solves simplified, slight increase in performance. * update/downdate performance improved. * ordering options and output statistics added to MATLAB/cholmod mexFunction. July 27, 2006, version 1.1.1 * bug fix for cholmod_rowfac_mask, for the complex case. Has no effect on MATLAB. June 27, 2006: * trivial changes to nested dissection code, and cholmod_read.c (for debugging, and to add explicit typecasts so compilers don't complain). May, 2006: * Added new routines for LPDASA: cholmod_rowfac_mask, cholmod_updown_mask. Added cholmod_collapse_septree. Added nd_oksep, nd_components parameters to Common. Apr 30, 2006: version 1.1 * added interface to CAMD. cholmod_nested_dissection can now call CCOLAMD, CSYMAMD, and CAMD. Common->nd_camd usage extended. New argument added to nesdis mexFunction. New cholmod_camd function added. No other changes to CHOLMOD user interface. * more careful integer overflow checks. Added non-user-callable functions to add and multiply size_t integers, with overflow checks. * added Common->no_workspace_reallocate * flop count is now correct for A*A' case (Common->rowfacfl). Jan 18, 2006: version 1.0.2 * bug fix: MATLAB interface incorrect for full logical matrices. * Tcov tests modified to generate fewer intentional nan's, to make it easier to look for errors in BLAS libraries that incorrectly generate nan's. Dec 16, 2005: version 1.0.1 * bug fix: cholmod_amd allocated too small of a workspace when ordering A*A' Dec 8, 2005: version 1.0 * no real changes. Version 1.0 is the same as version 0.8. Version 1.0 is simply the formal stable release. * known issue: the floating point operation count, Common->rowfacfl, is statistic is incorrect when factorizing A*A'. This will be fixed in version 1.1. Nov 15, 2005: version 0.8 * bug fix in t_cholmod_super_numeric, for [R,p]=chol(A) usage. * Common->quick_return_if_not_posdef added. * Added cholmod_row_lsubtree (required for LPDASA) * bug fix: cholmod_rcond returned sqrt(1/cond) for an LL' factorization; 1/cond is required. * new statistics added: flop counts for cholmod_rowfac, # of factor column reallocations, # of factor reallocations due to column reallocations, and # of times the (non-default) bounds on diag(L) are hit. * factor column reallocation skipped if space already big enough. * bug fix: cholmod_copy_factor did not copy L->is_monotonic. * bug fix: cholmod_change_factor (diagonal entry was wrong in one case) * rcond added to cholmod mexFunction ([x,rcond] = cholmod(A,b)). * cholmod_rowadd, cholmod_rowdel modified. rowdel no longer removes entries from the matrix; it sets them to zero instead. Oct 10, 2005: version 0.7 * minor changes: minor change to Check/cholmod_check.c (coerce sizeof(...) to (int) when printing. Less strict check on A->p for unpacked matrices) , removed a few unused variables in Check/cholmod_read.c and Demo/cholmod*demo.c, changed "exit(0)" to "return(0)" in Demo/cholmod_simple.c. Changed Makefile so that "." is not assumed to be on the $path. Added Cygwin to architecture detection in Include/cholmod_blas.h. Added cparent and cmember to nesdis.m. Space for future expansion added to cholmod_common. * removed "rowmark" from the Modify module, which affects how partial updates to Lx=b solves are done during update/downdate. Should only affect LPDASA. * added CHOLMOD_SUBSUB_VERSION Aug 31, 2005: version 0.6 released.