diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 696ba2ef34..c7c05e7138 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,5 +1,8 @@ # Pull request template for SuiteSparse + * Please do not submit a pull request to the default branch. Use the + dev or dev2 branch instead. If in doubt, please ask me first. + * Please describe your pull request: * No pull request can be accepted unless you first sign the diff --git a/AMD/CMakeLists.txt b/AMD/CMakeLists.txt index d0e4617553..c1fabb11f9 100644 --- a/AMD/CMakeLists.txt +++ b/AMD/CMakeLists.txt @@ -12,7 +12,7 @@ cmake_minimum_required ( VERSION 3.19 ) -set ( AMD_DATE "Nov 4, 2022" ) +set ( AMD_DATE "Nov 12, 2022" ) set ( AMD_VERSION_MAJOR 3 ) set ( AMD_VERSION_MINOR 0 ) set ( AMD_VERSION_SUB 0 ) diff --git a/AMD/Demo/amd_f77cross.f b/AMD/Demo/amd_f77cross.f index b79920d802..346514842c 100644 --- a/AMD/Demo/amd_f77cross.f +++ b/AMD/Demo/amd_f77cross.f @@ -3,11 +3,12 @@ C ====================================================================== C ---------------------------------------------------------------------- -C AMD, Copyright (c) by Timothy A. Davis, Patrick R. -C Amestoy, and Iain S. Duff. See ../README.txt for License. -C email: DrTimothyAldenDavis@gmail.com +C AMD, Copyright (c) 1996-2022, Timothy A. Davis, Patrick R. Amestoy, +C and Iain S. Duff. All Rights Reserved. +C SPDX-License-Identifier: BSD-3-clause C ---------------------------------------------------------------------- + C This program provides an example of how to call the C version of AMD C from a Fortran program. It is HIGHLY non-portable. @@ -46,5 +47,6 @@ PRINT 50, K, PERM (K) + 1 50 FORMAT ('PERM (',I2,') = ', I2) 60 CONTINUE + CALL FLUSH (6) END diff --git a/AMD/Demo/amd_f77demo.f b/AMD/Demo/amd_f77demo.f index 6aa6296a2e..b19a6b3412 100644 --- a/AMD/Demo/amd_f77demo.f +++ b/AMD/Demo/amd_f77demo.f @@ -3,9 +3,9 @@ C ====================================================================== C ---------------------------------------------------------------------- -C AMD, Copyright (c) by Timothy A. Davis, Patrick R. -C Amestoy, and Iain S. Duff. See ../README.txt for License. -C email: DrTimothyAldenDavis@gmail.com +C AMD, Copyright (c) 1996-2022, Timothy A. Davis, Patrick R. Amestoy, +C and Iain S. Duff. All Rights Reserved. +C SPDX-License-Identifier: BSD-3-clause C ---------------------------------------------------------------------- C A simple Fortran 77 main program that illustrates the use of the @@ -157,4 +157,5 @@ 170 FORMAT (' new row indices: ', 24I3) 180 CONTINUE 190 CONTINUE + CALL FLUSH (6) END diff --git a/AMD/Demo/amd_f77simple.f b/AMD/Demo/amd_f77simple.f index 8f39606e6e..3b8c62696a 100644 --- a/AMD/Demo/amd_f77simple.f +++ b/AMD/Demo/amd_f77simple.f @@ -1,7 +1,7 @@ C ---------------------------------------------------------------------- -C AMD, Copyright (c) by Timothy A. Davis, Patrick R. -C Amestoy, and Iain S. Duff. See ../README.txt for License. -C email: DrTimothyAldenDavis@gmail.com +C AMD, Copyright (c) 1996-2022, Timothy A. Davis, Patrick R. Amestoy, +C and Iain S. Duff. All Rights Reserved. +C SPDX-License-Identifier: BSD-3-clause C ---------------------------------------------------------------------- C This program provides an example of how to call the Fortran version @@ -34,4 +34,5 @@ PRINT 50, K, LAST (K) 50 FORMAT ('P (',I2,') = ', I2) 60 CONTINUE + CALL FLUSH (6) END diff --git a/AMD/Doc/ChangeLog b/AMD/Doc/ChangeLog index 69f8e2c6ac..27341cf793 100644 --- a/AMD/Doc/ChangeLog +++ b/AMD/Doc/ChangeLog @@ -1,4 +1,4 @@ -Nov 4, 2022: version 3.0.0 +Nov 12, 2022: version 3.0.0 * using CMake build system * integers: int (32-bit) and SuiteSparse_long (nominally 64-bit) replaced diff --git a/AMD/Doc/amd_version.tex b/AMD/Doc/amd_version.tex index 6acc4ab7dc..ef5c12b4fe 100644 --- a/AMD/Doc/amd_version.tex +++ b/AMD/Doc/amd_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/AMD -\date{VERSION 3.0.0, Nov 4, 2022} +\date{VERSION 3.0.0, Nov 12, 2022} diff --git a/AMD/Include/amd.h b/AMD/Include/amd.h index 1f7bd4ca49..7963568f7d 100644 --- a/AMD/Include/amd.h +++ b/AMD/Include/amd.h @@ -374,7 +374,7 @@ SUITESPARSE_PUBLIC void amd_l_info (double Info [ ]) ; * Versions 1.1 and earlier of AMD do not include a #define'd version number. */ -#define AMD_DATE "Nov 4, 2022" +#define AMD_DATE "Nov 12, 2022" #define AMD_MAIN_VERSION 3 #define AMD_SUB_VERSION 0 #define AMD_SUBSUB_VERSION 0 diff --git a/BTF/CMakeLists.txt b/BTF/CMakeLists.txt index 3bee3d114b..726aa5be65 100644 --- a/BTF/CMakeLists.txt +++ b/BTF/CMakeLists.txt @@ -12,7 +12,7 @@ cmake_minimum_required ( VERSION 3.19 ) -set ( BTF_DATE "Nov 4, 2022" ) +set ( BTF_DATE "Nov 12, 2022" ) set ( BTF_VERSION_MAJOR 2 ) set ( BTF_VERSION_MINOR 0 ) set ( BTF_VERSION_SUB 0 ) diff --git a/BTF/Doc/ChangeLog b/BTF/Doc/ChangeLog index 754cd03d33..de7fb1e049 100644 --- a/BTF/Doc/ChangeLog +++ b/BTF/Doc/ChangeLog @@ -1,4 +1,4 @@ -Nov 4, 2022: version 2.0.0 +Nov 12, 2022: version 2.0.0 * using CMake build system * integers: int (32-bit) and SuiteSparse_long (nominally 64-bit) replaced diff --git a/BTF/Include/btf.h b/BTF/Include/btf.h index 5bbcce966e..d90b3369ad 100644 --- a/BTF/Include/btf.h +++ b/BTF/Include/btf.h @@ -260,7 +260,7 @@ int64_t btf_l_order (int64_t, int64_t *, int64_t *, double , double *, * #endif */ -#define BTF_DATE "Nov 4, 2022" +#define BTF_DATE "Nov 12, 2022" #define BTF_MAIN_VERSION 2 #define BTF_SUB_VERSION 0 #define BTF_SUBSUB_VERSION 0 diff --git a/CAMD/CMakeLists.txt b/CAMD/CMakeLists.txt index 2c82fe63f6..620d8a3292 100644 --- a/CAMD/CMakeLists.txt +++ b/CAMD/CMakeLists.txt @@ -11,7 +11,7 @@ cmake_minimum_required ( VERSION 3.19 ) -set ( CAMD_DATE "Nov 4, 2022" ) +set ( CAMD_DATE "Nov 12, 2022" ) set ( CAMD_VERSION_MAJOR 3 ) set ( CAMD_VERSION_MINOR 0 ) set ( CAMD_VERSION_SUB 0 ) diff --git a/CAMD/Doc/ChangeLog b/CAMD/Doc/ChangeLog index ba5a5d3ce2..f167f30ff8 100644 --- a/CAMD/Doc/ChangeLog +++ b/CAMD/Doc/ChangeLog @@ -1,4 +1,4 @@ -Nov 4, 2022: version 3.0.0 +Nov 12, 2022: version 3.0.0 * using CMake build system * integers: int (32-bit) and SuiteSparse_long (nominally 64-bit) replaced diff --git a/CAMD/Doc/camd_version.tex b/CAMD/Doc/camd_version.tex index a05e876c77..243284db8c 100644 --- a/CAMD/Doc/camd_version.tex +++ b/CAMD/Doc/camd_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/CAMD -\date{VERSION 3.0.0, Nov 4, 2022} +\date{VERSION 3.0.0, Nov 12, 2022} diff --git a/CAMD/Include/camd.h b/CAMD/Include/camd.h index 7aa2c1827e..eddce9f905 100644 --- a/CAMD/Include/camd.h +++ b/CAMD/Include/camd.h @@ -384,7 +384,7 @@ SUITESPARSE_PUBLIC void camd_l_info (double Info [ ]) ; * #endif */ -#define CAMD_DATE "Nov 4, 2022" +#define CAMD_DATE "Nov 12, 2022" #define CAMD_MAIN_VERSION 3 #define CAMD_SUB_VERSION 0 #define CAMD_SUBSUB_VERSION 0 diff --git a/CCOLAMD/CMakeLists.txt b/CCOLAMD/CMakeLists.txt index 77104bd6f6..d2b11ca061 100644 --- a/CCOLAMD/CMakeLists.txt +++ b/CCOLAMD/CMakeLists.txt @@ -11,7 +11,7 @@ cmake_minimum_required ( VERSION 3.19 ) -set ( CCOLAMD_DATE "Nov 4, 2022" ) +set ( CCOLAMD_DATE "Nov 12, 2022" ) set ( CCOLAMD_VERSION_MAJOR 3 ) set ( CCOLAMD_VERSION_MINOR 0 ) set ( CCOLAMD_VERSION_SUB 0 ) diff --git a/CCOLAMD/Doc/ChangeLog b/CCOLAMD/Doc/ChangeLog index 3ddfdebb53..85c08a2aa6 100644 --- a/CCOLAMD/Doc/ChangeLog +++ b/CCOLAMD/Doc/ChangeLog @@ -1,4 +1,4 @@ -Nov 4, 2022: version 3.0.0 +Nov 12, 2022: version 3.0.0 * using CMake build system * integers: int (32-bit) and SuiteSparse_long (nominally 64-bit) replaced diff --git a/CCOLAMD/Include/ccolamd.h b/CCOLAMD/Include/ccolamd.h index 7ee961001e..b8bcd87b04 100644 --- a/CCOLAMD/Include/ccolamd.h +++ b/CCOLAMD/Include/ccolamd.h @@ -41,7 +41,7 @@ extern "C" { * #endif */ -#define CCOLAMD_DATE "Nov 4, 2022" +#define CCOLAMD_DATE "Nov 12, 2022" #define CCOLAMD_MAIN_VERSION 3 #define CCOLAMD_SUB_VERSION 0 #define CCOLAMD_SUBSUB_VERSION 0 diff --git a/CHOLMOD/CMakeLists.txt b/CHOLMOD/CMakeLists.txt index 334bfc8f2f..37515fa1ee 100644 --- a/CHOLMOD/CMakeLists.txt +++ b/CHOLMOD/CMakeLists.txt @@ -12,7 +12,7 @@ # cmake 3.22 is required to find the BLAS/LAPACK cmake_minimum_required ( VERSION 3.22 ) -set ( CHOLMOD_DATE "Nov 4, 2022" ) +set ( CHOLMOD_DATE "Nov 12, 2022" ) set ( CHOLMOD_VERSION_MAJOR 4 ) set ( CHOLMOD_VERSION_MINOR 0 ) set ( CHOLMOD_VERSION_SUB 0 ) @@ -34,10 +34,7 @@ set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/../CCOLAMD/cmake_modules ${CMAKE_SOURCE_DIR}/../SuiteSparse_config/cmake_modules ) -if ( NOT DEFINED ENABLE_CUDA ) - # default is to use CUDA, if available - set ( ENABLE_CUDA true ) -endif ( ) +option ( ENABLE_CUDA "Enable CUDA acceleration" on ) if ( NGPL ) # NGPL: if true, do not include any GPL-licensed module @@ -104,10 +101,8 @@ find_package ( AMD 3.0.0 REQUIRED ) # Check module #--------------------------------------------------------------------------- - if ( NOT DEFINED NCHECK ) - # by default, build the Check module - set ( NCHECK false ) - endif ( ) + option ( NCHECK "ON: do not use Check Module. OFF (default): use Check Module" off ) + if ( NOT EXISTS ${CMAKE_SOURCE_DIR}/Check ) # Check module does not appear so don't use it set ( NCHECK true ) @@ -121,10 +116,8 @@ find_package ( AMD 3.0.0 REQUIRED ) # MatrixOps module #--------------------------------------------------------------------------- - if ( NOT DEFINED NMATRIXOPS ) - # by default, build the MatrixOps module - set ( NMATRIXOPS false ) - endif ( ) + option ( NMATRIXOPS "ON: do not use MatrixOps Module. OFF (default): use MatrixOps Module" off ) + if ( NOT EXISTS ${CMAKE_SOURCE_DIR}/MatrixOps ) # MatrixOps module does not appear so don't use it set ( NMATRIXOPS true ) @@ -138,10 +131,8 @@ find_package ( AMD 3.0.0 REQUIRED ) # Cholesky module: requires AMD, COLAMD #--------------------------------------------------------------------------- - if ( NOT DEFINED NCHOLESKY ) - # by default, build the Cholesky module - set ( NCHOLESKY false ) - endif ( ) + option ( NCHOLESKY "ON: do not use Cholesky Module. OFF (default): use Cholesky Module" off ) + if ( NOT EXISTS ${CMAKE_SOURCE_DIR}/Cholesky ) # Cholesky module does not appear so don't use it set ( NCHOLESKY true ) @@ -158,10 +149,8 @@ find_package ( AMD 3.0.0 REQUIRED ) # Modify module: requires Cholesky #--------------------------------------------------------------------------- - if ( NOT DEFINED NMODIFY ) - # by default, build the Modify module - set ( NMODIFY false ) - endif ( ) + option ( NMODIFY "ON: do not use Modify Module. OFF (default): use Modify Module" off ) + if ( NOT EXISTS ${CMAKE_SOURCE_DIR}/Modify ) # Modify module does not appear so don't use it set ( NMODIFY true ) @@ -175,10 +164,7 @@ find_package ( AMD 3.0.0 REQUIRED ) # interfaces to CAMD and CCOLAMD #--------------------------------------------------------------------------- - if ( NOT DEFINED NCAMD ) - # by default, compile with CAMD and CCOLAMD - set ( NCAMD false ) - endif ( ) + option ( NCAMD "ON: do not use CAMD/CCOLAMD. OFF (default): use CAMD/CCOLAMD" off ) if ( NOT NCAMD ) # find CAMD and CCOLAMD @@ -200,20 +186,18 @@ find_package ( AMD 3.0.0 REQUIRED ) # Partition module: requires Cholesky, CAMD, CCOLAMD, and METIS #--------------------------------------------------------------------------- - if ( NOT DEFINED NPARTITION ) - # by default, build the Partition module - set ( NPARTITION false ) - endif ( ) + option ( NPARTITION "ON: do not use METIS. OFF (default): use METIS" off ) + if ( NOT EXISTS ${CMAKE_SOURCE_DIR}/Partition ) # Partition module does not appear so don't use it set ( NPARTITION true ) + # The Partition module does not exist, so skip CAMD and CCOLAMD, since + # the Partition Module is CHOLMOD's only interface to CAMD and CCOLAMD. + set ( NCAMD true ) endif ( ) if ( NPARTITION ) # if NPARTITION is true: do not build the Partition module add_compile_definitions ( NPARTITION ) - # Partition module is not being built, so skip CAMD and CCOLAMD, since - # the Partition Module is CHOLMOD's only interface to CAMD and CCOLAMD. - set ( NCAMD true ) endif ( ) if ( NCAMD ) @@ -225,10 +209,7 @@ find_package ( AMD 3.0.0 REQUIRED ) # Supernodal module: requires Cholesky, BLAS, and LAPACK #--------------------------------------------------------------------------- - if ( NOT DEFINED NSUPERNODAL ) - # by default, build the Supernodal module - set ( NSUPERNODAL false ) - endif ( ) + option ( NSUPERNODAL "ON: do not use Supernodal Module. OFF (default): use Supernodal Module" off ) if ( NOT EXISTS ${CMAKE_SOURCE_DIR}/Supernodal ) # Supernodal module does not appear so don't use it diff --git a/CHOLMOD/Doc/ChangeLog b/CHOLMOD/Doc/ChangeLog index 1f8973f502..864aec5313 100644 --- a/CHOLMOD/Doc/ChangeLog +++ b/CHOLMOD/Doc/ChangeLog @@ -1,4 +1,4 @@ -Nov 4, 2022: version 4.0.0 +Nov 12, 2022: version 4.0.0 * using CMake build system * integers: int (32-bit) and SuiteSparse_long (nominally 64-bit) replaced @@ -9,6 +9,10 @@ Nov 4, 2022: version 4.0.0 * 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 diff --git a/CHOLMOD/Doc/cholmod_version.tex b/CHOLMOD/Doc/cholmod_version.tex index 7fb30b1b44..194eb45b9a 100644 --- a/CHOLMOD/Doc/cholmod_version.tex +++ b/CHOLMOD/Doc/cholmod_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/CHOLMOD -\date{VERSION 4.0.0, Nov 4, 2022} +\date{VERSION 4.0.0, Nov 12, 2022} diff --git a/CHOLMOD/Include/cholmod.h b/CHOLMOD/Include/cholmod.h index a0f86e3e84..4769b30245 100644 --- a/CHOLMOD/Include/cholmod.h +++ b/CHOLMOD/Include/cholmod.h @@ -97,7 +97,7 @@ #ifndef CHOLMOD_H #define CHOLMOD_H -#define CHOLMOD_DATE "Nov 4, 2022" +#define CHOLMOD_DATE "Nov 12, 2022" #define CHOLMOD_MAIN_VERSION 4 #define CHOLMOD_SUB_VERSION 0 #define CHOLMOD_SUBSUB_VERSION 0 diff --git a/CHOLMOD/MATLAB/cholmod_install.m b/CHOLMOD/MATLAB/cholmod_install.m index ae655d79c2..4700c32650 100644 --- a/CHOLMOD/MATLAB/cholmod_install.m +++ b/CHOLMOD/MATLAB/cholmod_install.m @@ -1,10 +1,8 @@ -function cholmod_install (metis_path) +function cholmod_install %CHOLMOD_INSTALL compile and install CHOLMOD, AMD, COLAMD, CCOLAMD, CAMD % % Example: % cholmod_install % compiles using METIS -% cholmod_install ('/my/metis') % using non-default path to METIS -% cholmod_install ('no metis') % do not use METIS at all % % CHOLMOD relies on AMD and COLAMD, for its ordering options, and can % optionally use CCOLAMD, CAMD, and METIS as well. By default, CCOLAMD, CAMD, @@ -22,12 +20,8 @@ function cholmod_install (metis_path) % Copyright 2006-2022, Timothy A. Davis, All Rights Reserved. % SPDX-License-Identifier: GPL-2.0+ -if (nargin < 1) - metis_path = '../../SuiteSparse_metis' ; -end - % compile CHOLMOD and add to the path -cholmod_make (metis_path) ; +cholmod_make ; cholmod_path = pwd ; addpath (cholmod_path) diff --git a/CHOLMOD/MATLAB/cholmod_make.m b/CHOLMOD/MATLAB/cholmod_make.m index 8752ab85da..62ef9962f3 100644 --- a/CHOLMOD/MATLAB/cholmod_make.m +++ b/CHOLMOD/MATLAB/cholmod_make.m @@ -1,4 +1,4 @@ -function cholmod_make (metis_path) +function cholmod_make %CHOLMOD_MAKE compiles the CHOLMOD mexFunctions % % Example: @@ -41,7 +41,7 @@ function cholmod_make (metis_path) flags = ['-silent ' flags] ; end -include = '-I. -I../../AMD/Include -I../../COLAMD/Include -I../../CCOLAMD/Include -I../../CAMD/Include -I../Include -I../../SuiteSparse_config' ; +include = '-I. -I.. -I../../AMD/Include -I../../COLAMD/Include -I../../CCOLAMD/Include -I../../CAMD/Include -I../Include -I../../SuiteSparse_config' ; if (verLessThan ('matlab', '7.0')) % do not attempt to compile CHOLMOD with large file support @@ -52,33 +52,29 @@ function cholmod_make (metis_path) end if (verLessThan ('matlab', '6.5')) - % logical class does not exist in MATLAB 6.1 or earlie + % logical class does not exist in MATLAB 6.1 or earlier include = [include ' -DMATLAB6p1_OR_EARLIER'] ; end - % Determine if METIS is available -if (nargin < 1) - metis_path = '../../SuiteSparse_metis' ; -end -have_metis = exist (metis_path, 'dir') ; +% Determine if METIS is available +have_metis = exist ('../SuiteSparse_metis', 'dir') ; if (have_metis) fprintf ('Compiling CHOLMOD with SuiteSparse_metis for MATLAB Version %s\n', v) ; - include = [include ' -I' metis_path '/include'] ; - include = [include ' -I' metis_path '/GKlib'] ; - include = [include ' -I' metis_path '/libmetis'] ; + include = [include ' -I../SuiteSparse_metis/include'] ; + include = [include ' -I../SuiteSparse_metis/GKlib'] ; + include = [include ' -I../SuiteSparse_metis/libmetis'] ; else fprintf ('Compiling CHOLMOD without SuiteSparse_metis for MATLAB Version %s\n', v) ; include = ['-DNPARTITION ' include] ; end - %--------------------------------------------------------------------------- % BLAS option %--------------------------------------------------------------------------- % This is exceedingly ugly. The MATLAB mex command needs to be told where to - % fine the LAPACK and BLAS libraries, which is a real portability nightmare. + % find the LAPACK and BLAS libraries, which is a real portability nightmare. if (pc) % BLAS/LAPACK functions have no underscore on Windows @@ -142,77 +138,6 @@ function cholmod_make (metis_path) '../../COLAMD/Source/colamd_l', ... '../../CCOLAMD/Source/ccolamd_l' } ; -if (have_metis) - - metis_src = { - 'GKlib/b64', ... - 'GKlib/blas', ... - 'GKlib/csr', ... - 'GKlib/error', ... - 'GKlib/evaluate', ... - 'GKlib/fkvkselect', ... - 'GKlib/fs', ... - 'GKlib/getopt', ... - 'GKlib/gkregex', ... - 'GKlib/graph', ... - 'GKlib/htable', ... - 'GKlib/io', ... - 'GKlib/itemsets', ... - 'GKlib/mcore', ... - 'GKlib/memory', ... - 'GKlib/omp', ... - 'GKlib/pdb', ... - 'GKlib/pqueue', ... - 'GKlib/random', ... - 'GKlib/rw', ... - 'GKlib/seq', ... - 'GKlib/sort', ... - 'GKlib/string', ... - 'GKlib/timers', ... - 'GKlib/tokenizer', ... - 'GKlib/util', ... - 'libmetis/auxapi', ... - 'libmetis/balance', ... - 'libmetis/bucketsort', ... - 'libmetis/checkgraph', ... - 'libmetis/coarsen', ... - 'libmetis/compress', ... - 'libmetis/contig', ... - 'libmetis/debug', ... - 'libmetis/fm', ... - 'libmetis/fortran', ... - 'libmetis/frename', ... - 'libmetis/gklib', ... - 'libmetis/graph', ... - 'libmetis/initpart', ... - 'libmetis/kmetis', ... - 'libmetis/kwayfm', ... - 'libmetis/kwayrefine', ... - 'libmetis/mcutil', ... - 'libmetis/mesh', ... - 'libmetis/meshpart', ... - 'libmetis/minconn', ... - 'libmetis/mincover', ... - 'libmetis/mmd', ... - 'libmetis/ometis', ... - 'libmetis/options', ... - 'libmetis/parmetis', ... - 'libmetis/pmetis', ... - 'libmetis/refine', ... - 'libmetis/separator', ... - 'libmetis/sfm', ... - 'libmetis/srefine', ... - 'libmetis/stat', ... - 'libmetis/timing', ... - 'libmetis/util', ... - 'libmetis/wspace', ... - } ; - - for i = 1:length (metis_src) - metis_src {i} = [metis_path '/' metis_src{i}] ; - end -end - cholmod_matlab = { 'cholmod_matlab' } ; cholmod_src = { @@ -260,6 +185,7 @@ function cholmod_make (metis_path) '../Supernodal/cholmod_l_super_numeric', ... '../Supernodal/cholmod_l_super_solve', ... '../Supernodal/cholmod_l_super_symbolic', ... + '../Partition/cholmod_metis_wrapper', ... '../Partition/cholmod_l_ccolamd', ... '../Partition/cholmod_l_csymamd', ... '../Partition/cholmod_l_camd', ... @@ -304,33 +230,18 @@ function cholmod_make (metis_path) obj = '' ; source = [ordering_src config_src cholmod_src cholmod_matlab] ; -if (have_metis) - source = [metis_src source] ; -end kk = 0 ; for f = source ff = f {1} ; - if (isequal (ff, [metis_path '/GKlib/util'])) - % special case, since a file with the same name also exists in libmetis - copyfile ([ff '.c'], 'GKlib_util.c', 'f') ; - ff = 'GKlib_util' ; - o = 'GKlib_util' ; - elseif (isequal (ff, [metis_path '/GKlib/graph'])) - % special case, since a file with the same name also exist in libmetis - copyfile ([ff '.c'], 'GKlib_graph.c', 'f') ; - ff = 'GKlib_graph' ; - o = 'GKlib_graph' ; + slash = strfind (ff, '/') ; + if (isempty (slash)) + slash = 1 ; else - slash = strfind (ff, '/') ; - if (isempty (slash)) - slash = 1 ; - else - slash = slash (end) + 1 ; - end - o = ff (slash:end) ; + slash = slash (end) + 1 ; end + o = ff (slash:end) ; % fprintf ('%s\n', o) ; o = [o obj_extension] ; obj = [obj ' ' o] ; %#ok @@ -350,14 +261,6 @@ function cholmod_make (metis_path) do_cmd (s, kk, details) ; fprintf ('\nCHOLMOD successfully compiled\n') ; -% remove the renamed METIS files, if they exist -if (exist ('GKlib_util.c', 'file')) - delete ('GKlib_util.c') ; -end -if (exist ('GKlib_graph.c', 'file')) - delete ('GKlib_graph.c') ; -end - %------------------------------------------------------------------------------ function kk = do_cmd (s, kk, details) %DO_CMD: evaluate a command, and either print it or print a "." diff --git a/CHOLMOD/Partition/cholmod_metis_wrapper.c b/CHOLMOD/Partition/cholmod_metis_wrapper.c index e2c369cd9e..7e68e8d9f6 100644 --- a/CHOLMOD/Partition/cholmod_metis_wrapper.c +++ b/CHOLMOD/Partition/cholmod_metis_wrapper.c @@ -19,7 +19,7 @@ #include "cholmod_metis_wrapper.h" -#if defined ( __GNUC__ ) +#if defined ( __GNUC__ ) && !defined ( __clang__ ) // disable memcpy warnings: #pragma GCC diagnostic ignored "-Wstringop-overflow=" // csr.c has misleading indentation: diff --git a/COLAMD/CMakeLists.txt b/COLAMD/CMakeLists.txt index 6c4660cdbb..94302da0c2 100644 --- a/COLAMD/CMakeLists.txt +++ b/COLAMD/CMakeLists.txt @@ -11,7 +11,7 @@ cmake_minimum_required ( VERSION 3.19 ) -set ( COLAMD_DATE "Nov 4, 2022" ) +set ( COLAMD_DATE "Nov 12, 2022" ) set ( COLAMD_VERSION_MAJOR 3 ) set ( COLAMD_VERSION_MINOR 0 ) set ( COLAMD_VERSION_SUB 0 ) diff --git a/COLAMD/Doc/ChangeLog b/COLAMD/Doc/ChangeLog index d01cdf4352..f7e7656e24 100644 --- a/COLAMD/Doc/ChangeLog +++ b/COLAMD/Doc/ChangeLog @@ -1,4 +1,4 @@ -Nov 4, 2022: version 3.0.0 +Nov 12, 2022: version 3.0.0 * using CMake build system * integers: int (32-bit) and SuiteSparse_long (nominally 64-bit) replaced diff --git a/COLAMD/Include/colamd.h b/COLAMD/Include/colamd.h index 14b58f2a69..b322a96f17 100644 --- a/COLAMD/Include/colamd.h +++ b/COLAMD/Include/colamd.h @@ -70,7 +70,7 @@ extern "C" { * Versions 2.3 and earlier of COLAMD do not include a #define'd version number. */ -#define COLAMD_DATE "Nov 4, 2022" +#define COLAMD_DATE "Nov 12, 2022" #define COLAMD_MAIN_VERSION 3 #define COLAMD_SUB_VERSION 0 #define COLAMD_SUBSUB_VERSION 0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 433841586a..a81e104cf1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,3 +13,6 @@ and email it to me at DrTimothyAldenDavis@gmail.com. Pull requests will only be included into SuiteSparse after I receive your email with the signed PDF. +Do not submit a pull request to the default branch. +Instead, use the dev or dev2 branches. + diff --git a/CSparse/CMakeLists.txt b/CSparse/CMakeLists.txt index 4660307d3b..31db48f0cb 100644 --- a/CSparse/CMakeLists.txt +++ b/CSparse/CMakeLists.txt @@ -17,7 +17,7 @@ cmake_minimum_required ( VERSION 3.13 ) -set ( CSPARSE_DATE "Nov 4, 2022" ) +set ( CSPARSE_DATE "Nov 12, 2022" ) set ( CSPARSE_VERSION_MAJOR 4 ) set ( CSPARSE_VERSION_MINOR 0 ) set ( CSPARSE_VERSION_SUB 0 ) diff --git a/CSparse/Doc/ChangeLog b/CSparse/Doc/ChangeLog index a5de3def22..c42176747b 100644 --- a/CSparse/Doc/ChangeLog +++ b/CSparse/Doc/ChangeLog @@ -1,4 +1,4 @@ -Nov 4, 2022: version 4.0.0 +Nov 12, 2022: version 4.0.0 * using CMake build system * integers: csi integer changed from ptrdiff_t to int64_t. diff --git a/CSparse/Include/cs.h b/CSparse/Include/cs.h index c989b3d720..81235bd7ca 100644 --- a/CSparse/Include/cs.h +++ b/CSparse/Include/cs.h @@ -15,7 +15,7 @@ #define CS_VER 4 /* CSparse Version */ #define CS_SUBVER 0 #define CS_SUBSUB 0 -#define CS_DATE "Nov 4, 2022" /* CSparse release date */ +#define CS_DATE "Nov 12, 2022" /* CSparse release date */ #define CS_COPYRIGHT "Copyright (c) Timothy A. Davis, 2006-2022" #ifndef csi diff --git a/CXSparse/CMakeLists.txt b/CXSparse/CMakeLists.txt index ebd11610f0..38d6a4edfb 100644 --- a/CXSparse/CMakeLists.txt +++ b/CXSparse/CMakeLists.txt @@ -11,7 +11,7 @@ cmake_minimum_required ( VERSION 3.19 ) -set ( CXSPARSE_DATE "Nov 4, 2022" ) +set ( CXSPARSE_DATE "Nov 12, 2022" ) set ( CXSPARSE_VERSION_MAJOR 4 ) set ( CXSPARSE_VERSION_MINOR 0 ) set ( CXSPARSE_VERSION_SUB 0 ) diff --git a/CXSparse/Doc/ChangeLog b/CXSparse/Doc/ChangeLog index 4f20c7c5c4..3d3c705056 100644 --- a/CXSparse/Doc/ChangeLog +++ b/CXSparse/Doc/ChangeLog @@ -1,4 +1,4 @@ -Nov 4, 2022: version 4.0.0 +Nov 12, 2022: version 4.0.0 * using CMake build system * integers: int (32-bit) and SuiteSparse_long (nominally 64-bit) replaced diff --git a/CXSparse/Include/cs.h b/CXSparse/Include/cs.h index 5fc4734717..719f812078 100644 --- a/CXSparse/Include/cs.h +++ b/CXSparse/Include/cs.h @@ -42,7 +42,7 @@ extern "C" { #define CS_VER 4 /* CXSparse Version */ #define CS_SUBVER 0 #define CS_SUBSUB 0 -#define CS_DATE "Nov 4, 2022" /* CXSparse release date */ +#define CS_DATE "Nov 12, 2022" /* CXSparse release date */ #define CS_COPYRIGHT "Copyright (c) Timothy A. Davis, 2006-2022" #define CXSPARSE diff --git a/ChangeLog b/ChangeLog index 9508bc75ea..da9c9666ee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -Nov 4, 2022: SuiteSparse 6.0.0 +Nov 12, 2022: SuiteSparse 6.0.0 * major update: using CMake build system for all packages * CMake Find*: all packages now have a Find*.cmake. See @@ -12,10 +12,8 @@ Nov 4, 2022: SuiteSparse 6.0.0 all packages has been increased by one. * UMFPACK: new options to support ParU. Single umfpack.h include file. * CHOLMOD: Single cholmod.h include file. - * SuiteSparse/metis-5.1.0: renamed SuiteSparse_metis, to avoid confusion - with the unmodified metis-5.1.0. The compiled library is named - libsuitesparse_metis.so. The unmodified libmetis.so cannot be used - with SuiteSparse. + * SuiteSparse/metis-5.1.0: now embedded into CHOLMOD, in a different + name space. No longer an independent library. * SPDX License Identifier: added to each file. No change in license. * BLAS/LAPACK interface: now supports any Fortran BLAS/LAPACK, with either 32-bit (default) or 64-bit integers. diff --git a/GPUQREngine/CMakeLists.txt b/GPUQREngine/CMakeLists.txt index b43a9e7bae..43fca9b256 100644 --- a/GPUQREngine/CMakeLists.txt +++ b/GPUQREngine/CMakeLists.txt @@ -13,7 +13,7 @@ # cmake 3.22 is required to find the BLAS/LAPACK cmake_minimum_required ( VERSION 3.19 ) -set ( GPUQRENGINE_DATE "Nov 4, 2022" ) +set ( GPUQRENGINE_DATE "Nov 12, 2022" ) set ( GPUQRENGINE_VERSION_MAJOR 2 ) set ( GPUQRENGINE_VERSION_MINOR 0 ) set ( GPUQRENGINE_VERSION_SUB 0 ) @@ -38,10 +38,7 @@ set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/../SuiteSparse_GPURuntime/cmake_modules ${CMAKE_SOURCE_DIR}/../SuiteSparse_config/cmake_modules ) -if ( NOT DEFINED ENABLE_CUDA ) - # default is to use CUDA, if available - set ( ENABLE_CUDA true ) -endif ( ) +option ( ENABLE_CUDA "Enable CUDA acceleration" on ) include ( SuiteSparsePolicy ) diff --git a/GPUQREngine/Doc/ChangeLog b/GPUQREngine/Doc/ChangeLog index bd8ae47a25..512fec7323 100644 --- a/GPUQREngine/Doc/ChangeLog +++ b/GPUQREngine/Doc/ChangeLog @@ -1,4 +1,4 @@ -Nov 4, 2022: version 2.0.0 +Nov 12, 2022: version 2.0.0 * using CMake build system * integers: int (32-bit) and SuiteSparse_long (nominally 64-bit) replaced diff --git a/GPUQREngine/Include/GPUQREngine.hpp b/GPUQREngine/Include/GPUQREngine.hpp index ad93c95832..21b03a2c79 100644 --- a/GPUQREngine/Include/GPUQREngine.hpp +++ b/GPUQREngine/Include/GPUQREngine.hpp @@ -53,7 +53,7 @@ Int *GPUQREngine_FindStaircase ); // Version information: -#define GPUQRENGINE_DATE "Nov 4, 2022" +#define GPUQRENGINE_DATE "Nov 12, 2022" #define GPUQRENGINE_MAIN_VERSION 2 #define GPUQRENGINE_SUB_VERSION 0 #define GPUQRENGINE_SUBSUB_VERSION 0 diff --git a/GraphBLAS/CMakeLists.txt b/GraphBLAS/CMakeLists.txt index ccc8f01d59..e651497ec3 100644 --- a/GraphBLAS/CMakeLists.txt +++ b/GraphBLAS/CMakeLists.txt @@ -14,7 +14,7 @@ cmake_minimum_required ( VERSION 3.19 ) # version of SuiteSparse:GraphBLAS -set ( GraphBLAS_DATE "Nov 3, 2022" ) +set ( GraphBLAS_DATE "Nov 12, 2022" ) set ( GraphBLAS_VERSION_MAJOR 7 ) set ( GraphBLAS_VERSION_MINOR 3 ) set ( GraphBLAS_VERSION_SUB 2 ) @@ -41,15 +41,15 @@ set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake_modules ${CMAKE_SOURCE_DIR}/../SuiteSparse_config/cmake_modules ) -if ( NOT DEFINED NSTATIC ) - # default for GraphBLAS: do not build the static libraries - set ( NSTATIC true ) -endif ( ) - # CUDA is under development for now, and not deployed in production: +# option ( ENABLE_CUDA "Enable CUDA acceleration" off ) set ( ENABLE_CUDA false ) # set ( ENABLE_CUDA true ) +# GraphBLAS takes a long time to build, so do not build the static library +# by default +set ( NSTATIC_DEFAULT_ON true ) + include ( SuiteSparsePolicy ) #------------------------------------------------------------------------------- diff --git a/GraphBLAS/Doc/ChangeLog b/GraphBLAS/Doc/ChangeLog index 8d4e16e7d1..233df641e8 100644 --- a/GraphBLAS/Doc/ChangeLog +++ b/GraphBLAS/Doc/ChangeLog @@ -1,7 +1,7 @@ -Version 7.3.2, Nov 3, 2022 - - * cmake_modules: SuiteSparsePolicy.cmake did not correctly detect if - GraphBLAS was being compiled inside SuiteSparse or not. +Version 7.3.2, Nov 12, 2022 + + * cmake_modules: minor revision to build system, to sync + with SuiteSparse v6.0.0 Version 7.3.1, Oct 21, 2022 diff --git a/GraphBLAS/Doc/GraphBLAS_UserGuide.tex b/GraphBLAS/Doc/GraphBLAS_UserGuide.tex index cc2d74f2f4..7abc184621 100644 --- a/GraphBLAS/Doc/GraphBLAS_UserGuide.tex +++ b/GraphBLAS/Doc/GraphBLAS_UserGuide.tex @@ -15455,11 +15455,11 @@ \section{Release Notes} \begin{itemize} -\item Version 7.3.2 (Nov 3, 2022) +\item Version 7.3.2 (Nov 12, 2022) \begin{packed_itemize} - \item \verb'cmake_modules' updated; incorrectly determining if - GraphBLAS is being compiled inside SuiteSparse + \item \verb'cmake_modules': minor revision to build system, to sync + with SuiteSparse v6.0.0 \end{packed_itemize} \item Version 7.3.1 (Oct 21, 2022) diff --git a/GraphBLAS/Doc/GraphBLAS_version.tex b/GraphBLAS/Doc/GraphBLAS_version.tex index 02c822986a..1978917d4c 100644 --- a/GraphBLAS/Doc/GraphBLAS_version.tex +++ b/GraphBLAS/Doc/GraphBLAS_version.tex @@ -1,5 +1,5 @@ % version of SuiteSparse:GraphBLAS \date{VERSION 7.3.2, -Nov 3, 2022} +Nov 12, 2022} diff --git a/GraphBLAS/GraphBLAS/CMakeLists.txt b/GraphBLAS/GraphBLAS/CMakeLists.txt index 2885a0cd4c..1fb21be1ea 100644 --- a/GraphBLAS/GraphBLAS/CMakeLists.txt +++ b/GraphBLAS/GraphBLAS/CMakeLists.txt @@ -17,7 +17,7 @@ cmake_minimum_required ( VERSION 3.19 ) # date version must match ../CMakeLists.txt: # version of SuiteSparse:GraphBLAS -set ( GraphBLAS_DATE "Nov 3, 2022" ) +set ( GraphBLAS_DATE "Nov 12, 2022" ) set ( GraphBLAS_VERSION_MAJOR 7 ) set ( GraphBLAS_VERSION_MINOR 3 ) set ( GraphBLAS_VERSION_SUB 2 ) diff --git a/GraphBLAS/Include/GraphBLAS.h b/GraphBLAS/Include/GraphBLAS.h index b35080e64e..81d5c3849a 100644 --- a/GraphBLAS/Include/GraphBLAS.h +++ b/GraphBLAS/Include/GraphBLAS.h @@ -221,7 +221,7 @@ // The version of this implementation, and the GraphBLAS API version: #define GxB_IMPLEMENTATION_NAME "SuiteSparse:GraphBLAS" -#define GxB_IMPLEMENTATION_DATE "Nov 3, 2022" +#define GxB_IMPLEMENTATION_DATE "Nov 12, 2022" #define GxB_IMPLEMENTATION_MAJOR 7 #define GxB_IMPLEMENTATION_MINOR 3 #define GxB_IMPLEMENTATION_SUB 2 diff --git a/GraphBLAS/README.md b/GraphBLAS/README.md index 05e3d54aa1..ca7a058358 100644 --- a/GraphBLAS/README.md +++ b/GraphBLAS/README.md @@ -4,7 +4,7 @@ SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2022, All Rights Reserved. SPDX-License-Identifier: Apache-2.0 -VERSION 7.3.2, Nov 3, 2022 +VERSION 7.3.2, Nov 12, 2022 SuiteSparse:GraphBLAS is a complete implementation of the GraphBLAS standard, which defines a set of sparse matrix operations on an extended algebra of diff --git a/GraphBLAS/cmake_modules/SuiteSparsePolicy.cmake b/GraphBLAS/cmake_modules/SuiteSparsePolicy.cmake index e407183864..785a3174b6 100644 --- a/GraphBLAS/cmake_modules/SuiteSparsePolicy.cmake +++ b/GraphBLAS/cmake_modules/SuiteSparsePolicy.cmake @@ -33,9 +33,6 @@ # is treated as if it always false, since the mongoose # program is built with the static library. # -# NPARTITION: if true, SuiteSparse_metis will not be compiled or used. -# Default: false -# # SUITESPARSE_CUDA_ARCHITECTURES: a string, such as "all" or # "35;50;75;80" that lists the CUDA architectures to use # when compiling CUDA kernels with nvcc. The "all" @@ -58,12 +55,13 @@ cmake_policy ( SET CMP0104 NEW ) # initialize CUDA architectures set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake_modules ) -if ( NOT DEFINED NPARTITION ) - set ( NPARTITION false ) -endif ( ) -if ( NPARTITION ) - add_compile_definitions ( NPARTITION ) +if ( NSTATIC_DEFAULT_ON ) + option ( NSTATIC "ON (default): do not built static libraries. OFF: build static libraries" on ) +else ( ) + option ( NSTATIC "ON: do not built static libraries. OFF (default): build static libraries" off ) endif ( ) +option ( GLOBAL_INSTALL "Install in CMAKE_INSTALL_PREFIX" on ) +option ( LOCAL_INSTALL "Install in SuiteSparse/lib" off ) if ( SUITESPARSE_SECOND_LEVEL ) # some packages in SuiteSparse is in SuiteSparse/Package/Package @@ -83,30 +81,9 @@ include ( GNUInstallDirs ) # find this one without "make install" set ( CMAKE_BUILD_RPATH ${CMAKE_BUILD_RPATH} ${CMAKE_BINARY_DIR} ) -if ( NOT DEFINED NSTATIC ) - # default for all SuiteSparse packages (except GraphBLAS) - # is to build the static libraries. - set ( NSTATIC false ) -endif ( ) - # determine if this package is inside the top-level SuiteSparse folder # (if ../lib and ../include exist, relative to the source directory) - -if ( NOT DEFINED GLOBAL_INSTALL ) - # if not defined, GLOBAL_INSTALL is set to true. - # "make install" will install in CMAKE_INSTALL_PREFIX - set ( GLOBAL_INSTALL true ) -endif ( ) - -if ( NOT DEFINED LOCAL_INSTALL ) - # if not defined, LOCAL_INSTALL is set to false - # "make install" will install in SuiteSparse/[lib,include,bin], - # if they exist. - set ( LOCAL_INSTALL false ) -endif ( ) - set ( INSIDE_SUITESPARSE false ) - if ( LOCAL_INSTALL ) # if you do not want to install local copies of SuiteSparse # packages in SuiteSparse/lib and SuiteSparse/, set @@ -205,12 +182,8 @@ endif ( ) if ( SUITESPARSE_CUDA ) message ( STATUS "CUDA: enabled" ) add_compile_definitions ( SUITESPARSE_CUDA ) - if ( NOT DEFINED SUITESPARSE_CUDA_ARCHITECTURES ) - # default architectures - set ( CMAKE_CUDA_ARCHITECTURES "52;75;80" ) - else ( ) - set ( CMAKE_CUDA_ARCHITECTURES ${SUITESPARSE_CUDA_ARCHITECTURES} ) - endif ( ) + set ( SUITESPARSE_CUDA_ARCHITECTURES "52:75:80" CACHE STRING "CUDA architectures" ) + set ( CMAKE_CUDA_ARCHITECTURES ${SUITESPARSE_CUDA_ARCHITECTURES} ) else ( ) message ( STATUS "CUDA: not enabled" ) endif ( ) diff --git a/KLU/CMakeLists.txt b/KLU/CMakeLists.txt index a15cde99bb..de6bfa23c9 100644 --- a/KLU/CMakeLists.txt +++ b/KLU/CMakeLists.txt @@ -12,7 +12,7 @@ cmake_minimum_required ( VERSION 3.19 ) -set ( KLU_DATE "Nov 4, 2022" ) +set ( KLU_DATE "Nov 12, 2022" ) set ( KLU_VERSION_MAJOR 2 ) set ( KLU_VERSION_MINOR 0 ) set ( KLU_VERSION_SUB 0 ) @@ -54,10 +54,7 @@ find_package ( BTF 2.0.0 REQUIRED ) find_package ( COLAMD 3.0.0 REQUIRED ) find_package ( AMD 3.0.0 REQUIRED ) -if ( NOT DEFINED NCHOLMOD ) - # use CHOLMOD by default - set ( NCHOLMOD false ) -endif ( ) +option ( NCHOLMOD "ON: do not use CHOLMOD. OFF (default): use CHOLMOD" off ) if ( NOT NCHOLMOD ) # look for CHOLMOD (optional fill-reducing orderings for UMFPACK) diff --git a/KLU/Doc/ChangeLog b/KLU/Doc/ChangeLog index 16320f3a88..6da40d20e4 100644 --- a/KLU/Doc/ChangeLog +++ b/KLU/Doc/ChangeLog @@ -1,4 +1,4 @@ -Nov 4, 2022: version 2.0.0 +Nov 12, 2022: version 2.0.0 * using CMake build system * integers: int (32-bit) and SuiteSparse_long (nominally 64-bit) replaced diff --git a/KLU/Doc/klu_version.tex b/KLU/Doc/klu_version.tex index 9fc6e8ca2a..a722f280c1 100644 --- a/KLU/Doc/klu_version.tex +++ b/KLU/Doc/klu_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/KLU -\date{VERSION 2.0.0, Nov 4, 2022} +\date{VERSION 2.0.0, Nov 12, 2022} diff --git a/KLU/Include/klu.h b/KLU/Include/klu.h index 9cc1dfd0cc..3e80aa66b2 100644 --- a/KLU/Include/klu.h +++ b/KLU/Include/klu.h @@ -878,7 +878,7 @@ void *klu_l_realloc (size_t, size_t, size_t, void *, klu_l_common *) ; * #endif */ -#define KLU_DATE "Nov 4, 2022" +#define KLU_DATE "Nov 12, 2022" #define KLU_MAIN_VERSION 2 #define KLU_SUB_VERSION 0 #define KLU_SUBSUB_VERSION 0 diff --git a/LDL/CMakeLists.txt b/LDL/CMakeLists.txt index 497c8df3cb..cb17d29867 100644 --- a/LDL/CMakeLists.txt +++ b/LDL/CMakeLists.txt @@ -11,7 +11,7 @@ cmake_minimum_required ( VERSION 3.19 ) -set ( LDL_DATE "Nov 4, 2022" ) +set ( LDL_DATE "Nov 12, 2022" ) set ( LDL_VERSION_MAJOR 3 ) set ( LDL_VERSION_MINOR 0 ) set ( LDL_VERSION_SUB 0 ) diff --git a/LDL/Doc/ChangeLog b/LDL/Doc/ChangeLog index 45e50ea4d5..7bf2bd6ff3 100644 --- a/LDL/Doc/ChangeLog +++ b/LDL/Doc/ChangeLog @@ -1,4 +1,4 @@ -Nov 4, 2022: version 3.0.0 +Nov 12, 2022: version 3.0.0 * using CMake build system * integers: int (32-bit) and SuiteSparse_long (nominally 64-bit) replaced diff --git a/LDL/Doc/ldl_version.tex b/LDL/Doc/ldl_version.tex index eee62b17b7..baaa8542c5 100644 --- a/LDL/Doc/ldl_version.tex +++ b/LDL/Doc/ldl_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/LDL -\date{VERSION 3.0.0, Nov 4, 2022} +\date{VERSION 3.0.0, Nov 12, 2022} diff --git a/LDL/Include/ldl.h b/LDL/Include/ldl.h index 8b98b5831e..55ff3ab92c 100644 --- a/LDL/Include/ldl.h +++ b/LDL/Include/ldl.h @@ -115,7 +115,7 @@ int64_t ldl_l_valid_matrix ( int64_t n, int64_t Ap [ ], int64_t Ai [ ]) ; /* === LDL version ========================================================== */ /* ========================================================================== */ -#define LDL_DATE "Nov 4, 2022" +#define LDL_DATE "Nov 12, 2022" #define LDL_MAIN_VERSION 3 #define LDL_SUB_VERSION 0 #define LDL_SUBSUB_VERSION 0 diff --git a/Mongoose/CMakeLists.txt b/Mongoose/CMakeLists.txt index 265ad49a36..ca568588a9 100644 --- a/Mongoose/CMakeLists.txt +++ b/Mongoose/CMakeLists.txt @@ -46,7 +46,7 @@ include ( SuiteSparsePolicy ) #------------------------------------------------------------------------------- -set(Mongoose_DATE "Nov 4, 2022") +set(Mongoose_DATE "Nov 12, 2022") set(Mongoose_NUMERIC_DATE "2022-11-04") set(Mongoose_VERSION_MAJOR 3) set(Mongoose_VERSION_MINOR 0) diff --git a/Mongoose/Doc/ChangeLog b/Mongoose/Doc/ChangeLog index 9f8ef7b343..d3fb5226a1 100644 --- a/Mongoose/Doc/ChangeLog +++ b/Mongoose/Doc/ChangeLog @@ -1,4 +1,4 @@ -Nov 4, 2022: version 3.0.0 +Nov 12, 2022: version 3.0.0 * minor change to the build system * integers: int (32-bit) and SuiteSparse_long (nominally 64-bit) replaced diff --git a/Mongoose/Doc/title-info.tex b/Mongoose/Doc/title-info.tex index bee69da728..de1f423a50 100644 --- a/Mongoose/Doc/title-info.tex +++ b/Mongoose/Doc/title-info.tex @@ -1,3 +1,3 @@ \title{Mongoose User Guide, Version 3.0.0} \author{Scott Kolodziej, Nuri Yeralan, Tim Davis, William W. Hager} -\date{Nov 4, 2022} +\date{Nov 12, 2022} diff --git a/Mongoose/Include/Mongoose_Version.hpp b/Mongoose/Include/Mongoose_Version.hpp index 5e4f96e424..773033a31a 100644 --- a/Mongoose/Include/Mongoose_Version.hpp +++ b/Mongoose/Include/Mongoose_Version.hpp @@ -18,7 +18,7 @@ #define Mongoose_VERSION_MAJOR 3 #define Mongoose_VERSION_MINOR 0 #define Mongoose_VERSION_PATCH 0 -#define Mongoose_DATE "Nov 4, 2022" +#define Mongoose_DATE "Nov 12, 2022" namespace Mongoose { diff --git a/RBio/CMakeLists.txt b/RBio/CMakeLists.txt index fdb4c6348c..a052ec832e 100644 --- a/RBio/CMakeLists.txt +++ b/RBio/CMakeLists.txt @@ -11,7 +11,7 @@ cmake_minimum_required ( VERSION 3.19 ) -set ( RBIO_DATE "Nov 4, 2022" ) +set ( RBIO_DATE "Nov 12, 2022" ) set ( RBIO_VERSION_MAJOR 3 ) set ( RBIO_VERSION_MINOR 0 ) set ( RBIO_VERSION_SUB 0 ) diff --git a/RBio/Doc/ChangeLog b/RBio/Doc/ChangeLog index 10bd32b7a1..b49985abcf 100644 --- a/RBio/Doc/ChangeLog +++ b/RBio/Doc/ChangeLog @@ -1,4 +1,4 @@ -Nov 4, 2022: version 3.0.0 +Nov 12, 2022: version 3.0.0 * using CMake build system * integers: int (32-bit) and SuiteSparse_long (nominally 64-bit) replaced diff --git a/RBio/Include/RBio.h b/RBio/Include/RBio.h index f2950fa42d..2f44fea515 100644 --- a/RBio/Include/RBio.h +++ b/RBio/Include/RBio.h @@ -79,7 +79,7 @@ extern "C" { #define RBIO_VALUE_IOERROR (-94) /* I/O error: numerical values */ #define RBIO_FILE_IOERROR (-95) /* I/O error: cannot read/write the file */ -#define RBIO_DATE "Nov 4, 2022" +#define RBIO_DATE "Nov 12, 2022" #define RBIO_MAIN_VERSION 3 #define RBIO_SUB_VERSION 0 #define RBIO_SUBSUB_VERSION 0 diff --git a/README.md b/README.md index 8ea4bebbb3..606c8bd8c8 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ SuiteSparse: A Suite of Sparse matrix packages at http://suitesparse.com ----------------------------------------------------------------------------- -Nov 4, 2022. SuiteSparse VERSION 6.0.0 +Nov 12, 2022. SuiteSparse VERSION 6.0.0 SuiteSparse is a set of sparse-matrix-related packages written or co-authored by Tim Davis, available at https://github.com/DrTimothyAldenDavis/SuiteSparse . @@ -15,7 +15,7 @@ Code co-authors, in alphabetical order (not including METIS): Larimore, Erick Moreno-Centeno, Ekanathan Palamadai, Sivasankaran Rajamanickam, Sanjay Ranka, Wissam Sid-Lakhdar, Nuri Yeralan. -METIS is authored by George Karypys. +METIS is authored by George Karypis. Additional algorithm designers: Esmond Ng and John Gilbert. diff --git a/SPEX/CMakeLists.txt b/SPEX/CMakeLists.txt index deeb7f9a2b..598940b4d7 100644 --- a/SPEX/CMakeLists.txt +++ b/SPEX/CMakeLists.txt @@ -12,7 +12,7 @@ cmake_minimum_required ( VERSION 3.19 ) -set ( SPEX_DATE "Nov 4, 2022" ) +set ( SPEX_DATE "Nov 12, 2022" ) set ( SPEX_VERSION_MAJOR 2 ) set ( SPEX_VERSION_MINOR 0 ) set ( SPEX_VERSION_SUB 0 ) diff --git a/SPEX/Doc/ChangeLog b/SPEX/Doc/ChangeLog index cbffbcddcb..04ea6fad3f 100644 --- a/SPEX/Doc/ChangeLog +++ b/SPEX/Doc/ChangeLog @@ -1,4 +1,4 @@ -Nov 4, 2022: version 2.0.0 +Nov 12, 2022: version 2.0.0 * using CMake build system * SuiteSparse_long: replaced with int64_t diff --git a/SPEX/Doc/SPEX_version.tex b/SPEX/Doc/SPEX_version.tex index 6cdb16d4ae..147ccf4ac6 100644 --- a/SPEX/Doc/SPEX_version.tex +++ b/SPEX/Doc/SPEX_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/SPEX -VERSION 2.0.0, Nov 4, 2022 +VERSION 2.0.0, Nov 12, 2022 diff --git a/SPEX/Include/SPEX.h b/SPEX/Include/SPEX.h index aa7ac9f8e6..0ae4710a8e 100644 --- a/SPEX/Include/SPEX.h +++ b/SPEX/Include/SPEX.h @@ -265,7 +265,7 @@ // #define SPEX_UTIL_VERSION_MINOR 1 // #define SPEX_UTIL_VERSION_SUB 1 -#define SPEX_DATE "Nov 4, 2022" +#define SPEX_DATE "Nov 12, 2022" #define SPEX_VERSION "2.0.0" #define SPEX_VERSION_MAJOR 2 #define SPEX_VERSION_MINOR diff --git a/SPQR/CMakeLists.txt b/SPQR/CMakeLists.txt index 1a55e89994..ccc249c8f4 100644 --- a/SPQR/CMakeLists.txt +++ b/SPQR/CMakeLists.txt @@ -13,7 +13,7 @@ # cmake 3.22 is required to find the BLAS in SuiteSparsePolicy.cmake cmake_minimum_required ( VERSION 3.22 ) -set ( SPQR_DATE "Nov 4, 2022" ) +set ( SPQR_DATE "Nov 12, 2022" ) set ( SPQR_VERSION_MAJOR 3 ) set ( SPQR_VERSION_MINOR 0 ) set ( SPQR_VERSION_SUB 0 ) @@ -36,10 +36,7 @@ set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/../SuiteSparse_GPURuntime/cmake_modules ${CMAKE_SOURCE_DIR}/../SuiteSparse_config/cmake_modules ) -if ( NOT DEFINED ENABLE_CUDA ) - # default is to use CUDA, if available - set ( ENABLE_CUDA true ) -endif ( ) +option ( ENABLE_CUDA "Enable CUDA acceleration" on ) include ( SuiteSparsePolicy ) diff --git a/SPQR/Doc/ChangeLog b/SPQR/Doc/ChangeLog index 07d53a7131..98a4ea95a6 100644 --- a/SPQR/Doc/ChangeLog +++ b/SPQR/Doc/ChangeLog @@ -1,4 +1,4 @@ -Nov 4, 2022: version 3.0.0 +Nov 12, 2022: version 3.0.0 * using CMake build system * integers: int (32-bit) and SuiteSparse_long (nominally 64-bit) replaced diff --git a/SPQR/Doc/spqr_version.tex b/SPQR/Doc/spqr_version.tex index 1a246fa6ec..9a3e397e36 100644 --- a/SPQR/Doc/spqr_version.tex +++ b/SPQR/Doc/spqr_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/SPQR -\date{VERSION 3.0.0, Nov 4, 2022} +\date{VERSION 3.0.0, Nov 12, 2022} diff --git a/SPQR/Include/SuiteSparseQR_definitions.h b/SPQR/Include/SuiteSparseQR_definitions.h index 7e69d33b60..764aa93762 100644 --- a/SPQR/Include/SuiteSparseQR_definitions.h +++ b/SPQR/Include/SuiteSparseQR_definitions.h @@ -62,7 +62,7 @@ #endif */ -#define SPQR_DATE "Nov 4, 2022" +#define SPQR_DATE "Nov 12, 2022" #define SPQR_MAIN_VERSION 3 #define SPQR_SUB_VERSION 0 #define SPQR_SUBSUB_VERSION 0 diff --git a/SPQR/MATLAB/spqr_install.m b/SPQR/MATLAB/spqr_install.m index 158bb762bd..9fcd2c65bd 100644 --- a/SPQR/MATLAB/spqr_install.m +++ b/SPQR/MATLAB/spqr_install.m @@ -1,4 +1,4 @@ -function spqr_install (tbb) +function spqr_install %SPQR_INSTALL compile and install SuiteSparseQR % % Example: @@ -6,8 +6,8 @@ function spqr_install (tbb) % % SuiteSparseQR relies on CHOLMOD, AMD, and COLAMD, and can optionally use % CCOLAMD, CAMD, and METIS as well. By default, CCOLAMD, CAMD, and METIS are -% used. METIS is assumed to be in the ../../SuiteSparse_metis directory. If -% not present there, it is not used. +% used. METIS is assumed to be in the ../../CHOLOD/SuiteSparse_metis +% directory. If not present there, it is not used. % % You can only use spqr_install while in the SuiteSparseQR/MATLAB directory. % @@ -21,7 +21,7 @@ function spqr_install (tbb) end % compile SuiteSparseQR and add to the path -spqr_make (tbb) ; +spqr_make ; spqr_path = pwd ; addpath (spqr_path) diff --git a/SPQR/MATLAB/spqr_make.m b/SPQR/MATLAB/spqr_make.m index eab37ac0f1..4d101537c4 100644 --- a/SPQR/MATLAB/spqr_make.m +++ b/SPQR/MATLAB/spqr_make.m @@ -1,4 +1,4 @@ -function spqr_make (opt1) +function spqr_make %SPQR_MAKE compiles the SuiteSparseQR mexFunctions % % Example: @@ -10,7 +10,7 @@ function spqr_make (opt1) % spqr_make % % in the MATLAB command window. If METIS is not present in -% ../../SuiteSparse_metis, then it is not used. +% ../../CHOLMOD/SuiteSparse_metis, then it is not used. % % You must type the spqr_make command while in the SuiteSparseQR/MATLAB % directory. @@ -50,16 +50,15 @@ function spqr_make (opt1) include = '-DNMATRIXOPS -DNMODIFY -I. -I../../AMD/Include -I../../COLAMD/Include -I../../CHOLMOD/Include -I../Include -I../../SuiteSparse_config' ; % Determine if METIS is available -metis_path = '../../SuiteSparse_metis' ; +metis_path = '../../CHOLMOD/SuiteSparse_metis' ; have_metis = exist (metis_path, 'dir') ; -% fix the METIS 4.0.1 rename.h file if (have_metis) fprintf ('Compiling SuiteSparseQR with SuiteSparse_metis for MATLAB Version %s\n', v) ; include = [include ' -I' metis_path '/include'] ; include = [include ' -I' metis_path '/GKlib'] ; include = [include ' -I' metis_path '/libmetis'] ; - include = [include ' -I../../CCOLAMD/Include -I../../CAMD/Include' ] ; + include = [include ' -I../../CCOLAMD/Include -I../../CAMD/Include -I../../CHOLMOD' ] ; else fprintf ('Compiling SuiteSparseQR without SuiteSparse_metis on MATLAB Version %s\n', v); include = ['-DNPARTITION ' include ] ; @@ -157,77 +156,6 @@ function spqr_make (opt1) ccolamd_c_src = { '../../CCOLAMD/Source/ccolamd_l' } ; -if (have_metis) - - metis_c_src = { - 'GKlib/b64', ... - 'GKlib/blas', ... - 'GKlib/csr', ... - 'GKlib/error', ... - 'GKlib/evaluate', ... - 'GKlib/fkvkselect', ... - 'GKlib/fs', ... - 'GKlib/getopt', ... - 'GKlib/gkregex', ... - 'GKlib/graph', ... - 'GKlib/htable', ... - 'GKlib/io', ... - 'GKlib/itemsets', ... - 'GKlib/mcore', ... - 'GKlib/memory', ... - 'GKlib/omp', ... - 'GKlib/pdb', ... - 'GKlib/pqueue', ... - 'GKlib/random', ... - 'GKlib/rw', ... - 'GKlib/seq', ... - 'GKlib/sort', ... - 'GKlib/string', ... - 'GKlib/timers', ... - 'GKlib/tokenizer', ... - 'GKlib/util', ... - 'libmetis/auxapi', ... - 'libmetis/balance', ... - 'libmetis/bucketsort', ... - 'libmetis/checkgraph', ... - 'libmetis/coarsen', ... - 'libmetis/compress', ... - 'libmetis/contig', ... - 'libmetis/debug', ... - 'libmetis/fm', ... - 'libmetis/fortran', ... - 'libmetis/frename', ... - 'libmetis/gklib', ... - 'libmetis/graph', ... - 'libmetis/initpart', ... - 'libmetis/kmetis', ... - 'libmetis/kwayfm', ... - 'libmetis/kwayrefine', ... - 'libmetis/mcutil', ... - 'libmetis/mesh', ... - 'libmetis/meshpart', ... - 'libmetis/minconn', ... - 'libmetis/mincover', ... - 'libmetis/mmd', ... - 'libmetis/ometis', ... - 'libmetis/options', ... - 'libmetis/parmetis', ... - 'libmetis/pmetis', ... - 'libmetis/refine', ... - 'libmetis/separator', ... - 'libmetis/sfm', ... - 'libmetis/srefine', ... - 'libmetis/stat', ... - 'libmetis/timing', ... - 'libmetis/util', ... - 'libmetis/wspace', ... - } ; - - for i = 1:length (metis_c_src) - metis_c_src {i} = [metis_path '/' metis_c_src{i}] ; - end -end - cholmod_c_src = { '../../CHOLMOD/Core/cholmod_l_aat', ... '../../CHOLMOD/Core/cholmod_l_add', ... @@ -266,6 +194,7 @@ function spqr_make (opt1) '../../CHOLMOD/Partition/cholmod_l_ccolamd', ... '../../CHOLMOD/Partition/cholmod_l_csymamd', ... '../../CHOLMOD/Partition/cholmod_l_camd', ... + '../../CHOLMOD/Partition/cholmod_metis_wrapper', ... '../../CHOLMOD/Partition/cholmod_l_metis', ... '../../CHOLMOD/Partition/cholmod_l_nesdis' } ; @@ -350,7 +279,7 @@ function spqr_make (opt1) c_source = [config_src amd_c_src colamd_c_src cholmod_c_src spqr_c_mx_src ] ; if (have_metis) c_source = [c_source cholmod_c_partition_src ccolamd_c_src ] ; - c_source = [c_source camd_c_src metis_c_src] ; + c_source = [c_source camd_c_src ] ; end cpp_source = spqr_cpp_src ; @@ -373,25 +302,13 @@ function spqr_make (opt1) for f = c_source ff = f {1} ; - if (isequal (ff, [metis_path '/GKlib/util'])) - % special case, since a file with the same name also exists in libmetis - copyfile ([ff '.c'], 'GKlib_util.c', 'f') ; - ff = 'GKlib_util' ; - o = 'GKlib_util' ; - elseif (isequal (ff, [metis_path '/GKlib/graph'])) - % special case, since a file with the same name also exist in libmetis - copyfile ([ff '.c'], 'GKlib_graph.c', 'f') ; - ff = 'GKlib_graph' ; - o = 'GKlib_graph' ; + slash = strfind (ff, '/') ; + if (isempty (slash)) + slash = 1 ; else - slash = strfind (ff, '/') ; - if (isempty (slash)) - slash = 1 ; - else - slash = slash (end) + 1 ; - end - o = ff (slash:end) ; + slash = slash (end) + 1 ; end + o = ff (slash:end) ; % fprintf ('%s\n', o) ; o = [o obj_extension] ; obj = [obj ' ' o] ; %#ok @@ -415,14 +332,6 @@ function spqr_make (opt1) do_cmd (s, kk, details) ; fprintf ('\nSuiteSparseQR successfully compiled\n') ; -% remove the renamed METIS files, if they exist -if (exist ('GKlib_util.c', 'file')) - delete ('GKlib_util.c') ; -end -if (exist ('GKlib_graph.c', 'file')) - delete ('GKlib_graph.c') ; -end - %------------------------------------------------------------------------------- function kk = do_cmd (s, kk, details) %DO_CMD evaluate a command, and either print it or print a "." diff --git a/SuiteSparse_GPURuntime/CMakeLists.txt b/SuiteSparse_GPURuntime/CMakeLists.txt index 2b63ae9472..02a5cb581b 100644 --- a/SuiteSparse_GPURuntime/CMakeLists.txt +++ b/SuiteSparse_GPURuntime/CMakeLists.txt @@ -12,7 +12,7 @@ cmake_minimum_required ( VERSION 3.19 ) -set ( SUITESPARSE_GPURUNTIME_DATE "Nov 4, 2022" ) +set ( SUITESPARSE_GPURUNTIME_DATE "Nov 12, 2022" ) set ( SUITESPARSE_GPURUNTIME_VERSION_MAJOR 2 ) set ( SUITESPARSE_GPURUNTIME_VERSION_MINOR 0 ) set ( SUITESPARSE_GPURUNTIME_VERSION_SUB 0 ) @@ -30,10 +30,7 @@ set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake_modules ${CMAKE_SOURCE_DIR}/../SuiteSparse_config/cmake_modules ) -if ( NOT DEFINED ENABLE_CUDA ) - # default is to use CUDA, if available - set ( ENABLE_CUDA true ) -endif ( ) +option ( ENABLE_CUDA "Enable CUDA acceleration" on ) include ( SuiteSparsePolicy ) diff --git a/SuiteSparse_GPURuntime/Doc/ChangeLog b/SuiteSparse_GPURuntime/Doc/ChangeLog index 968b300244..98aa0b7c07 100644 --- a/SuiteSparse_GPURuntime/Doc/ChangeLog +++ b/SuiteSparse_GPURuntime/Doc/ChangeLog @@ -1,4 +1,4 @@ -Nov 4, 2022: version 2.0.0 +Nov 12, 2022: version 2.0.0 * using CMake build system * integers: int (32-bit) and SuiteSparse_long (nominally 64-bit) replaced diff --git a/SuiteSparse_GPURuntime/Include/SuiteSparseGPU_Runtime.hpp b/SuiteSparse_GPURuntime/Include/SuiteSparseGPU_Runtime.hpp index a8dc4ddeaa..cf532db85e 100644 --- a/SuiteSparse_GPURuntime/Include/SuiteSparseGPU_Runtime.hpp +++ b/SuiteSparse_GPURuntime/Include/SuiteSparseGPU_Runtime.hpp @@ -31,7 +31,7 @@ #endif // Version information: -#define SUITESPARSE_GPURUNTIME_DATE "Nov 4, 2022" +#define SUITESPARSE_GPURUNTIME_DATE "Nov 12, 2022" #define SUITESPARSE_GPURUNTIME_MAIN_VERSION 2 #define SUITESPARSE_GPURUNTIME_SUB_VERSION 0 #define SUITESPARSE_GPURUNTIME_SUBSUB_VERSION 0 diff --git a/SuiteSparse_config/CMakeLists.txt b/SuiteSparse_config/CMakeLists.txt index 77a0e25ba5..4c5eee8765 100644 --- a/SuiteSparse_config/CMakeLists.txt +++ b/SuiteSparse_config/CMakeLists.txt @@ -14,7 +14,7 @@ cmake_minimum_required ( VERSION 3.22 ) # version of both SuiteSparse and SuiteSparse_config -set ( SUITESPARSE_DATE "Nov 4, 2022" ) +set ( SUITESPARSE_DATE "Nov 12, 2022" ) set ( SUITESPARSE_VERSION_MAJOR 6 ) set ( SUITESPARSE_VERSION_MINOR 0 ) set ( SUITESPARSE_VERSION_SUB 0 ) diff --git a/SuiteSparse_config/SuiteSparse_config.c b/SuiteSparse_config/SuiteSparse_config.c index 8492fed364..e21817063c 100644 --- a/SuiteSparse_config/SuiteSparse_config.c +++ b/SuiteSparse_config/SuiteSparse_config.c @@ -619,25 +619,24 @@ SUITESPARSE_PUBLIC int SuiteSparse_divcomplex const char *SuiteSparse_BLAS_library ( void ) { - - #if defined ( BLAS_INTEL_64ILP ) + #if defined ( BLAS_Intel10_64ilp ) return ("Intel MKL 64ilp BLAS (64-bit integers)") ; - #elif defined ( BLAS_INTEL_64LP ) + #elif defined ( BLAS_Intel10_64lp ) return ("Intel MKL 64lp BLAS (32-bit integers)") ; - #elif defined ( BLAS_APPLE ) + #elif defined ( BLAS_Apple ) return ("Apple Accelerate Framework BLAS (32-bit integers)") ; - #elif defined ( BLAS_ARM_MP ) + #elif defined ( BLAS_Arm_ilp64_mp ) return ("ARM MP BLAS (64-bit integers)") ; - #elif defined ( BLAS_ARM_ILP64_MP ) + #elif defined ( BLAS_Arm_mp ) return ("ARM MP BLAS (32-bit integers)") ; - #elif defined ( BLAS_IBMESSL_SMP_64 ) - return ("IBM ESSL SMP BLAS (64-bit integers)") ; - #elif defined ( BLAS_IBMESSL_SMP_32 ) - return ("IBM ESSL SMP BLAS (32-bit integers)") ; - #elif defined ( BLAS_OPENBLAS_64 ) - return ("OpenBLAS (64-bit integers)") ; - #elif defined ( BLAS_OPENBLAS ) - return ("OpenBLAS (32-bit integers)") ; + #elif defined ( BLAS_IBMESSL_SMP ) + return ((sizeof (SUITESPARSE_BLAS_INT) == 8) ? + "IBMESSL_SMP BLAS (64-bit integers)" : + "IBMESSL_SMP BLAS (32-bit integers)") ; + #elif defined ( BLAS_OpenBLAS ) + return ((sizeof (SUITESPARSE_BLAS_INT) == 8) ? + "OpenBLAS (64-bit integers)" : + "OpenBLAS (32-bit integers)") ; #else return ((sizeof (SUITESPARSE_BLAS_INT) == 8) ? "Other BLAS (64-bit integers)" : diff --git a/SuiteSparse_config/SuiteSparse_config.h b/SuiteSparse_config/SuiteSparse_config.h index 6e08b6cef8..d105dc5d45 100644 --- a/SuiteSparse_config/SuiteSparse_config.h +++ b/SuiteSparse_config/SuiteSparse_config.h @@ -485,7 +485,7 @@ int SuiteSparse_version // returns SUITESPARSE_VERSION #define SUITESPARSE_HAS_VERSION_FUNCTION -#define SUITESPARSE_DATE "Nov 4, 2022" +#define SUITESPARSE_DATE "Nov 12, 2022" #define SUITESPARSE_MAIN_VERSION 6 #define SUITESPARSE_SUB_VERSION 0 #define SUITESPARSE_SUBSUB_VERSION 0 diff --git a/SuiteSparse_config/cmake_modules/SuiteSparseBLAS.cmake b/SuiteSparse_config/cmake_modules/SuiteSparseBLAS.cmake index ff665e97f6..f91b7e3e65 100644 --- a/SuiteSparse_config/cmake_modules/SuiteSparseBLAS.cmake +++ b/SuiteSparse_config/cmake_modules/SuiteSparseBLAS.cmake @@ -18,10 +18,13 @@ cmake_minimum_required ( VERSION 3.22 ) include ( FortranCInterface ) +# To select a specific BLAS: set to the BLA_VENDOR options from FindBLAS.cmake +set ( BLA_VENDOR "ANY" CACHE STRING + "if ANY (default): searches for any BLAS. Otherwise: search for a specific BLAS" ) + # To allow the use of a BLAS with 64-bit integers, set this to true -if ( NOT DEFINED ALLOW_64BIT_BLAS ) - set ( ALLOW_64BIT_BLAS false ) -endif ( ) +option ( ALLOW_64BIT_BLAS + "OFF (default): use only 32-bit BLAS. ON: look for 32 or 64-bit BLAS" off ) #------------------------------------------------------------------------------- # look for a specific BLAS library @@ -32,25 +35,25 @@ endif ( ) # CMAKE_OPTIONS="-DBLA_VENDOR=Apple" make # cd build ; cmake -DBLA_VENDOR=Apple .. ; make # -# Note that the ALLOW_64BIT_BLAS flag is ignored in this case. If you want -# to select a specific BLAS integer size, use -DBLA_SIZEOF_INTEGER=64 or 32. +# Use the ALLOW_64BIT_BLAS to select 64-bit or 32-bit BLAS -if ( DEFINED BLA_VENDOR ) +if ( NOT (BLA_VENDOR STREQUAL "ANY" ) ) # only look for the BLAS from a single vendor - message ( STATUS "============================================" ) - message ( STATUS "Looking for BLAS: " ${BLA_VENDOR} ) - if ( NOT DEFINED BLA_SIZEOF_INTEGER ) - message ( FATAL_ERROR "Both BLA_VENDOR and BLA_SIZEOF_INTEGER must be specified" ) + if ( ALLOW_64BIT_BLAS ) + set ( BLA_SIZEOF_INTEGER 8 ) + message ( STATUS "Looking for 64-BLAS: " ${BLA_VENDOR} ) + # only look for 64-bit BLAS + else ( ) + # only look for 32-bit BLAS + message ( STATUS "Looking for 32-BLAS: " ${BLA_VENDOR} ) + set ( BLA_SIZEOF_INTEGER 4 ) endif ( ) - # only look for the BLAS with a specific integer size find_package ( BLAS REQUIRED ) find_package ( LAPACK REQUIRED ) if ( BLA_SIZEOF_INTEGER EQUAL 8 ) include ( SuiteSparseBLAS64 ) - elseif ( BLA_SIZEOF_INTEGER EQUAL 4 ) + else ( BLA_SIZEOF_INTEGER EQUAL 4 ) include ( SuiteSparseBLAS32 ) - else ( ) - message ( FATAL_ERROR "BLA_SIZEOF_INTEGER invalid (must be 4 or 8)" ) endif ( ) return ( ) endif ( ) @@ -97,7 +100,7 @@ endif ( ) # Look for ARM BLAS with 64-bit integers if ( ALLOW_64BIT_BLAS ) message ( STATUS "Looking for ARM 64-bit BLAS+LAPACK" ) - set ( BLA_VENDOR Arm_mp ) + set ( BLA_VENDOR Arm_ilp64_mp ) set ( BLA_SIZEOF_INTEGER 8 ) find_package ( BLAS ) find_package ( LAPACK ) @@ -109,7 +112,7 @@ endif ( ) # Look for ARM BLAS with 32-bit integers message ( STATUS "Looking for ARM 32-bit BLAS+LAPACK" ) -set ( BLA_VENDOR Arm_ilp64_mp ) +set ( BLA_VENDOR Arm_mp ) set ( BLA_SIZEOF_INTEGER 4 ) find_package ( BLAS ) find_package ( LAPACK ) diff --git a/SuiteSparse_config/cmake_modules/SuiteSparsePolicy.cmake b/SuiteSparse_config/cmake_modules/SuiteSparsePolicy.cmake index e407183864..785a3174b6 100644 --- a/SuiteSparse_config/cmake_modules/SuiteSparsePolicy.cmake +++ b/SuiteSparse_config/cmake_modules/SuiteSparsePolicy.cmake @@ -33,9 +33,6 @@ # is treated as if it always false, since the mongoose # program is built with the static library. # -# NPARTITION: if true, SuiteSparse_metis will not be compiled or used. -# Default: false -# # SUITESPARSE_CUDA_ARCHITECTURES: a string, such as "all" or # "35;50;75;80" that lists the CUDA architectures to use # when compiling CUDA kernels with nvcc. The "all" @@ -58,12 +55,13 @@ cmake_policy ( SET CMP0104 NEW ) # initialize CUDA architectures set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake_modules ) -if ( NOT DEFINED NPARTITION ) - set ( NPARTITION false ) -endif ( ) -if ( NPARTITION ) - add_compile_definitions ( NPARTITION ) +if ( NSTATIC_DEFAULT_ON ) + option ( NSTATIC "ON (default): do not built static libraries. OFF: build static libraries" on ) +else ( ) + option ( NSTATIC "ON: do not built static libraries. OFF (default): build static libraries" off ) endif ( ) +option ( GLOBAL_INSTALL "Install in CMAKE_INSTALL_PREFIX" on ) +option ( LOCAL_INSTALL "Install in SuiteSparse/lib" off ) if ( SUITESPARSE_SECOND_LEVEL ) # some packages in SuiteSparse is in SuiteSparse/Package/Package @@ -83,30 +81,9 @@ include ( GNUInstallDirs ) # find this one without "make install" set ( CMAKE_BUILD_RPATH ${CMAKE_BUILD_RPATH} ${CMAKE_BINARY_DIR} ) -if ( NOT DEFINED NSTATIC ) - # default for all SuiteSparse packages (except GraphBLAS) - # is to build the static libraries. - set ( NSTATIC false ) -endif ( ) - # determine if this package is inside the top-level SuiteSparse folder # (if ../lib and ../include exist, relative to the source directory) - -if ( NOT DEFINED GLOBAL_INSTALL ) - # if not defined, GLOBAL_INSTALL is set to true. - # "make install" will install in CMAKE_INSTALL_PREFIX - set ( GLOBAL_INSTALL true ) -endif ( ) - -if ( NOT DEFINED LOCAL_INSTALL ) - # if not defined, LOCAL_INSTALL is set to false - # "make install" will install in SuiteSparse/[lib,include,bin], - # if they exist. - set ( LOCAL_INSTALL false ) -endif ( ) - set ( INSIDE_SUITESPARSE false ) - if ( LOCAL_INSTALL ) # if you do not want to install local copies of SuiteSparse # packages in SuiteSparse/lib and SuiteSparse/, set @@ -205,12 +182,8 @@ endif ( ) if ( SUITESPARSE_CUDA ) message ( STATUS "CUDA: enabled" ) add_compile_definitions ( SUITESPARSE_CUDA ) - if ( NOT DEFINED SUITESPARSE_CUDA_ARCHITECTURES ) - # default architectures - set ( CMAKE_CUDA_ARCHITECTURES "52;75;80" ) - else ( ) - set ( CMAKE_CUDA_ARCHITECTURES ${SUITESPARSE_CUDA_ARCHITECTURES} ) - endif ( ) + set ( SUITESPARSE_CUDA_ARCHITECTURES "52:75:80" CACHE STRING "CUDA architectures" ) + set ( CMAKE_CUDA_ARCHITECTURES ${SUITESPARSE_CUDA_ARCHITECTURES} ) else ( ) message ( STATUS "CUDA: not enabled" ) endif ( ) diff --git a/TODO.txt b/TODO.txt new file mode 100644 index 0000000000..958547b775 --- /dev/null +++ b/TODO.txt @@ -0,0 +1,4 @@ +FIXME: redo the dates on all packages +FIXME: redo Tcov +FIXME: redo MATLAB tests + diff --git a/UMFPACK/CMakeLists.txt b/UMFPACK/CMakeLists.txt index 48300d0de8..805b5d9196 100644 --- a/UMFPACK/CMakeLists.txt +++ b/UMFPACK/CMakeLists.txt @@ -12,7 +12,7 @@ # cmake 3.22 is required to find the BLAS in SuiteSparse_config cmake_minimum_required ( VERSION 3.22 ) -set ( UMFPACK_DATE "Nov 4, 2022" ) +set ( UMFPACK_DATE "Nov 12, 2022" ) set ( UMFPACK_VERSION_MAJOR 6 ) set ( UMFPACK_VERSION_MINOR 0 ) set ( UMFPACK_VERSION_SUB 0 ) @@ -53,10 +53,7 @@ find_package ( SuiteSparse_config 6.0.0 REQUIRED ) find_package ( AMD 3.0.0 REQUIRED ) include ( SuiteSparseBLAS ) # requires cmake 3.22 -if ( NOT DEFINED NCHOLMOD ) - # use CHOLMOD by default - set ( NCHOLMOD false ) -endif ( ) +option ( NCHOLMOD "ON: do not use CHOLMOD. OFF (default): use CHOLMOD" off ) if ( NOT NCHOLMOD ) # look for CHOLMOD (optional fill-reducing orderings for KLU) diff --git a/UMFPACK/Doc/ChangeLog b/UMFPACK/Doc/ChangeLog index 3665b6ba83..051bb2129b 100644 --- a/UMFPACK/Doc/ChangeLog +++ b/UMFPACK/Doc/ChangeLog @@ -1,4 +1,4 @@ -Nov 4, 2022: version 6.0.0 +Nov 12, 2022: version 6.0.0 * using CMake build system * integers: int (32-bit) and SuiteSparse_long (nominally 64-bit) replaced diff --git a/UMFPACK/Doc/umfpack_version.tex b/UMFPACK/Doc/umfpack_version.tex index 669efe9a7b..cf30e61130 100644 --- a/UMFPACK/Doc/umfpack_version.tex +++ b/UMFPACK/Doc/umfpack_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/UMFPACK -\date{VERSION 6.0.0, Nov 4, 2022} +\date{VERSION 6.0.0, Nov 12, 2022} diff --git a/UMFPACK/Include/umfpack.h b/UMFPACK/Include/umfpack.h index c4037f6fa0..d05ab84598 100644 --- a/UMFPACK/Include/umfpack.h +++ b/UMFPACK/Include/umfpack.h @@ -82,7 +82,7 @@ extern "C" { * below. */ -#define UMFPACK_DATE "Nov 4, 2022" +#define UMFPACK_DATE "Nov 12, 2022" #define UMFPACK_MAIN_VERSION 6 #define UMFPACK_SUB_VERSION 0 #define UMFPACK_SUBSUB_VERSION 0 diff --git a/UMFPACK/MATLAB/Makefile b/UMFPACK/MATLAB/Makefile index 76d8a5863f..6eb4f95a90 100644 --- a/UMFPACK/MATLAB/Makefile +++ b/UMFPACK/MATLAB/Makefile @@ -12,7 +12,7 @@ default: # Remove all but the files in the original distribution distclean: - - $(RM) -r rename.h GKlib_util.c GKlib_graph.c *.o *.mex* + - $(RM) -r rename.h *.o *.mex* purge: distclean diff --git a/UMFPACK/MATLAB/umfpack_make.m b/UMFPACK/MATLAB/umfpack_make.m index c760ecf98c..685b4052a6 100644 --- a/UMFPACK/MATLAB/umfpack_make.m +++ b/UMFPACK/MATLAB/umfpack_make.m @@ -9,7 +9,7 @@ % UMFPACK relies on AMD and its own built-in version of COLAMD for its ordering % options. The default is for UMFPACK to also use CHOLMOD, CCOLAMD, CAMD, and % METIS for more ordering options as well. This results in lower fill-in and -% higher performance. METIS 5.1.0 should appear in ../../SuiteSparse_metis. +% higher performance. METIS 5.1.0 is in ../../CHOLMOD/SuiteSparse_metis. % METIS is optional; if not present, it is not used. % % See also: umfpack, umfpack_details, umfpack_report, umfpack_demo, @@ -18,7 +18,7 @@ % UMFPACK, Copyright (c) 2005-2022, Timothy A. Davis, All Rights Reserved. % SPDX-License-Identifier: GPL-2.0+ -metis_path = '../../SuiteSparse_metis' ; +metis_path = '../../CHOLMOD/SuiteSparse_metis' ; with_cholmod = exist (metis_path, 'dir') ; details = 0 ; % set to 1 to print out each mex command as it's executed @@ -106,7 +106,7 @@ if (with_cholmod) incdir = [incdir ' -I../../CCOLAMD/Include -I../../CAMD/Include ' ... - ' -I../../CHOLMOD/Include -I../../COLAMD/Include'] ; + ' -I../../CHOLMOD/Include -I../../COLAMD/Include -I../../CHOLMOD'] ; incdir = [incdir ' -I' metis_path '/include'] ; incdir = [incdir ' -I' metis_path '/GKlib'] ; incdir = [incdir ' -I' metis_path '/libmetis'] ; @@ -190,74 +190,6 @@ '../../COLAMD/Source/colamd', ... '../../CCOLAMD/Source/ccolamd' } ; - metis_src = { - 'GKlib/b64', ... - 'GKlib/blas', ... - 'GKlib/csr', ... - 'GKlib/error', ... - 'GKlib/evaluate', ... - 'GKlib/fkvkselect', ... - 'GKlib/fs', ... - 'GKlib/getopt', ... - 'GKlib/gkregex', ... - 'GKlib/graph', ... - 'GKlib/htable', ... - 'GKlib/io', ... - 'GKlib/itemsets', ... - 'GKlib/mcore', ... - 'GKlib/memory', ... - 'GKlib/omp', ... - 'GKlib/pdb', ... - 'GKlib/pqueue', ... - 'GKlib/random', ... - 'GKlib/rw', ... - 'GKlib/seq', ... - 'GKlib/sort', ... - 'GKlib/string', ... - 'GKlib/timers', ... - 'GKlib/tokenizer', ... - 'GKlib/util', ... - 'libmetis/auxapi', ... - 'libmetis/balance', ... - 'libmetis/bucketsort', ... - 'libmetis/checkgraph', ... - 'libmetis/coarsen', ... - 'libmetis/compress', ... - 'libmetis/contig', ... - 'libmetis/debug', ... - 'libmetis/fm', ... - 'libmetis/fortran', ... - 'libmetis/frename', ... - 'libmetis/gklib', ... - 'libmetis/graph', ... - 'libmetis/initpart', ... - 'libmetis/kmetis', ... - 'libmetis/kwayfm', ... - 'libmetis/kwayrefine', ... - 'libmetis/mcutil', ... - 'libmetis/mesh', ... - 'libmetis/meshpart', ... - 'libmetis/minconn', ... - 'libmetis/mincover', ... - 'libmetis/mmd', ... - 'libmetis/ometis', ... - 'libmetis/options', ... - 'libmetis/parmetis', ... - 'libmetis/pmetis', ... - 'libmetis/refine', ... - 'libmetis/separator', ... - 'libmetis/sfm', ... - 'libmetis/srefine', ... - 'libmetis/stat', ... - 'libmetis/timing', ... - 'libmetis/util', ... - 'libmetis/wspace', ... - } ; - - for i = 1:length (metis_src) - metis_src {i} = [metis_path '/' metis_src{i}] ; - end - cholmod_src = { '../../CHOLMOD/Core/cholmod_aat', ... '../../CHOLMOD/Core/cholmod_add', ... @@ -284,10 +216,10 @@ '../../CHOLMOD/Partition/cholmod_csymamd', ... '../../CHOLMOD/Partition/cholmod_camd', ... '../../CHOLMOD/Partition/cholmod_metis', ... + '../../CHOLMOD/Partition/cholmod_metis_wrapper', ... '../../CHOLMOD/Partition/cholmod_nesdis' } ; - other_source = [other_source cholmod_src metis_src ordering_src] ; - % other_source = [other_source { '../User/umfpack_l_cholmod' }] ; %#ok + other_source = [other_source cholmod_src ordering_src] ; end if (pc && with_cholmod) @@ -312,23 +244,9 @@ for k = 1:length(other_source) ff = other_source {k} ; - - if (isequal (ff, [metis_path '/GKlib/util'])) - % special case, since a file with the same name also exists in libmetis - cpfile ([ff '.c'], 'GKlib_util.c') ; - ff = 'GKlib_util' ; - o = 'GKlib_util' ; - elseif (isequal (ff, [metis_path '/GKlib/graph'])) - % special case, since a file with the same name also exist in libmetis - cpfile ([ff '.c'], 'GKlib_graph.c') ; - ff = 'GKlib_graph' ; - o = 'GKlib_graph' ; - else - slash = strfind (ff, '/') ; - slash = slash (end) + 1 ; - o = ff (slash:end) ; - end - + slash = strfind (ff, '/') ; + slash = slash (end) + 1 ; + o = ff (slash:end) ; kk = cmd (sprintf ('%s -DDLONG -c %s.c', mx, ff), kk, details) ; M {end+1} = [o '.' obj] ; end @@ -434,13 +352,6 @@ rmfile (M {i}) ; end -%---------------------------------------- -% delete the renamed METIS files -%---------------------------------------- - -rmfile ('GKlib_util.c') ; -rmfile ('GKlib_graph.c') ; - %---------------------------------------- % compile the luflop mexFunction %---------------------------------------- diff --git a/UMFPACK/Source/umfpack_report_control.c b/UMFPACK/Source/umfpack_report_control.c index 4c98270376..a91788a95c 100644 --- a/UMFPACK/Source/umfpack_report_control.c +++ b/UMFPACK/Source/umfpack_report_control.c @@ -362,10 +362,14 @@ GLOBAL void UMFPACK_report_control PRINTF ((" "ID": BLAS library used: ", (Int) INDEX (UMFPACK_COMPILED_WITH_BLAS))) ; -#ifdef NBLAS +#if defined ( MATLAB_MEX_FILE ) + PRINTF (("MATLAB built-in BLAS. size of BLAS integer: "ID"\n", + (Int) (sizeof (SUITESPARSE_BLAS_INT)))) ; +#elif defined ( NBLAS ) PRINTF (("none. UMFPACK will be slow.\n")) ; #else - PRINTF (("Fortran BLAS. size of BLAS integer: "ID"\n", + PRINTF (("%s. size of BLAS integer: "ID"\n", + SuiteSparse_BLAS_library ( ), (Int) (sizeof (SUITESPARSE_BLAS_INT)))) ; #endif diff --git a/UMFPACK/Source/umfpack_report_info.c b/UMFPACK/Source/umfpack_report_info.c index 5f0fc85223..d9f14c484b 100644 --- a/UMFPACK/Source/umfpack_report_info.c +++ b/UMFPACK/Source/umfpack_report_info.c @@ -136,10 +136,14 @@ GLOBAL void UMFPACK_report_info PRINTF ((" BLAS library used: ")) ; -#ifdef NBLAS +#if defined ( MATLAB_MEX_FILE ) + PRINTF (("MATLAB built-in BLAS. size of BLAS integer: "ID"\n", + (Int) (sizeof (SUITESPARSE_BLAS_INT)))) ; +#elif defined ( NBLAS ) PRINTF (("none. UMFPACK will be slow.\n")) ; #else - PRINTF (("Fortran BLAS. size of BLAS integer: "ID"\n", + PRINTF (("%s. size of BLAS integer: "ID"\n", + SuiteSparse_BLAS_library ( ), (Int) (sizeof (SUITESPARSE_BLAS_INT)))) ; #endif