Skip to content

Commit

Permalink
v4.4.4
Browse files Browse the repository at this point in the history
  • Loading branch information
DrTimothyAldenDavis committed Oct 19, 2019
1 parent b94f119 commit 8339b36
Show file tree
Hide file tree
Showing 55 changed files with 281 additions and 42 deletions.
7 changes: 6 additions & 1 deletion CHOLMOD/Doc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
Jan 7, 2017: version 3.0.4
Jan 19, 2015: version 3.0.5

* minor bug fix to cholmod_symmetry.c for the 'quick return'
(option == 0).

Jan 7, 2015: version 3.0.4

* serious bug fix to supernodal factorization. The bug was introduced in
CHOLMOD v3.0.0 when the GPU acceleration was given a major update.
Expand Down
Binary file modified CHOLMOD/Doc/UserGuide.pdf
Binary file not shown.
4 changes: 2 additions & 2 deletions CHOLMOD/Doc/UserGuide.tex
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
\title{User Guide for CHOLMOD: a sparse Cholesky factorization and
modification package}

\date{VERSION 3.0.4, Jan 7, 2015}
\date{VERSION 3.0.5, Jan 19, 2015}
\maketitle

%-------------------------------------------------------------------------------
Expand All @@ -47,7 +47,7 @@
\end{abstract}
%-------------------------------------------------------------------------------

CHOLMOD Copyright\copyright 2005-2014 by Timothy A. Davis. Portions are also
CHOLMOD Copyright\copyright 2005-2015 by Timothy A. Davis. Portions are also
copyrighted by William W. Hager (the {\tt Modify} Module),
and the University of Florida (the {\tt Partition} and {\tt Core} Modules).
All Rights Reserved. Some of CHOLMOD's Modules are distributed under the GNU
Expand Down
2 changes: 1 addition & 1 deletion CHOLMOD/Include/cholmod_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@
#define CHOLMOD_VER_CODE(main,sub) ((main) * 1000 + (sub))
#define CHOLMOD_MAIN_VERSION 3
#define CHOLMOD_SUB_VERSION 0
#define CHOLMOD_SUBSUB_VERSION 4
#define CHOLMOD_SUBSUB_VERSION 5
#define CHOLMOD_VERSION \
CHOLMOD_VER_CODE(CHOLMOD_MAIN_VERSION,CHOLMOD_SUB_VERSION)

Expand Down
3 changes: 2 additions & 1 deletion CHOLMOD/MATLAB/Test/cholmod_test.m
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ function cholmod_test (nmat, do_diary)
do_metis = 0 ;
end

tt = 34 ;
tt = 35 ;

h = waitbar (0.5/tt, 'CHOLMOD demo:') ;

Expand Down Expand Up @@ -167,6 +167,7 @@ function cholmod_test (nmat, do_diary)

ltest ; waitbar (32/tt, h, 'CHOLMOD ltest') ;
lxtest ; waitbar (33/tt, h, 'CHOLMOD lxtest') ;
test29 ; waitbar (34/tt, h, 'CHOLMOD test29') ;

waitbar (tt/tt, h, 'CHOLMOD test done') ;
fprintf ('=============================================================\n');
Expand Down
141 changes: 141 additions & 0 deletions CHOLMOD/MATLAB/Test/test29.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
function test29
%TEST29 test spsym
% Example:
% spsym
% See also cholmod_test

% Copyright 2015, Timothy A. Davis, http://www.suitesparse.com

rand ('state', 0) ;

r = zeros (0,2) ;
for n = 0:5

% real unsymmetric, diagonal all nonzero
A = sparse (rand (n,n)) ;
r = [r ; test_spsym(A)] ;

% real symmetric, diagonal all nonzero
A = A+A' ;
r = [r ; test_spsym(A)] ;

% real unsymmetric, diagonal all nonzero
A (2,1) = 0 ;
r = [r ; test_spsym(A)] ;

% real symmetric, diagonal all zero
A = sparse (n,n) ;
r = [r ; test_spsym(A)] ;

% real symmetric, diagonal all nonzero
A = speye (n,n) ;
r = [r ; test_spsym(A)] ;

% real symmetric, diagonal mostly nonzero
A (2,2) = 0 ;
r = [r ; test_spsym(A)] ;

% real rectangular, or square unsymmetric
for m = 0:5
A = sparse (rand (n,m)) ;
r = [r ; test_spsym(A)] ;
end

% skew symmetric when n > 1
A = tril (sparse (rand (n,n)), -1) ;
A = A-A' ;
c = test_spsym(A) ;
r = [r ; c ] ;

% complex Hermitian (when n > 1)
A = sparse (rand (n,n)) + 1i * sparse (rand (n,n)) ;
A = A+A' ;
c = test_spsym(A) ;
r = [r ; c ] ;

% complex Hermitian but with non-positive diagonal (when n > 1)
A (3,3) = -1 ;
c = test_spsym(A) ;
r = [r ; c] ;

end

r = unique (r, 'rows') ;
rtrue = [
1 1
2 2
3 2
4 2
5 2
6 6
7 7 ] ;
if (~isequal (r, rtrue))
error ('failed. Incomplete test cases') ;
end

% test with the UF sparse matrix collection
r = zeros (0,2) ;
index = UFget ;
for i = [168 27 2137 56 231 1621 -1621] ;
Prob = UFget (abs (i),index)
A = Prob.A ;
if (i < 0)
% UF collection does not contain any matrices for which spsym(A) = 4.
% (complex Hermitian with zero nonpos. diagonal). So make one.
fprintf ('setting A (5,5) = 0\n') ;
A (5,5) = 0 ;
end
c = test_spsym (A) ;
c
fprintf ('full test:') ; print_result (c (1)) ;
fprintf ('quick test:') ; print_result (c (2)) ;
r = [r ; c] ;
end

r = unique (r, 'rows') ;
if (~isequal (r, rtrue))
error ('failed. Incomplete test cases') ;
end

%-------------------------------------------------------------------------------

function r = test_spsym (A)
s1 = spsym (A) ;
s2 = get_symmetry (A) ;
if (s1 ~= s2)
error ('failed!')
end
s3 = spsym (A,0) ;
s4 = get_symmetry (A,0) ;
if (s3 ~= s1 || s4 ~= s1)
error ('failed!')
end
s5 = spsym (A,1) ;
s6 = get_symmetry (A,1) ;
if (s5 ~= s6)
error ('failed!')
end
r = [s1 s5] ; % r(1) is the full test, r(2) is the quick test

%-------------------------------------------------------------------------------

function print_result (s)
switch (s)
case 1
fprintf ('rectangular\n') ;
case 2
fprintf ('unsymmetric (or not Cholesky candidate for quick test)\n') ;
case 3
fprintf ('symmetric, but with one or more A(j,j) <= 0\n') ;
case 4
fprintf ('Hermitian, but with one or more A(j,j) <= 0 or with nonzero imaginary part\n') ;
case 5
fprintf ('skew symmetric\n') ;
case 6
fprintf ('symmetric with real positive diagonal\n') ;
case 7
fprintf ('Hermitian with real positive diagonal\n') ;
otherwise
error ('unknown result') ;
end

2 changes: 1 addition & 1 deletion CHOLMOD/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# CHOLMOD Makefile
#-------------------------------------------------------------------------------

VERSION = 3.0.3
VERSION = 3.0.5

# Note: If you do not have METIS, or do not wish to use it in CHOLMOD, you must
# compile CHOLMOD with the -DNPARTITION flag.
Expand Down
2 changes: 1 addition & 1 deletion CHOLMOD/MatrixOps/cholmod_symmetry.c
Original file line number Diff line number Diff line change
Expand Up @@ -441,7 +441,7 @@ int CHOLMOD(symmetry)
/* quick return if not Cholesky candidate */
/* ------------------------------------------------------------------ */

if (option < 1 && (!posdiag || nzdiag < ncol))
if (option < 1 && (!posdiag || nzdiag <= j))
{
/* Diagonal entry not present, or present but negative or with
* nonzero imaginary part. Quick return for option 0. */
Expand Down
5 changes: 4 additions & 1 deletion CHOLMOD/Tcov/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ CC = gcc
# to test with everthing
C = $(CC) $(CF) $(CHOLMOD_CONFIG) $(NANTESTS)

# default LAPACK and BLAS from SuiteSparse_config.mk:
LIB = $(METIS) -lm $(LAPACK) $(BLAS)

# optimized LAPACK and BLAS
# LIB = $(METIS) -lm $(LAPACK) $(BLAS) $(XERBLA) -L/shared/apps/rhel-6.2/intel/ics-2013/lib/intel64 -liomp5

Expand All @@ -31,7 +34,7 @@ C = $(CC) $(CF) $(CHOLMOD_CONFIG) $(NANTESTS)
# LIB = $(METIS) -lm -llapack_plain -lblas_plain -lgfortran -lgfortranbegin
# LIB = $(METIS) -lm -llapack -lblas -lgfortran -lgfortranbegin
# Linux:
LIB = $(METIS) -lm -llapack_plain -lblas_plain -lgfortran -lgfortranbegin -lpthread -lrt
# LIB = $(METIS) -lm -llapack_plain -lblas_plain -lgfortran -lgfortranbegin -lpthread -lrt
# Mac:
# LIB = $(METIS) -lm -llapack -lblas -lgfortran -lgfortranbegin -lpthread

Expand Down
4 changes: 4 additions & 0 deletions CHOLMOD/Tcov/tmp/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore
Empty file removed CHOLMOD/Tcov/tmp/.gitkeep
Empty file.
4 changes: 4 additions & 0 deletions CHOLMOD/Valgrind/tmp/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore
Empty file removed CHOLMOD/Valgrind/tmp/.gitkeep
Empty file.
4 changes: 4 additions & 0 deletions CSparse/MATLAB/UFget/MM/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore
Empty file removed CSparse/MATLAB/UFget/MM/.gitkeep
Empty file.
4 changes: 4 additions & 0 deletions CSparse/MATLAB/UFget/RB/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore
Empty file removed CSparse/MATLAB/UFget/RB/.gitkeep
Empty file.
4 changes: 4 additions & 0 deletions CSparse/MATLAB/UFget/svd/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore
Empty file removed CSparse/MATLAB/UFget/svd/.gitkeep
Empty file.
4 changes: 4 additions & 0 deletions CXSparse/MATLAB/UFget/MM/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore
Empty file removed CXSparse/MATLAB/UFget/MM/.gitkeep
Empty file.
4 changes: 4 additions & 0 deletions CXSparse/MATLAB/UFget/RB/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore
Empty file removed CXSparse/MATLAB/UFget/RB/.gitkeep
Empty file.
4 changes: 4 additions & 0 deletions CXSparse/MATLAB/UFget/svd/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Ignore everything in this directory
*
# Except this file
!.gitignore
Empty file removed CXSparse/MATLAB/UFget/svd/.gitkeep
Empty file.
12 changes: 12 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
Mar 24, 2015: SuiteSparse version 4.4.4

* CHOLMOD version number corrected. In 4.4.3, the CHOLMOD_SUBSUB_VERSION
string was left at '4' (it should have been '5', for CHOLMOD 3.0.5).
This version of SuiteSparse corrects this glitch.
* Minor changes to comments in SuiteSparse_config.
* SPQR version 2.0.1 released (minor update to documentation)

Jan 19, 2015: SuiteSparse version 4.4.3

* CHOLMOD 3.0.5: minor bug fix to MatrixOps/cholmod_symmetry

Jan 7, 2015: SuiteSparse version 4.4.2

* CHOLMOD 3.0.4: serious bug fix in supernodal factorization,
Expand Down
2 changes: 1 addition & 1 deletion README.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
SuiteSparse: A Suite of Sparse matrix packages at http://www.suitesparse.com

Jan 7, 2015. SuiteSparse VERSION 4.4.2
March 24, 2015. SuiteSparse VERSION 4.4.4

------------------
SuiteSparse/README
Expand Down
2 changes: 1 addition & 1 deletion SPQR/Demo/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ purge: distclean
- $(RM) -r *.dot pfile tfile

distclean: clean
- $(RM) qrdemo qrdemo_gpu qrdemoc qrsimple qrsimplec
- $(RM) qrdemo qrdemo_gpu qrdemoc qrsimple qrsimplec X.mtx
- $(RM) -r *.dSYM gpu_results.txt qrdemo_gpu2 qrdemo_gpu3

clean:
Expand Down
1 change: 1 addition & 0 deletions SPQR/Demo/README.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ demo_colamd*.sh scripts for running the GPU demo with COLAMD
demo_metis*.sh scripts for running the GPU demo with METIS
go*.m MATLAB scripts for testing the GPU version
qrdemo_gpu*.cpp GPU demos
qrdemo_gpu.out output of qrdemo_gpu.cpp

--------------------------------------------------------------------------------

Expand Down
18 changes: 18 additions & 0 deletions SPQR/Demo/qrdemo_gpu.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
./qrdemo_gpu ../Matrix/west0067.mtx 2
available GPU memory: 11160.8 MB, warmup time: 0.376328
Matrix 67-by-67 nnz: 294

norm(Ax-b): 4.6e-17
norm(A'(Ax-b)) 1.6e-14 rank: 67 of 67
./qrdemo_gpu ../Matrix/lp_e226_transposed.mtx 2
available GPU memory: 11160.8 MB, warmup time: 0.372199
Matrix 472-by-223 nnz: 2768

norm(Ax-b): 9.2e+00
norm(A'(Ax-b)) 2.1e-10 rank: 223 of 223
./qrdemo_gpu ../Matrix/lp_e226_transposed.mtx 6
available GPU memory: 11160.8 MB, warmup time: 0.36664
Matrix 472-by-223 nnz: 2768

norm(Ax-b): 9.2e+00
norm(A'(Ax-b)) 4.4e-10 rank: 223 of 223
4 changes: 4 additions & 0 deletions SPQR/Doc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
Mar 24, 2015: version 2.0.1

* minor changes to documentation

Oct 17, 2014: version 2.0.0

* MAJOR UPDATE: added GPU support. Up to 11x faster than CPU version.
Expand Down
Binary file modified SPQR/Doc/qrgpu_paper.pdf
Binary file not shown.
Binary file modified SPQR/Doc/spqr_user_guide.pdf
Binary file not shown.
6 changes: 1 addition & 5 deletions SPQR/Doc/spqr_user_guide.tex
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
Science Foundation, under grants 0203270, 0620286, and 0619080.},
Sencer Nuri Yeralan, and Sanjay Ranka}

\date{VERSION 2.0.0, Oct 17, 2014}
\date{VERSION 2.0.1, March 24, 2015}

%-------------------------------------------------------------------------------
\begin{document}
Expand Down Expand Up @@ -902,10 +902,6 @@ \section{GPU acceleration}
GPU acceleration is not yet available via the MATLAB mexFunction interface.
We expect to include this in a future release.

This GPU acceleration in SuiteSparseQR has been heavily tested and we feel that
it is now polished enough to appear in SuiteSparse. However, we are also
actively developing this code, so future enhancements are expected.

For a detailed technical report on the GPU-accelerated algorithm,
see \verb'qrgpu_paper.pdf' in the \verb'Doc' directory.

Expand Down
4 changes: 2 additions & 2 deletions SPQR/Include/SuiteSparseQR_definitions.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,11 +59,11 @@
#endif
*/

#define SPQR_DATE "Oct 1, 2014"
#define SPQR_DATE "Mar 24, 2015"
#define SPQR_VER_CODE(main,sub) ((main) * 1000 + (sub))
#define SPQR_MAIN_VERSION 2
#define SPQR_SUB_VERSION 0
#define SPQR_SUBSUB_VERSION 0
#define SPQR_SUBSUB_VERSION 1
#define SPQR_VERSION SPQR_VER_CODE(SPQR_MAIN_VERSION,SPQR_SUB_VERSION)

#endif
2 changes: 1 addition & 1 deletion SPQR/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# SuiteSparseQR Makefile
#-------------------------------------------------------------------------------

VERSION = 2.0.0
VERSION = 2.0.1

include ../SuiteSparse_config/SuiteSparse_config.mk

Expand Down
Loading

0 comments on commit 8339b36

Please sign in to comment.