2025-01-12 04:36:52 +08:00

471 lines
17 KiB
Plaintext

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 <complex.h>.
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.