From f3c9f8dd35e2520dc990d7e1829daf5d3e39d764 Mon Sep 17 00:00:00 2001 From: Tim Davis Date: Mon, 18 Sep 2023 13:28:24 -0500 Subject: [PATCH 1/8] place copy of amd_internal.h in UMFPACK/Source --- UMFPACK/Source/README.txt | 1 + UMFPACK/Source/amd_internal.h | 280 ++++++++++++++++++++++++++++++++++ 2 files changed, 281 insertions(+) create mode 100644 UMFPACK/Source/README.txt create mode 100644 UMFPACK/Source/amd_internal.h diff --git a/UMFPACK/Source/README.txt b/UMFPACK/Source/README.txt new file mode 100644 index 000000000..8b8df99a1 --- /dev/null +++ b/UMFPACK/Source/README.txt @@ -0,0 +1 @@ +The amd_internal.h file must be an exact copy of AMD/Include/amd_internal.h. diff --git a/UMFPACK/Source/amd_internal.h b/UMFPACK/Source/amd_internal.h new file mode 100644 index 000000000..85d43930b --- /dev/null +++ b/UMFPACK/Source/amd_internal.h @@ -0,0 +1,280 @@ +//------------------------------------------------------------------------------ +// AMD/Include/amd_internal.h: internal definitions for AMD +//------------------------------------------------------------------------------ + +// AMD, Copyright (c) 1996-2022, Timothy A. Davis, Patrick R. Amestoy, and +// Iain S. Duff. All Rights Reserved. +// SPDX-License-Identifier: BSD-3-clause + +//------------------------------------------------------------------------------ + +/* This file is for internal use in AMD itself, and does not normally need to + * be included in user code (it is included in UMFPACK, however). All others + * should use amd.h instead. + */ + +/* ========================================================================= */ +/* === NDEBUG ============================================================== */ +/* ========================================================================= */ + +/* + * Turning on debugging takes some work (see below). If you do not edit this + * file, then debugging is always turned off, regardless of whether or not + * -DNDEBUG is specified in your compiler options. + * + * If AMD is being compiled as a mexFunction, then MATLAB_MEX_FILE is defined, + * and mxAssert is used instead of assert. If debugging is not enabled, no + * MATLAB include files or functions are used. Thus, the AMD library libamd.a + * can be safely used in either a stand-alone C program or in another + * mexFunction, without any change. + */ + +/* + AMD will be exceedingly slow when running in debug mode. The next three + lines ensure that debugging is turned off. +*/ +#ifndef NDEBUG +#define NDEBUG +#endif + +/* + To enable debugging, uncomment the following line: +#undef NDEBUG +*/ + +#define SUITESPARSE_LIBRARY +#include "amd.h" + +/* ------------------------------------------------------------------------- */ +/* basic definitions */ +/* ------------------------------------------------------------------------- */ + +#ifdef FLIP +#undef FLIP +#endif + +#ifdef MAX +#undef MAX +#endif + +#ifdef MIN +#undef MIN +#endif + +#ifdef EMPTY +#undef EMPTY +#endif + +#define PRIVATE static + +/* FLIP is a "negation about -1", and is used to mark an integer i that is + * normally non-negative. FLIP (EMPTY) is EMPTY. FLIP of a number > EMPTY + * is negative, and FLIP of a number < EMTPY is positive. FLIP (FLIP (i)) = i + * for all integers i. UNFLIP (i) is >= EMPTY. */ +#define EMPTY (-1) +#define FLIP(i) (-(i)-2) +#define UNFLIP(i) ((i < EMPTY) ? FLIP (i) : (i)) + +/* for integer MAX/MIN, or for doubles when we don't care how NaN's behave: */ +#define MAX(a,b) (((a) > (b)) ? (a) : (b)) +#define MIN(a,b) (((a) < (b)) ? (a) : (b)) + +/* logical expression of p implies q: */ +#define IMPLIES(p,q) (!(p) || (q)) + +/* Note that the IBM RS 6000 xlc predefines TRUE and FALSE in . */ +/* The Compaq Alpha also predefines TRUE and FALSE. */ +#ifdef TRUE +#undef TRUE +#endif +#ifdef FALSE +#undef FALSE +#endif + +#define TRUE (1) +#define FALSE (0) +#define EMPTY (-1) + +/* largest value of size_t */ +#ifndef SIZE_T_MAX +#ifdef SIZE_MAX +/* C99 only */ +#define SIZE_T_MAX SIZE_MAX +#else +#define SIZE_T_MAX ((size_t) (-1)) +#endif +#endif + +/* ------------------------------------------------------------------------- */ +/* integer type for AMD: int32_t or int64_t */ +/* ------------------------------------------------------------------------- */ + +#if defined (DLONG) || defined (ZLONG) + +#define Int int64_t +#define UInt uint64_t +#define ID "%" PRId64 +#define Int_MAX INT64_MAX + +#define AMD_order amd_l_order +#define AMD_defaults amd_l_defaults +#define AMD_control amd_l_control +#define AMD_info amd_l_info +#define AMD_1 amd_l1 +#define AMD_2 amd_l2 +#define AMD_valid amd_l_valid +#define AMD_aat amd_l_aat +#define AMD_postorder amd_l_postorder +#define AMD_post_tree amd_l_post_tree +#define AMD_dump amd_l_dump +#define AMD_debug amd_l_debug +#define AMD_debug_init amd_l_debug_init +#define AMD_preprocess amd_l_preprocess + +#else + +#define Int int32_t +#define UInt uint32_t +#define ID "%d" +#define Int_MAX INT32_MAX + +#define AMD_order amd_order +#define AMD_defaults amd_defaults +#define AMD_control amd_control +#define AMD_info amd_info +#define AMD_1 amd_1 +#define AMD_2 amd_2 +#define AMD_valid amd_valid +#define AMD_aat amd_aat +#define AMD_postorder amd_postorder +#define AMD_post_tree amd_post_tree +#define AMD_dump amd_dump +#define AMD_debug amd_debug +#define AMD_debug_init amd_debug_init +#define AMD_preprocess amd_preprocess + +#endif + +/* ------------------------------------------------------------------------- */ +/* AMD routine definitions (not user-callable) */ +/* ------------------------------------------------------------------------- */ + +size_t AMD_aat +( + Int n, + const Int Ap [ ], + const Int Ai [ ], + Int Len [ ], + Int Tp [ ], + double Info [ ] +) ; + +void AMD_1 +( + Int n, + const Int Ap [ ], + const Int Ai [ ], + Int P [ ], + Int Pinv [ ], + Int Len [ ], + Int slen, + Int S [ ], + double Control [ ], + double Info [ ] +) ; + +void AMD_postorder +( + Int nn, + Int Parent [ ], + Int Npiv [ ], + Int Fsize [ ], + Int Order [ ], + Int Child [ ], + Int Sibling [ ], + Int Stack [ ] +) ; + +Int AMD_post_tree +( + Int root, + Int k, + Int Child [ ], + const Int Sibling [ ], + Int Order [ ], + Int Stack [ ] +#ifndef NDEBUG + , Int nn +#endif +) ; + +void AMD_preprocess +( + Int n, + const Int Ap [ ], + const Int Ai [ ], + Int Rp [ ], + Int Ri [ ], + Int W [ ], + Int Flag [ ] +) ; + +/* ------------------------------------------------------------------------- */ +/* debugging definitions */ +/* ------------------------------------------------------------------------- */ + +#ifndef NDEBUG + +/* from assert.h: assert macro */ +#include + +extern Int AMD_debug ; + +void AMD_debug_init ( char *s ) ; + +void AMD_dump +( + Int n, + Int Pe [ ], + Int Iw [ ], + Int Len [ ], + Int iwlen, + Int pfree, + Int Nv [ ], + Int Next [ ], + Int Last [ ], + Int Head [ ], + Int Elen [ ], + Int Degree [ ], + Int W [ ], + Int nel +) ; + +#ifdef ASSERT +#undef ASSERT +#endif + +/* Use mxAssert if AMD is compiled into a mexFunction */ +#ifdef MATLAB_MEX_FILE +#define ASSERT(expression) (mxAssert ((expression), "")) +#else +#define ASSERT(expression) (assert (expression)) +#endif + +#define AMD_DEBUG0(params) { SUITESPARSE_PRINTF (params) ; } +#define AMD_DEBUG1(params) { if (AMD_debug >= 1) SUITESPARSE_PRINTF (params) ; } +#define AMD_DEBUG2(params) { if (AMD_debug >= 2) SUITESPARSE_PRINTF (params) ; } +#define AMD_DEBUG3(params) { if (AMD_debug >= 3) SUITESPARSE_PRINTF (params) ; } +#define AMD_DEBUG4(params) { if (AMD_debug >= 4) SUITESPARSE_PRINTF (params) ; } + +#else + +/* no debugging */ +#define ASSERT(expression) +#define AMD_DEBUG0(params) +#define AMD_DEBUG1(params) +#define AMD_DEBUG2(params) +#define AMD_DEBUG3(params) +#define AMD_DEBUG4(params) + +#endif From c2e4820adc6e53da4930ff31c0ab54b03073899a Mon Sep 17 00:00:00 2001 From: Tim Davis Date: Mon, 18 Sep 2023 13:29:11 -0500 Subject: [PATCH 2/8] place copies of SuiteSparse_GPURuntime internal include files in GPUQREngine/Include --- GPUQREngine/Include/README.txt | 8 ++ .../Include/SuiteSparseGPU_Workspace.hpp | 116 ++++++++++++++++++ GPUQREngine/Include/SuiteSparseGPU_debug.hpp | 49 ++++++++ .../Include/SuiteSparseGPU_internal.hpp | 35 ++++++ GPUQREngine/Include/SuiteSparseGPU_macros.hpp | 21 ++++ .../SuiteSparseGPU_workspace_macros.hpp | 24 ++++ 6 files changed, 253 insertions(+) create mode 100644 GPUQREngine/Include/README.txt create mode 100644 GPUQREngine/Include/SuiteSparseGPU_Workspace.hpp create mode 100644 GPUQREngine/Include/SuiteSparseGPU_debug.hpp create mode 100644 GPUQREngine/Include/SuiteSparseGPU_internal.hpp create mode 100644 GPUQREngine/Include/SuiteSparseGPU_macros.hpp create mode 100644 GPUQREngine/Include/SuiteSparseGPU_workspace_macros.hpp diff --git a/GPUQREngine/Include/README.txt b/GPUQREngine/Include/README.txt new file mode 100644 index 000000000..96ecfa75b --- /dev/null +++ b/GPUQREngine/Include/README.txt @@ -0,0 +1,8 @@ +The following files must be exact copies of the files in +SuiteSparse_GPURuntime/Include: + + SuiteSparseGPU_debug.hpp + SuiteSparseGPU_internal.hpp + SuiteSparseGPU_macros.hpp + SuiteSparseGPU_Workspace.hpp + SuiteSparseGPU_workspace_macros.hpp diff --git a/GPUQREngine/Include/SuiteSparseGPU_Workspace.hpp b/GPUQREngine/Include/SuiteSparseGPU_Workspace.hpp new file mode 100644 index 000000000..620404b16 --- /dev/null +++ b/GPUQREngine/Include/SuiteSparseGPU_Workspace.hpp @@ -0,0 +1,116 @@ +// ============================================================================= +// === SuiteSparse_GPURuntime/Include/SuiteSparseGPU_Workspace.hpp ============= +// ============================================================================= + +// SuiteSparse_GPURuntime, Copyright (c) 2013-2016, Timothy A Davis, +// Sencer Nuri Yeralan, and Sanjay Ranka. All Rights Reserved. +// SPDX-License-Identifier: GPL-2.0+ + +//------------------------------------------------------------------------------ + +#ifndef SUITESPARSE_GPURUNTIME_WORKSPACE_HPP +#define SUITESPARSE_GPURUNTIME_WORKSPACE_HPP + +#include "SuiteSparseGPU_internal.hpp" + +class Workspace +{ +private: + + size_t nitems; // number of items to allocate + size_t size_of_item; // size of each item, in bytes + size_t totalSize; // nitems * size_of_item + +// bool lazyAllocate; // no longer used (for possible future use) + bool pageLocked; // true if CPU memory is pagelocked + + void *cpuReference; // pointer to CPU memory + void *gpuReference; // pointer to GPU memory + +public: + // Read-Only Properties + size_t getCount(void){ return nitems; } + size_t getStride(void){ return size_of_item; } + void *cpu(void){ return cpuReference; } + void *gpu(void){ return gpuReference; } + + // Constructor/Destructor + void *operator new(size_t bytes, Workspace* ptr){ return ptr; } + Workspace(size_t nitems, size_t size_of_item); + ~Workspace(); + + // Memory management wrappers + static void *cpu_malloc(size_t nitems, size_t size_of_item, + bool pageLocked=false); + static void *cpu_calloc(size_t nitems, size_t size_of_item, + bool pageLocked=false); + static void *cpu_free(void *address, bool pageLocked = false); + static void *gpu_malloc(size_t nitems, size_t size_of_item); + static void *gpu_calloc(size_t nitems, size_t size_of_item); + static void *gpu_free(void *); + + // Workspace management + static Workspace *allocate + ( + size_t nitems, // number of items to allocate + size_t size_of_item, // size of each item, in bytes + bool doCalloc = false, // if true, then calloc; else malloc + bool cpuAlloc = true, // if true, then allocate CPU memory + bool gpuAlloc = true, // if true, then allocate GPU memory + bool pageLocked = false // true if CPU memory is pagelocked + ); + + // destroy workspace, freeing memory on both the CPU and GPU + static Workspace *destroy + ( + Workspace *address + ); + + // Reference manipulation functions + template void extract(T *cpu_arg, T *gpu_arg) + { + *cpu_arg = (T) cpuReference; + *gpu_arg = (T) gpuReference; + } + void assign(void *cpu_arg, void *gpu_arg) + { + cpuReference = cpu_arg; + gpuReference = gpu_arg; + } + +// unused, left commented out for possible future use +// void setLazy() +// { +// lazyAllocate = true; +// } + + // Memory management for workspaces + virtual bool ws_malloc(bool cpuAlloc = true, bool gpuAlloc = true); + virtual bool ws_calloc(bool cpuAlloc = true, bool gpuAlloc = true); + virtual void ws_free(bool cpuFree=true, bool gpuFree=true); + + // GPU-CPU transfer routines + virtual bool transfer(cudaMemcpyKind direction, bool synchronous=true, + cudaStream_t stream=0); + + // CPU & GPU memory functions + // memset functions unused, left commented out for possible future use + // bool gpu_memset(size_t newValue); + // bool cpu_memset(size_t newValue); + + // Debug +#if DEBUG_ATLEAST_ERRORONLY + static void print(Workspace *workspace) + { + printf ( + "(%ld,%ld) has %ld entries of size %ld each.\n", + (size_t) workspace->cpu(), + (size_t) workspace->gpu(), + workspace->getCount(), + workspace->getStride() + ); + } +#endif +}; + +#endif diff --git a/GPUQREngine/Include/SuiteSparseGPU_debug.hpp b/GPUQREngine/Include/SuiteSparseGPU_debug.hpp new file mode 100644 index 000000000..cf3da1215 --- /dev/null +++ b/GPUQREngine/Include/SuiteSparseGPU_debug.hpp @@ -0,0 +1,49 @@ +// ============================================================================= +// === SuiteSparse_GPURuntime/Include/SuiteSparseGPU_debug.hpp ================= +// ============================================================================= + +// SuiteSparse_GPURuntime, Copyright (c) 2013-2016, Timothy A Davis, +// Sencer Nuri Yeralan, and Sanjay Ranka. All Rights Reserved. +// SPDX-License-Identifier: GPL-2.0+ + +//------------------------------------------------------------------------------ + +#ifndef SUITESPARSE_GPURUNTIME_DEBUG_HPP +#define SUITESPARSE_GPURUNTIME_DEBUG_HPP + +#define GPURUNTIME_DLEVEL_OFF 0 +#define GPURUNTIME_DLEVEL_ERRORONLY 1 +#define GPURUNTIME_DLEVEL_CASUAL 2 +#define GPURUNTIME_DLEVEL_VERBOSE 3 +#define GPURUNTIME_DLEVEL_EXTREME 4 + +//------------------------------------------------------------------------------ +// force debugging off +//------------------------------------------------------------------------------ + +#ifndef NDEBUG +#define NDEBUG +#endif + +// uncomment this line to turn on debugging +// #undef NDEBUG + +//------------------------------------------------------------------------------ + +#ifndef NDEBUG +#define GPURUNTIME_DLEVEL GPURUNTIME_DLEVEL_CASUAL +#else +// no debugging +#define GPURUNTIME_DLEVEL GPURUNTIME_DLEVEL_OFF +#endif + +#define DEBUG_ATLEAST_ERRORONLY (GPURUNTIME_DLEVEL >= GPURUNTIME_DLEVEL_ERRORONLY) +#define DEBUG_ATLEAST_CASUAL (GPURUNTIME_DLEVEL >= GPURUNTIME_DLEVEL_CASUAL) +#define DEBUG_ATLEAST_VERBOSE (GPURUNTIME_DLEVEL >= GPURUNTIME_DLEVEL_VERBOSE) +#define DEBUG_ATLEAST_EXTREME (GPURUNTIME_DLEVEL >= GPURUNTIME_DLEVEL_EXTREME) + +#ifndef GPURUNTIME_LOGFILE_PATH +#define GPURUNTIME_LOGFILE_PATH "SuiteSparse_GPURuntime-logfile.txt" +#endif + +#endif diff --git a/GPUQREngine/Include/SuiteSparseGPU_internal.hpp b/GPUQREngine/Include/SuiteSparseGPU_internal.hpp new file mode 100644 index 000000000..6a61f1c32 --- /dev/null +++ b/GPUQREngine/Include/SuiteSparseGPU_internal.hpp @@ -0,0 +1,35 @@ +// ============================================================================= +// SuiteSparse_GPURuntime/Include/SuiteSparseGPU_internal.hpp +// ============================================================================= + +// SuiteSparse_GPURuntime, Copyright (c) 2013-2016, Timothy A Davis, +// Sencer Nuri Yeralan, and Sanjay Ranka. All Rights Reserved. +// SPDX-License-Identifier: GPL-2.0+ + +//------------------------------------------------------------------------------ + +#ifndef SUITESPARSEGPU_INTERNAL_HPP +#define SUITESPARSEGPU_INTERNAL_HPP + +#ifdef SUITESPARSE_CUDA + + #include "cuda_runtime.h" + #include "SuiteSparse_config.h" + + #include + + #include "SuiteSparseGPU_macros.hpp" + + #if DEBUG_ATLEAST_ERRORONLY + #include + #endif + + class Workspace; + + #include "SuiteSparseGPU_Workspace.hpp" + +#endif + +#include "SuiteSparse_GPURuntime.hpp" + +#endif diff --git a/GPUQREngine/Include/SuiteSparseGPU_macros.hpp b/GPUQREngine/Include/SuiteSparseGPU_macros.hpp new file mode 100644 index 000000000..298ff63d3 --- /dev/null +++ b/GPUQREngine/Include/SuiteSparseGPU_macros.hpp @@ -0,0 +1,21 @@ +// ============================================================================= +// === SuiteSparse_GPURuntime/Include/SuiteSparseGPU_macros.hpp ================ +// ============================================================================= + +// SuiteSparse_GPURuntime, Copyright (c) 2013-2016, Timothy A Davis, +// Sencer Nuri Yeralan, and Sanjay Ranka. All Rights Reserved. +// SPDX-License-Identifier: GPL-2.0+ + +//------------------------------------------------------------------------------ + +#ifndef SUITESPARSE_GPURUNTIME_MACROS_HPP +#define SUITESPARSE_GPURUNTIME_MACROS_HPP + +#ifndef IMPLIES +#define IMPLIES(p,q) (!(p) || ((p) && (q))) +#endif + +#include "SuiteSparseGPU_debug.hpp" +#include "SuiteSparseGPU_workspace_macros.hpp" + +#endif diff --git a/GPUQREngine/Include/SuiteSparseGPU_workspace_macros.hpp b/GPUQREngine/Include/SuiteSparseGPU_workspace_macros.hpp new file mode 100644 index 000000000..0f11d0467 --- /dev/null +++ b/GPUQREngine/Include/SuiteSparseGPU_workspace_macros.hpp @@ -0,0 +1,24 @@ +// ============================================================================= +// SuiteSparse_GPURuntime/Include/SuiteSparseGPU_workspace_macros.hpp +// ============================================================================= + +// SuiteSparse_GPURuntime, Copyright (c) 2013-2016, Timothy A Davis, +// Sencer Nuri Yeralan, and Sanjay Ranka. All Rights Reserved. +// SPDX-License-Identifier: GPL-2.0+ + +//------------------------------------------------------------------------------ + +#ifndef SUITESPARSE_GPURUNTIME_WORKSPACE_MACROS_HPP +#define SUITESPARSE_GPURUNTIME_WORKSPACE_MACROS_HPP + +#ifndef GPU_REFERENCE +#define GPU_REFERENCE(WORKSPACE, TYPE) \ + ((TYPE) (WORKSPACE != NULL ? (WORKSPACE)->gpu() : NULL)) +#endif + +#ifndef CPU_REFERENCE +#define CPU_REFERENCE(WORKSPACE, TYPE) \ + ((TYPE) (WORKSPACE != NULL ? (WORKSPACE)->cpu() : NULL)) +#endif + +#endif From 616350e511fdd68fdec48dfd4ef04b6f9b3e0d74 Mon Sep 17 00:00:00 2001 From: Tim Davis Date: Mon, 18 Sep 2023 13:46:48 -0500 Subject: [PATCH 3/8] UMFPACK 6.2.1 --- UMFPACK/CMakeLists.txt | 4 ++-- UMFPACK/Demo/umf4hb.out | 10 +++++----- UMFPACK/Demo/umf4hb64.out | 4 ++-- UMFPACK/Demo/umf4zhb.out | 10 +++++----- UMFPACK/Demo/umf4zhb64.out | 14 +++++++------- UMFPACK/Demo/umfpack_di_demo.out | 24 ++++++++++++------------ UMFPACK/Demo/umfpack_dl_demo.out | 24 ++++++++++++------------ UMFPACK/Demo/umfpack_simple.out | 2 +- UMFPACK/Demo/umfpack_zi_demo.out | 28 ++++++++++++++-------------- UMFPACK/Demo/umfpack_zl_demo.out | 24 ++++++++++++------------ UMFPACK/Doc/ChangeLog | 5 +++++ UMFPACK/Doc/UMFPACK_QuickStart.pdf | Bin 218375 -> 218499 bytes UMFPACK/Doc/UMFPACK_UserGuide.pdf | Bin 484186 -> 484323 bytes UMFPACK/Doc/umfpack_version.tex | 2 +- UMFPACK/Include/umfpack.h | 4 ++-- 15 files changed, 80 insertions(+), 75 deletions(-) diff --git a/UMFPACK/CMakeLists.txt b/UMFPACK/CMakeLists.txt index 4c0e52850..56b4432b7 100644 --- a/UMFPACK/CMakeLists.txt +++ b/UMFPACK/CMakeLists.txt @@ -12,10 +12,10 @@ # cmake 3.22 is required to find the BLAS in SuiteSparse_config cmake_minimum_required ( VERSION 3.22 ) -set ( UMFPACK_DATE "Sept 8, 2023" ) +set ( UMFPACK_DATE "Sept 18, 2023" ) set ( UMFPACK_VERSION_MAJOR 6 ) set ( UMFPACK_VERSION_MINOR 2 ) -set ( UMFPACK_VERSION_SUB 0 ) +set ( UMFPACK_VERSION_SUB 1 ) message ( STATUS "Building UMFPACK version: v" ${UMFPACK_VERSION_MAJOR}. diff --git a/UMFPACK/Demo/umf4hb.out b/UMFPACK/Demo/umf4hb.out index 3846d7db7..f822bfed4 100644 --- a/UMFPACK/Demo/umf4hb.out +++ b/UMFPACK/Demo/umf4hb.out @@ -1,4 +1,4 @@ -UMFPACK V6.2.0 (Sept 8, 2023), Control: +UMFPACK V6.2.1 (Sept 18, 2023), Control: Matrix entry defined as: double Int (generic integer) defined as: int32_t @@ -38,7 +38,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Control: computer/operating system: Linux size of int32_t: 4 int64_t: 8 Int: 4 pointer: 8 double: 8 Entry: 8 (in bytes) -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -106,8 +106,8 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: numeric factorization defragmentations: 1 numeric factorization reallocations: 1 costly numeric factorization reallocations: 1 - numeric factorization wallclock time (sec): 0.02 - numeric factorization mflops (wallclock): 0.10 + numeric factorization wallclock time (sec): 0.01 + numeric factorization mflops (wallclock): 0.34 solve flops: 1.20800e+03 iterative refinement steps taken: 0 @@ -128,7 +128,7 @@ symbolic analysis: nnz (U): 902. numeric factorization: status: 0. - time: 0.25E-01 + time: 0.77E-02 actual numeric LU statistics: size of LU: 0.01 (MB) memory needed: 0.04 (MB) diff --git a/UMFPACK/Demo/umf4hb64.out b/UMFPACK/Demo/umf4hb64.out index 498b5910e..068a9e8fc 100644 --- a/UMFPACK/Demo/umf4hb64.out +++ b/UMFPACK/Demo/umf4hb64.out @@ -1,4 +1,4 @@ -UMFPACK V6.2.0 (Sept 8, 2023), Control: +UMFPACK V6.2.1 (Sept 18, 2023), Control: Matrix entry defined as: double Int (generic integer) defined as: int64_t @@ -38,7 +38,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Control: computer/operating system: Linux size of int32_t: 4 int64_t: 8 Int: 8 pointer: 8 double: 8 Entry: 8 (in bytes) -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 diff --git a/UMFPACK/Demo/umf4zhb.out b/UMFPACK/Demo/umf4zhb.out index e7b57f10a..da09a3ca4 100644 --- a/UMFPACK/Demo/umf4zhb.out +++ b/UMFPACK/Demo/umf4zhb.out @@ -1,4 +1,4 @@ -UMFPACK V6.2.0 (Sept 8, 2023), Control: +UMFPACK V6.2.1 (Sept 18, 2023), Control: Matrix entry defined as: double complex Int (generic integer) defined as: int32_t @@ -38,7 +38,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Control: computer/operating system: Linux size of int32_t: 4 int64_t: 8 Int: 4 pointer: 8 double: 8 Entry: 16 (in bytes) -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -120,9 +120,9 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: numeric factorization reallocations: 0 costly numeric factorization reallocations: 0 numeric factorization wallclock time (sec): 0.02 - numeric factorization mflops (wallclock): 796.37 + numeric factorization mflops (wallclock): 783.23 symbolic + numeric wall clock time (sec): 0.02 - symbolic + numeric mflops (wall clock): 721.98 + symbolic + numeric mflops (wall clock): 712.11 solve flops: 3.70332e+05 iterative refinement steps taken: 0 @@ -134,7 +134,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: Matrix key: QC324 symbolic analysis: status: 0. - time: 0.19E-02 (sec) + time: 0.18E-02 (sec) estimates (upper bound) for numeric LU: size of LU: 1.17 (MB) memory needed: 2.40 (MB) diff --git a/UMFPACK/Demo/umf4zhb64.out b/UMFPACK/Demo/umf4zhb64.out index ae6ad0ae0..b857c4c33 100644 --- a/UMFPACK/Demo/umf4zhb64.out +++ b/UMFPACK/Demo/umf4zhb64.out @@ -1,4 +1,4 @@ -UMFPACK V6.2.0 (Sept 8, 2023), Control: +UMFPACK V6.2.1 (Sept 18, 2023), Control: Matrix entry defined as: double complex Int (generic integer) defined as: int64_t @@ -38,7 +38,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Control: computer/operating system: Linux size of int32_t: 4 int64_t: 8 Int: 8 pointer: 8 double: 8 Entry: 16 (in bytes) -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -119,10 +119,10 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: numeric factorization defragmentations: 0 numeric factorization reallocations: 0 costly numeric factorization reallocations: 0 - numeric factorization wallclock time (sec): 0.04 - numeric factorization mflops (wallclock): 407.98 - symbolic + numeric wall clock time (sec): 0.04 - symbolic + numeric mflops (wall clock): 383.46 + numeric factorization wallclock time (sec): 0.01 + numeric factorization mflops (wallclock): 962.67 + symbolic + numeric wall clock time (sec): 0.02 + symbolic + numeric mflops (wall clock): 839.26 solve flops: 3.70332e+05 iterative refinement steps taken: 0 @@ -143,7 +143,7 @@ symbolic analysis: nnz (U): 39609. numeric factorization: status: 0. - time: 0.35E-01 + time: 0.15E-01 actual numeric LU statistics: size of LU: 0.74 (MB) memory needed: 1.38 (MB) diff --git a/UMFPACK/Demo/umfpack_di_demo.out b/UMFPACK/Demo/umfpack_di_demo.out index 6df673a35..3d3e74a20 100644 --- a/UMFPACK/Demo/umfpack_di_demo.out +++ b/UMFPACK/Demo/umfpack_di_demo.out @@ -1,5 +1,5 @@ -UMFPACK V6.2 (Sept 8, 2023) demo: _di_ version +UMFPACK V6.2 (Sept 18, 2023) demo: _di_ version UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. @@ -10,9 +10,9 @@ UMFPACK License: SPDX-License-Identifier: GPL-2.0+ Availability: http://www.suitesparse.com -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK -UMFPACK V6.2.0 (Sept 8, 2023), Control: +UMFPACK V6.2.1 (Sept 18, 2023), Control: Matrix entry defined as: double Int (generic integer) defined as: int32_t @@ -257,7 +257,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -346,7 +346,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK x (solution of Ax=b): dense vector, n = 5. @@ -362,7 +362,7 @@ maxnorm of residual: 1.06581e-14 UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK determinant: (1.14) * 10^(2) @@ -376,7 +376,7 @@ x (solution of Ax=b, solve is split into 3 steps): dense vector, n = 5. maxnorm of residual: 1.06581e-14 -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -605,7 +605,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -852,7 +852,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1300,7 +1300,7 @@ Freeing numeric object: Loading numeric object: Done loading numeric object -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1509,7 +1509,7 @@ Done copying numeric object Numeric blob size: 752 Done serialize/deserialize of numeric object -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1607,7 +1607,7 @@ maxnorm of residual: 3.55271e-15 Solving C'x=b again, using umfpack_di_wsolve instead: -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 diff --git a/UMFPACK/Demo/umfpack_dl_demo.out b/UMFPACK/Demo/umfpack_dl_demo.out index 60e209f5d..fa481ff22 100644 --- a/UMFPACK/Demo/umfpack_dl_demo.out +++ b/UMFPACK/Demo/umfpack_dl_demo.out @@ -1,5 +1,5 @@ -UMFPACK V6.2 (Sept 8, 2023) demo: _dl_ version +UMFPACK V6.2 (Sept 18, 2023) demo: _dl_ version UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. @@ -10,9 +10,9 @@ UMFPACK License: SPDX-License-Identifier: GPL-2.0+ Availability: http://www.suitesparse.com -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK -UMFPACK V6.2.0 (Sept 8, 2023), Control: +UMFPACK V6.2.1 (Sept 18, 2023), Control: Matrix entry defined as: double Int (generic integer) defined as: int64_t @@ -257,7 +257,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -346,7 +346,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK x (solution of Ax=b): dense vector, n = 5. @@ -362,7 +362,7 @@ maxnorm of residual: 1.06581e-14 UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK determinant: (1.14) * 10^(2) @@ -376,7 +376,7 @@ x (solution of Ax=b, solve is split into 3 steps): dense vector, n = 5. maxnorm of residual: 1.06581e-14 -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -605,7 +605,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -852,7 +852,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1300,7 +1300,7 @@ Freeing numeric object: Loading numeric object: Done loading numeric object -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1509,7 +1509,7 @@ Done copying numeric object Numeric blob size: 1144 Done serialize/deserialize of numeric object -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1607,7 +1607,7 @@ maxnorm of residual: 3.55271e-15 Solving C'x=b again, using umfpack_dl_wsolve instead: -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 diff --git a/UMFPACK/Demo/umfpack_simple.out b/UMFPACK/Demo/umfpack_simple.out index a069d0155..cb5595086 100644 --- a/UMFPACK/Demo/umfpack_simple.out +++ b/UMFPACK/Demo/umfpack_simple.out @@ -1,4 +1,4 @@ -UMFPACK V6.2.0 (Sept 8, 2023) +UMFPACK V6.2.1 (Sept 18, 2023) UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. UMFPACK License: SPDX-License-Identifier: GPL-2.0+ diff --git a/UMFPACK/Demo/umfpack_zi_demo.out b/UMFPACK/Demo/umfpack_zi_demo.out index da79c43ab..349405427 100644 --- a/UMFPACK/Demo/umfpack_zi_demo.out +++ b/UMFPACK/Demo/umfpack_zi_demo.out @@ -1,5 +1,5 @@ -UMFPACK V6.2 (Sept 8, 2023) demo: _zi_ version +UMFPACK V6.2 (Sept 18, 2023) demo: _zi_ version UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. @@ -10,9 +10,9 @@ UMFPACK License: SPDX-License-Identifier: GPL-2.0+ Availability: http://www.suitesparse.com -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK -UMFPACK V6.2.0 (Sept 8, 2023), Control: +UMFPACK V6.2.1 (Sept 18, 2023), Control: Matrix entry defined as: double complex Int (generic integer) defined as: int32_t @@ -257,7 +257,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -332,7 +332,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: numeric factorization reallocations: 1 costly numeric factorization reallocations: 0 numeric factorization wallclock time (sec): 0.00 - numeric factorization mflops (wallclock): 0.01 + numeric factorization mflops (wallclock): 0.02 solve flops: 1.02800e+03 iterative refinement steps taken: 1 @@ -346,7 +346,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK x (solution of Ax=b): dense vector, n = 5. @@ -362,7 +362,7 @@ maxnorm of residual: 1.77636e-15 UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK determinant: (-1.7814+ (2.3784)i) * 10^(2) @@ -376,7 +376,7 @@ x (solution of Ax=b, solve is split into 3 steps): dense vector, n = 5. maxnorm of residual: 1.77636e-14 -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -451,7 +451,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: numeric factorization reallocations: 1 costly numeric factorization reallocations: 0 numeric factorization wallclock time (sec): 0.00 - numeric factorization mflops (wallclock): 0.01 + numeric factorization mflops (wallclock): 0.02 solve flops: 4.80000e+02 iterative refinement steps taken: 0 @@ -605,7 +605,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -852,7 +852,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1300,7 +1300,7 @@ Freeing numeric object: Loading numeric object: Done loading numeric object -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1509,7 +1509,7 @@ Done copying numeric object Numeric blob size: 864 Done serialize/deserialize of numeric object -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1607,7 +1607,7 @@ maxnorm of residual: 4.88498e-15 Solving C'x=b again, using umfpack_zi_wsolve instead: -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 diff --git a/UMFPACK/Demo/umfpack_zl_demo.out b/UMFPACK/Demo/umfpack_zl_demo.out index c3c58fc39..40bf13ce4 100644 --- a/UMFPACK/Demo/umfpack_zl_demo.out +++ b/UMFPACK/Demo/umfpack_zl_demo.out @@ -1,5 +1,5 @@ -UMFPACK V6.2 (Sept 8, 2023) demo: _zl_ version +UMFPACK V6.2 (Sept 18, 2023) demo: _zl_ version UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. @@ -10,9 +10,9 @@ UMFPACK License: SPDX-License-Identifier: GPL-2.0+ Availability: http://www.suitesparse.com -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK -UMFPACK V6.2.0 (Sept 8, 2023), Control: +UMFPACK V6.2.1 (Sept 18, 2023), Control: Matrix entry defined as: double complex Int (generic integer) defined as: int64_t @@ -257,7 +257,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -346,7 +346,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK x (solution of Ax=b): dense vector, n = 5. @@ -362,7 +362,7 @@ maxnorm of residual: 1.77636e-15 UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK determinant: (-1.7814+ (2.3784)i) * 10^(2) @@ -376,7 +376,7 @@ x (solution of Ax=b, solve is split into 3 steps): dense vector, n = 5. maxnorm of residual: 1.77636e-14 -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -605,7 +605,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -852,7 +852,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1300,7 +1300,7 @@ Freeing numeric object: Loading numeric object: Done loading numeric object -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1509,7 +1509,7 @@ Done copying numeric object Numeric blob size: 1208 Done serialize/deserialize of numeric object -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1607,7 +1607,7 @@ maxnorm of residual: 4.88498e-15 Solving C'x=b again, using umfpack_zl_wsolve instead: -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 diff --git a/UMFPACK/Doc/ChangeLog b/UMFPACK/Doc/ChangeLog index 8f80454ae..ea6f12fc0 100644 --- a/UMFPACK/Doc/ChangeLog +++ b/UMFPACK/Doc/ChangeLog @@ -1,3 +1,8 @@ +Sept 18, 2023: version 6.2.1 + + * AMD: amd_internal.h include file copied into UMFPACK/Source, so + that UMFPACK can be built with just the installed AMD files. + Sept 8, 2023: version 6.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/UMFPACK/Doc/UMFPACK_QuickStart.pdf b/UMFPACK/Doc/UMFPACK_QuickStart.pdf index 2b277f3e9d381d0ed4c67af3bb30dd6cb94a2af3..da196e2b08f0231e643e58f60108d0e1887028eb 100644 GIT binary patch delta 21190 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 delta 21098 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 B8Mgoc diff --git a/UMFPACK/Doc/UMFPACK_UserGuide.pdf b/UMFPACK/Doc/UMFPACK_UserGuide.pdf index 7ed49e85f9181fa85c0e19ab29c0a99c7bc672ab..78abf7ce6fda6e5d4f5bcd26f1d930b6d04262f6 100644 GIT binary patch delta 23463 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

A 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 delta 23333 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 W$diX{z(n|hd=PvV7DX*3{Qm)nQcSS` diff --git a/UMFPACK/Doc/umfpack_version.tex b/UMFPACK/Doc/umfpack_version.tex index 8b56ef294..14737caa6 100644 --- a/UMFPACK/Doc/umfpack_version.tex +++ b/UMFPACK/Doc/umfpack_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/UMFPACK -\date{VERSION 6.2.0, Sept 8, 2023} +\date{VERSION 6.2.1, Sept 18, 2023} diff --git a/UMFPACK/Include/umfpack.h b/UMFPACK/Include/umfpack.h index c8e632135..14f578fd6 100644 --- a/UMFPACK/Include/umfpack.h +++ b/UMFPACK/Include/umfpack.h @@ -82,10 +82,10 @@ extern "C" { * below. */ -#define UMFPACK_DATE "Sept 8, 2023" +#define UMFPACK_DATE "Sept 18, 2023" #define UMFPACK_MAIN_VERSION 6 #define UMFPACK_SUB_VERSION 2 -#define UMFPACK_SUBSUB_VERSION 0 +#define UMFPACK_SUBSUB_VERSION 1 #define UMFPACK_VER_CODE(main,sub) ((main) * 1000 + (sub)) #define UMFPACK_VER UMFPACK_VER_CODE(UMFPACK_MAIN_VERSION,UMFPACK_SUB_VERSION) From ee0defac6a80eb628ffbec1ef70c06ac62c4c9f2 Mon Sep 17 00:00:00 2001 From: Tim Davis Date: Mon, 18 Sep 2023 13:47:09 -0500 Subject: [PATCH 4/8] GPUQREngine 3.2.1 --- GPUQREngine/CMakeLists.txt | 4 ++-- GPUQREngine/Doc/ChangeLog | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/GPUQREngine/CMakeLists.txt b/GPUQREngine/CMakeLists.txt index eb34fe798..1a592b016 100644 --- a/GPUQREngine/CMakeLists.txt +++ b/GPUQREngine/CMakeLists.txt @@ -12,10 +12,10 @@ cmake_minimum_required ( VERSION 3.20 ) -set ( GPUQRENGINE_DATE "Sept 8, 2023" ) +set ( GPUQRENGINE_DATE "Sept 18, 2023" ) set ( GPUQRENGINE_VERSION_MAJOR 3 ) set ( GPUQRENGINE_VERSION_MINOR 2 ) -set ( GPUQRENGINE_VERSION_SUB 0 ) +set ( GPUQRENGINE_VERSION_SUB 1 ) message ( STATUS "Building GPUQRENGINE version: v" ${GPUQRENGINE_VERSION_MAJOR}. diff --git a/GPUQREngine/Doc/ChangeLog b/GPUQREngine/Doc/ChangeLog index db8e65d60..774ac8153 100644 --- a/GPUQREngine/Doc/ChangeLog +++ b/GPUQREngine/Doc/ChangeLog @@ -1,3 +1,8 @@ +Sept 18, 2023: version 3.2.1 + + * SuiteSparse_GPURuntime: internal include files copied into + GPUQREngine/Include + Sept 8, 2023: version 3.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel From 4f6c8f9f2e28f1dfde6a54a453554a02aa512095 Mon Sep 17 00:00:00 2001 From: Tim Davis Date: Mon, 18 Sep 2023 15:35:21 -0500 Subject: [PATCH 5/8] SuiteSparse v7.2.1 --- ChangeLog | 6 ++++++ README.md | 2 +- SuiteSparse_config/CMakeLists.txt | 4 ++-- SuiteSparse_config/SuiteSparse_config.h | 4 ++-- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 337974d5c..a31e9ae5e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Sept 18, 2023: version 7.2.1 + + * UMFPACK v6.2.1 and GPUQREngine v3.2.1: copies internal include files + from other SuiteSparse packages (AMD and SuiteSparse_GPURuntime), + so these two packages can be built independently. + Sept 8, 2023: version 7.2.0 * build system: modern cmake structure, by Markus Muetzel. diff --git a/README.md b/README.md index 06a717a2f..366bc79a4 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ SuiteSparse: A Suite of Sparse matrix packages at http://suitesparse.com ----------------------------------------------------------------------------- -Sept 8, 2023, SuiteSparse VERSION 7.2.0 +Sept 18, 2023, SuiteSparse VERSION 7.2.1 SuiteSparse is a set of sparse-matrix-related packages written or co-authored by Tim Davis, available at https://github.com/DrTimothyAldenDavis/SuiteSparse . diff --git a/SuiteSparse_config/CMakeLists.txt b/SuiteSparse_config/CMakeLists.txt index efc1e6400..9019317ca 100644 --- a/SuiteSparse_config/CMakeLists.txt +++ b/SuiteSparse_config/CMakeLists.txt @@ -14,10 +14,10 @@ cmake_minimum_required ( VERSION 3.22 ) # version of both SuiteSparse and SuiteSparse_config -set ( SUITESPARSE_DATE "Sept 8, 2023" ) +set ( SUITESPARSE_DATE "Sept 18, 2023" ) set ( SUITESPARSE_VERSION_MAJOR 7 ) set ( SUITESPARSE_VERSION_MINOR 2 ) -set ( SUITESPARSE_VERSION_SUB 0 ) +set ( SUITESPARSE_VERSION_SUB 1 ) message ( STATUS "Building SuiteSparse_config version: v" ${SUITESPARSE_VERSION_MAJOR}. diff --git a/SuiteSparse_config/SuiteSparse_config.h b/SuiteSparse_config/SuiteSparse_config.h index e28fd0989..06ff2d72c 100644 --- a/SuiteSparse_config/SuiteSparse_config.h +++ b/SuiteSparse_config/SuiteSparse_config.h @@ -409,10 +409,10 @@ int SuiteSparse_version // returns SUITESPARSE_VERSION #define SUITESPARSE_HAS_VERSION_FUNCTION -#define SUITESPARSE_DATE "Sept 8, 2023" +#define SUITESPARSE_DATE "Sept 18, 2023" #define SUITESPARSE_MAIN_VERSION 7 #define SUITESPARSE_SUB_VERSION 2 -#define SUITESPARSE_SUBSUB_VERSION 0 +#define SUITESPARSE_SUBSUB_VERSION 1 #define SUITESPARSE_VER_CODE(main,sub) ((main) * 1000 + (sub)) #define SUITESPARSE_VERSION \ From 082d89b935b94da45e32f1951455df3000c60fa6 Mon Sep 17 00:00:00 2001 From: Tim Davis Date: Mon, 18 Sep 2023 15:37:22 -0500 Subject: [PATCH 6/8] GPUQREngine to 3.2.1 --- GPUQREngine/Include/GPUQREngine.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GPUQREngine/Include/GPUQREngine.hpp b/GPUQREngine/Include/GPUQREngine.hpp index 498942837..b262c9346 100644 --- a/GPUQREngine/Include/GPUQREngine.hpp +++ b/GPUQREngine/Include/GPUQREngine.hpp @@ -12,10 +12,10 @@ #define GPUQRENGINE_HPP // Version information: -#define GPUQRENGINE_DATE "Sept 8, 2023" +#define GPUQRENGINE_DATE "Sept 18, 2023" #define GPUQRENGINE_MAIN_VERSION 3 #define GPUQRENGINE_SUB_VERSION 2 -#define GPUQRENGINE_SUBSUB_VERSION 0 +#define GPUQRENGINE_SUBSUB_VERSION 1 #define GPUQRENGINE_VER_CODE(main,sub) ((main) * 1000 + (sub)) #define GPUQRENGINE_VERSION \ From b5fc35748d95c0bc3bafc4e25d40e036d90eb84a Mon Sep 17 00:00:00 2001 From: Tim Davis Date: Mon, 18 Sep 2023 16:51:46 -0500 Subject: [PATCH 7/8] Mongoose version and user guide for Mongoose 3.2.1 --- Mongoose/CMakeLists.txt | 6 +++--- Mongoose/Doc/ChangeLog | 5 +++++ Mongoose/Doc/title-info.tex | 4 ++-- Mongoose/Include/Mongoose.hpp | 4 ++-- Mongoose/codemeta.json | 8 ++++---- 5 files changed, 16 insertions(+), 11 deletions(-) diff --git a/Mongoose/CMakeLists.txt b/Mongoose/CMakeLists.txt index 6eb258c74..3572a8b49 100644 --- a/Mongoose/CMakeLists.txt +++ b/Mongoose/CMakeLists.txt @@ -43,11 +43,11 @@ include ( SuiteSparsePolicy ) #------------------------------------------------------------------------------- -set(Mongoose_DATE "Sept 8, 2023") -set(Mongoose_NUMERIC_DATE "2023-09-08") +set(Mongoose_DATE "Sept 18, 2023") +set(Mongoose_NUMERIC_DATE "2023-09-18") set(Mongoose_VERSION_MAJOR 3) set(Mongoose_VERSION_MINOR 2) -set(Mongoose_VERSION_PATCH 0) +set(Mongoose_VERSION_PATCH 1) project(Mongoose VERSION "${Mongoose_VERSION_MAJOR}.${Mongoose_VERSION_MINOR}.${Mongoose_VERSION_PATCH}" diff --git a/Mongoose/Doc/ChangeLog b/Mongoose/Doc/ChangeLog index a15f7efd3..75ba1a0f2 100644 --- a/Mongoose/Doc/ChangeLog +++ b/Mongoose/Doc/ChangeLog @@ -1,3 +1,8 @@ +Sept 18, 2023: version 3.2.1 + + * cmake updates: link executables to SuiteSparse_config that depend on it; + by Markus Muetzel + Sept 8, 2023: version 3.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/Mongoose/Doc/title-info.tex b/Mongoose/Doc/title-info.tex index 071ffb6e5..f10e44229 100644 --- a/Mongoose/Doc/title-info.tex +++ b/Mongoose/Doc/title-info.tex @@ -1,3 +1,3 @@ -\title{Mongoose User Guide, Version 3.2.0} +\title{Mongoose User Guide, Version 3.2.1} \author{Scott Kolodziej, Nuri Yeralan, Tim Davis, William W. Hager} -\date{Sept 8, 2023} +\date{Sept 18, 2023} diff --git a/Mongoose/Include/Mongoose.hpp b/Mongoose/Include/Mongoose.hpp index 286065378..5a921bf53 100644 --- a/Mongoose/Include/Mongoose.hpp +++ b/Mongoose/Include/Mongoose.hpp @@ -20,8 +20,8 @@ // Configuration information from CMake #define Mongoose_VERSION_MAJOR 3 #define Mongoose_VERSION_MINOR 2 -#define Mongoose_VERSION_PATCH 0 -#define Mongoose_DATE "Sept 8, 2023" +#define Mongoose_VERSION_PATCH 1 +#define Mongoose_DATE "Sept 18, 2023" namespace Mongoose { diff --git a/Mongoose/codemeta.json b/Mongoose/codemeta.json index e263981b1..e92b9fe1c 100644 --- a/Mongoose/codemeta.json +++ b/Mongoose/codemeta.json @@ -7,8 +7,8 @@ "codeRepository": "https://github.com/ScottKolo/Mongoose", "issueTracker": "https://github.com/ScottKolo/Mongoose/issues", "license": "https://spdx.org/licenses/GPL-3.0-only.html", - "version": "3.2.0", - "softwareVersion": "3.2.0", + "version": "3.2.1", + "softwareVersion": "3.2.1", "author": [ { "@type": "Person", @@ -47,7 +47,7 @@ }, "contIntegration": "https://travis-ci.com/ScottKolo/Mongoose", "developmentStatus": "active", - "downloadUrl": "https://github.com/ScottKolo/Mongoose/archive/v3.2.0.zip", + "downloadUrl": "https://github.com/ScottKolo/Mongoose/archive/v3.2.1.zip", "funding":"Office of Naval Research grant N00014-11-1-0068", "funding":"Office of Naval Research grant N00014-15-1-2048", "funding":"Office of Naval Research grant N00014-18-1-2100", @@ -66,7 +66,7 @@ ], "dateCreated":"2018-04-09", "datePublished":"2018-05-25", - "dateModified":"2023-09-08", + "dateModified":"2023-09-18", "programmingLanguage": "C++", "programmingLanguage": "MATLAB" } From 507c6a19d19ada68e740e86ee08e0a4c96e5e81e Mon Sep 17 00:00:00 2001 From: Tim Davis Date: Mon, 18 Sep 2023 16:53:31 -0500 Subject: [PATCH 8/8] mongoose user guide PDF --- Mongoose/Doc/Mongoose_UserGuide.pdf | Bin 216426 -> 216395 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Mongoose/Doc/Mongoose_UserGuide.pdf b/Mongoose/Doc/Mongoose_UserGuide.pdf index 38ac224a1a326dcc10a24f93efc36b1cc608a5e9..5b5c3ae55a56a127c4ce285fab920a5940bfc6ae 100644 GIT binary patch delta 24662 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 HGN}Ir7fXrw