diff --git a/AMD/Doc/AMD_UserGuide.pdf b/AMD/Doc/AMD_UserGuide.pdf index 8385a69851..2d9aa36125 100644 Binary files a/AMD/Doc/AMD_UserGuide.pdf and b/AMD/Doc/AMD_UserGuide.pdf differ diff --git a/AMD/Doc/AMD_UserGuide.tex b/AMD/Doc/AMD_UserGuide.tex index b932a71685..d8c2f66bf5 100644 --- a/AMD/Doc/AMD_UserGuide.tex +++ b/AMD/Doc/AMD_UserGuide.tex @@ -32,7 +32,7 @@ This work was supported by the EPSRC under grant GR/R46441. }} -\date{VERSION 2.3.0, Jun 1, 2012} +\date{VERSION 2.3.1, Jun 20, 2012} \maketitle %------------------------------------------------------------------------------ diff --git a/AMD/Doc/ChangeLog b/AMD/Doc/ChangeLog index 3224f733b1..f00073ca3e 100644 --- a/AMD/Doc/ChangeLog +++ b/AMD/Doc/ChangeLog @@ -1,3 +1,7 @@ +Jun 20, 2012: verison 2.3.1 + + * minor update for Windows (removed filesep) + Jun 1, 2012: version 2.3.0 * changed from UFconfig to SuiteSparse_config diff --git a/AMD/Include/amd.h b/AMD/Include/amd.h index c8076d5781..a38fd31bcb 100644 --- a/AMD/Include/amd.h +++ b/AMD/Include/amd.h @@ -397,11 +397,11 @@ void amd_l_info (double Info [ ]) ; * Versions 1.1 and earlier of AMD do not include a #define'd version number. */ -#define AMD_DATE "Jun 1, 2012" +#define AMD_DATE "Jun 20, 2012" #define AMD_VERSION_CODE(main,sub) ((main) * 1000 + (sub)) #define AMD_MAIN_VERSION 2 #define AMD_SUB_VERSION 3 -#define AMD_SUBSUB_VERSION 0 +#define AMD_SUBSUB_VERSION 1 #define AMD_VERSION AMD_VERSION_CODE(AMD_MAIN_VERSION,AMD_SUB_VERSION) #ifdef __cplusplus diff --git a/AMD/MATLAB/amd_make.m b/AMD/MATLAB/amd_make.m index aa0493941d..a91333c130 100644 --- a/AMD/MATLAB/amd_make.m +++ b/AMD/MATLAB/amd_make.m @@ -15,14 +15,13 @@ d = '-largeArrayDims' ; end -i = sprintf ('-I..%sInclude -I..%s..%sSuiteSparse_config', ... - filesep, filesep, filesep) ; +i = sprintf ('-I../Include -I../../SuiteSparse_config') ; cmd = sprintf ('mex -O %s -DDLONG -output amd2 %s amd_mex.c', d, i) ; files = {'amd_order', 'amd_dump', 'amd_postorder', 'amd_post_tree', ... 'amd_aat', 'amd_2', 'amd_1', 'amd_defaults', 'amd_control', ... 'amd_info', 'amd_valid', 'amd_global', 'amd_preprocess' } ; for i = 1 : length (files) - cmd = sprintf ('%s ..%sSource%s%s.c', cmd, filesep, filesep, files {i}) ; + cmd = sprintf ('%s ../Source/%s.c', cmd, files {i}) ; end if (details) fprintf ('%s\n', cmd) ; diff --git a/AMD/Makefile b/AMD/Makefile index 7275bd4f50..2db3476720 100644 --- a/AMD/Makefile +++ b/AMD/Makefile @@ -2,7 +2,7 @@ # AMD Makefile (for GNU Make or original make) #------------------------------------------------------------------------------ -VERSION = 2.3.0 +VERSION = 2.3.1 default: all diff --git a/CAMD/Doc/CAMD_UserGuide.pdf b/CAMD/Doc/CAMD_UserGuide.pdf index 3ec752e38e..aa9210592b 100644 Binary files a/CAMD/Doc/CAMD_UserGuide.pdf and b/CAMD/Doc/CAMD_UserGuide.pdf differ diff --git a/CAMD/Doc/CAMD_UserGuide.tex b/CAMD/Doc/CAMD_UserGuide.tex index 4be2c7bedf..8a47af0f6d 100644 --- a/CAMD/Doc/CAMD_UserGuide.tex +++ b/CAMD/Doc/CAMD_UserGuide.tex @@ -34,7 +34,7 @@ This work was supported by the EPSRC under grant GR/R46441. }} -\date{VERSION 2.3.0, Jun 1, 2012} +\date{VERSION 2.3.1, Jun 20, 2012} \maketitle %------------------------------------------------------------------------------ diff --git a/CAMD/Doc/ChangeLog b/CAMD/Doc/ChangeLog index 00524ea2d1..e689b4e99a 100644 --- a/CAMD/Doc/ChangeLog +++ b/CAMD/Doc/ChangeLog @@ -1,3 +1,7 @@ +Jun 20, 2012: verison 2.3.1 + + * minor update for Windows (removed filesep) + Jun 1, 2012: version 2.3.0 * changed from UFconfig to SuiteSparse_config diff --git a/CAMD/Include/camd.h b/CAMD/Include/camd.h index 05c0cd42ec..e2e190317a 100644 --- a/CAMD/Include/camd.h +++ b/CAMD/Include/camd.h @@ -404,11 +404,11 @@ void camd_l_info (double Info [ ]) ; * #endif */ -#define CAMD_DATE "Jun 1, 2012" +#define CAMD_DATE "Jun 20, 2012" #define CAMD_VERSION_CODE(main,sub) ((main) * 1000 + (sub)) #define CAMD_MAIN_VERSION 2 #define CAMD_SUB_VERSION 3 -#define CAMD_SUBSUB_VERSION 0 +#define CAMD_SUBSUB_VERSION 1 #define CAMD_VERSION CAMD_VERSION_CODE(CAMD_MAIN_VERSION,CAMD_SUB_VERSION) #ifdef __cplusplus diff --git a/CAMD/MATLAB/camd_make.m b/CAMD/MATLAB/camd_make.m index 389a3ac892..7d851ea4ad 100644 --- a/CAMD/MATLAB/camd_make.m +++ b/CAMD/MATLAB/camd_make.m @@ -15,14 +15,13 @@ d = '-largeArrayDims' ; end -i = sprintf ('-I..%sInclude -I..%s..%sSuiteSparse_config', ... - filesep, filesep, filesep) ; +i = sprintf ('-I../Include -I../../SuiteSparse_config') ; cmd = sprintf ('mex -O %s -DDLONG -output camd %s camd_mex.c', d, i) ; files = {'camd_order', 'camd_dump', 'camd_postorder', ... 'camd_aat', 'camd_2', 'camd_1', 'camd_defaults', 'camd_control', ... 'camd_info', 'camd_valid', 'camd_global', 'camd_preprocess' } ; for i = 1 : length (files) - cmd = sprintf ('%s ..%sSource%s%s.c', cmd, filesep, filesep, files {i}) ; + cmd = sprintf ('%s ../Source/%s.c', cmd, files {i}) ; end if (details) fprintf ('%s\n', cmd) ; diff --git a/CAMD/Makefile b/CAMD/Makefile index a86205be34..8ad74132bf 100644 --- a/CAMD/Makefile +++ b/CAMD/Makefile @@ -2,7 +2,7 @@ # CAMD Makefile #------------------------------------------------------------------------------ -VERSION = 2.3.0 +VERSION = 2.3.1 default: demos diff --git a/CHOLMOD/Core/cholmod_common.c b/CHOLMOD/Core/cholmod_common.c index 05c0714fb7..2394fab2ae 100644 --- a/CHOLMOD/Core/cholmod_common.c +++ b/CHOLMOD/Core/cholmod_common.c @@ -201,7 +201,7 @@ int CHOLMOD(start) Common->cudaStreamPotrf [1] = NULL ; Common->cudaStreamPotrf [2] = NULL ; Common->cublasEventPotrf [0] = NULL ; - Common->cublasEventPotrf [2] = NULL ; + Common->cublasEventPotrf [1] = NULL ; Common->HostPinnedMemory = NULL ; Common->devPotrfWork = NULL ; Common->devSyrkGemmPtrLx = NULL ; diff --git a/CHOLMOD/Demo/Makefile b/CHOLMOD/Demo/Makefile index dc1a3ae139..72efc002ea 100644 --- a/CHOLMOD/Demo/Makefile +++ b/CHOLMOD/Demo/Makefile @@ -11,17 +11,23 @@ include ../../SuiteSparse_config/SuiteSparse_config.mk #------------------------------------------------------------------------------- # the optional Partition module requires METIS, CAMD, and CCOLAMD +I_WITH_PARTITION = LIB_WITH_PARTITION = -CONFIG = +CONFIG = -DNPARTITION +# check if METIS is requested and available ifeq (,$(findstring -DNPARTITION, $(CHOLMOD_CONFIG))) - # check if METIS is available - ifeq (../../metis-4.0, $(wildcard ../../metis-4.0)) - LIB_WITH_PARTITION = $(METIS) ../../CCOLAMD/Lib/libccolamd.a \ - ../../CAMD/Lib/libcamd.a - else - # METIS is not available, but CHOLMOD_CONFIG does not specify - # -DNPARTITION. Add it here so we can still compile CHOLMOD. - CONFIG = -DNPARTITION + # METIS is requested. See if it is available + ifeq ($(METIS_PATH), $(wildcard $(METIS_PATH))) + ifeq (../../CAMD, $(wildcard ../../CAMD)) + ifeq (../../CCOLAMD, $(wildcard ../../CCOLAMD)) + # METIS, CAMD, and CCOLAMD are available + LIB_WITH_PARTITION = $(METIS) ../../CCOLAMD/Lib/libccolamd.a \ + ../../CAMD/Lib/libcamd.a + I_WITH_PARTITION = -I$(METIS_PATH)/Lib \ + -I../../CCOLAMD/Include -I../../CAMD/Include + CONFIG = + endif + endif endif endif #------------------------------------------------------------------------------- @@ -74,10 +80,11 @@ library: ( cd ../Lib ; $(MAKE) ) ( cd ../../AMD ; $(MAKE) library ) ( cd ../../COLAMD ; $(MAKE) library ) -ifneq (,$(findstring -DNPARTITION, $(CHOLMOD_CONFIG))) +ifneq (,$(findstring -DNPARTITION, $(CONFIG))) else ( cd ../../CCOLAMD ; $(MAKE) library ) ( cd ../../CAMD ; $(MAKE) library ) + ( cd $(METIS_PATH) && $(MAKE) ) endif #------------------------------------------------------------------------------- diff --git a/CHOLMOD/Doc/ChangeLog b/CHOLMOD/Doc/ChangeLog index dc4f24e22a..40d40c4de7 100644 --- a/CHOLMOD/Doc/ChangeLog +++ b/CHOLMOD/Doc/ChangeLog @@ -1,3 +1,9 @@ +Jun 20, 2012: verison 2.0.1 + + * minor update for Windows (removed filesep, compiler port fix) + * minor changes to format of User Guide + * bug fix for GPU code (singular case) + Jun 1, 2012: version 2.0.0 * changed from UFconfig to SuiteSparse_config diff --git a/CHOLMOD/Doc/UserGuide.pdf b/CHOLMOD/Doc/UserGuide.pdf index 8843fa32e3..f70c269419 100644 Binary files a/CHOLMOD/Doc/UserGuide.pdf and b/CHOLMOD/Doc/UserGuide.pdf differ diff --git a/CHOLMOD/Doc/UserGuide.tex b/CHOLMOD/Doc/UserGuide.tex index 776430160b..7581d1ef20 100644 --- a/CHOLMOD/Doc/UserGuide.tex +++ b/CHOLMOD/Doc/UserGuide.tex @@ -9,7 +9,7 @@ \newcommand{\new}[1]{\overline{#1}} \topmargin 0in -\textheight 9in +\textheight 8.5in \oddsidemargin 0pt \evensidemargin 0pt \textwidth 6.5in @@ -21,7 +21,7 @@ \title{User Guide for CHOLMOD: a sparse Cholesky factorization and modification package} -\date{VERSION 2.0.0, Jun 1, 2012} +\date{VERSION 2.0.1, Jun 20, 2012} \maketitle %------------------------------------------------------------------------------- @@ -295,9 +295,9 @@ {\tt SuiteSparse\_config/SuiteSparse\_config.mk} file: \begin{itemize} \item {\tt CC = } your C compiler, such as {\tt cc}. -\item {\tt CFLAGS = } optimization flags, such as {\tt -O}. +\item {\tt CF = } optimization flags, such as {\tt -O}. \item {\tt RANLIB = } your system's {\tt ranlib} program, if needed. -\item {\tt AR =} the command to create a library (such as {\tt ar}). +\item {\tt ARCHIVE =} the command to create a library (such as {\tt ar}). \item {\tt RM =} the command to delete a file. \item {\tt MV =} the command to rename a file. \item {\tt F77 =} the command to compile a Fortran program (optional). @@ -420,6 +420,7 @@ \subsection{{\tt cholmod\_demo}: a short demo program} \input{_cholmod_demo_m \subsection{{\tt cholmod\_make}: compile CHOLMOD in MATLAB} \input{_cholmod_make_m.tex} \newpage \subsection{{\tt etree2}: same as {\tt etree}} \input{_etree2_m.tex} +\newpage \subsection{{\tt graph\_demo}: graph partitioning demo} \input{_graph_demo_m.tex} \newpage \subsection{{\tt lchol}: $\m{LL}\tr$ factorization} \input{_lchol_m.tex} @@ -489,30 +490,6 @@ \subsection{{\tt cholmod\_make}: compiling CHOLMOD in MATLAB} The {\tt cholmod\_make} handles this redefinition without making any changes to your METIS source code. -%------------------------------------------------------------------------------- -\subsection{Unix {\tt make} for compiling CHOLMOD} -%------------------------------------------------------------------------------- - -You can also compile the CHOLMOD mexFunctions using the Unix/Linux {\tt make} -command. When using the {\tt gcc} compiler, I strongly recommend editing the -{\tt metis-4.0/Makefile.in} file and changing {\tt COPTIONS} to -\begin{verbatim} - COPTIONS = -fexceptions -\end{verbatim} -Also ensure {\tt -fexceptions} is in the {\tt CFLAGS} option in the -{\tt SuiteSparse\_config/SuiteSparse\_config.mk} file that comes with CHOLMOD. -If you do not make these modifications, the CHOLMOD mexFunctions -will terminate MATLAB if they encounter an error. - -Next, compile your METIS 4.0.1 library by typing {\tt make} in the -{\tt metis-4.0} directory. Then type {\tt make} in the {\tt CHOLMOD/MATLAB} -directory. This will compile the C-callable libraries for -AMD, COLAMD, CAMD, CCOLAMD, METIS, and CHOLMOD, and then compile the -mexFunction interfaces to those libraries. -If METIS tries {\tt malloc} and encounters an out-of-memory condition, -it calls {\tt abort}, which will terminate MATLAB. This problem does not -occur using the method described in the previous section. - %------------------------------------------------------------------------------- \newpage \section{Integer and floating-point types, and notation used} %------------------------------------------------------------------------------- @@ -1285,7 +1262,7 @@ \subsection{{\tt cholmod\_sparse}: compressed-column sparse matrix} Stores a sparse matrix in compressed-column form. %--------------------------------------- -\newpage \subsection{{\tt cholmod\_allocate\_sparse}: allocate sparse matrix} +\subsection{{\tt cholmod\_allocate\_sparse}: allocate sparse matrix} %--------------------------------------- \input{_allocate_sparse.tex} @@ -1307,7 +1284,7 @@ \subsection{{\tt cholmod\_reallocate\_sparse}: reallocate sparse matrix} Reallocates a sparse matrix, so that it can contain {\tt nznew} entries. %--------------------------------------- -\newpage \subsection{{\tt cholmod\_nnz}: number of entries in sparse matrix} +\subsection{{\tt cholmod\_nnz}: number of entries in sparse matrix} %--------------------------------------- \input{_nnz.tex} @@ -1457,7 +1434,7 @@ \subsection{{\tt cholmod\_transpose\_sym}: transpose/permute symmetric sparse ma not modified. {\tt F} can still be properly freed with {\tt cholmod\_free\_sparse}. %--------------------------------------- -\newpage \subsection{{\tt cholmod\_band}: extract band of a sparse matrix} +\subsection{{\tt cholmod\_band}: extract band of a sparse matrix} %--------------------------------------- \input{_band.tex} @@ -1495,7 +1472,7 @@ \subsection{{\tt cholmod\_band\_inplace}: extract band, in place} Only packed matrices can be converted in place. %--------------------------------------- -\newpage \subsection{{\tt cholmod\_aat}: compute $\m{AA}\tr$} +\subsection{{\tt cholmod\_aat}: compute $\m{AA}\tr$} %--------------------------------------- \input{_aat.tex} @@ -1518,7 +1495,7 @@ \subsection{{\tt cholmod\_copy\_sparse}: copy sparse matrix} Returns an exact copy of the input sparse matrix {\tt A}. %--------------------------------------- -\newpage \subsection{{\tt cholmod\_copy}: copy (and change) sparse matrix} +\subsection{{\tt cholmod\_copy}: copy (and change) sparse matrix} %--------------------------------------- \input{_copy.tex} @@ -2431,7 +2408,7 @@ \subsection{{\tt cholmod\_analyze}: symbolic factorization} Refer to {\tt cholmod\_transpose\_unsym} for a description of {\tt f}. %--------------------------------------- -\newpage \subsection{{\tt cholmod\_factorize}: numeric factorization} +\subsection{{\tt cholmod\_factorize}: numeric factorization} %--------------------------------------- \input{_factorize.tex} @@ -2477,7 +2454,7 @@ \subsection{{\tt cholmod\_analyze}: symbolic factorization} stored in LAPACK and the BLAS. %--------------------------------------- -\newpage \subsection{{\tt cholmod\_analyze\_p}: symbolic factorization, given permutation} +\subsection{{\tt cholmod\_analyze\_p}: symbolic factorization, given permutation} %--------------------------------------- \input{_analyze_p.tex} @@ -2498,7 +2475,7 @@ \subsection{{\tt cholmod\_factorize\_p}: numeric factorization, given permutatio Only the real part, {\tt beta[0]}, is used. %--------------------------------------- -\newpage \subsection{{\tt cholmod\_solve}: solve a linear system} +\subsection{{\tt cholmod\_solve}: solve a linear system} %--------------------------------------- \input{_solve.tex} @@ -2543,7 +2520,7 @@ \subsection{{\tt cholmod\_spsolve}: solve a linear system} Identical to {\tt cholmod\_spsolve}, except that {\tt B} and {\tt X} are sparse. %--------------------------------------- -\newpage \subsection{{\tt cholmod\_etree}: find elimination tree} +\subsection{{\tt cholmod\_etree}: find elimination tree} %--------------------------------------- \input{_etree.tex} @@ -2581,7 +2558,7 @@ \subsection{{\tt cholmod\_rowcolcounts}: nonzeros counts of a factor} % sparse QR and LU factorization", BIT, vol 41, 2001, pp. 693-710. %--------------------------------------- -\newpage \subsection{{\tt cholmod\_analyze\_ordering}: analyze a permutation} +\subsection{{\tt cholmod\_analyze\_ordering}: analyze a permutation} %--------------------------------------- \input{_analyze_ordering.tex} @@ -2599,7 +2576,7 @@ \subsection{{\tt cholmod\_rowcolcounts}: nonzeros counts of a factor} {\tt cholmod\_rowcolcounts} are not computed if {\tt ColCount} is {\tt NULL}. %--------------------------------------- -\newpage \subsection{{\tt cholmod\_amd}: interface to AMD} +\subsection{{\tt cholmod\_amd}: interface to AMD} %--------------------------------------- \input{_amd.tex} @@ -2632,7 +2609,7 @@ \subsection{{\tt cholmod\_colamd}: interface to COLAMD} {\tt A} must be unsymmetric ({\tt A->stype = 0}). %--------------------------------------- -\newpage \subsection{{\tt cholmod\_rowfac}: row-oriented Cholesky factorization} +\subsection{{\tt cholmod\_rowfac}: row-oriented Cholesky factorization} %--------------------------------------- \input{_rowfac.tex} @@ -2687,7 +2664,7 @@ \subsection{{\tt cholmod\_rowfac\_mask}: row-oriented Cholesky factorization} %--------------------------------------- -\newpage \subsection{{\tt cholmod\_row\_subtree}: pattern of row of a factor} +\subsection{{\tt cholmod\_row\_subtree}: pattern of row of a factor} %--------------------------------------- \input{_row_subtree.tex} @@ -2711,7 +2688,7 @@ \subsection{{\tt cholmod\_rowfac\_mask}: row-oriented Cholesky factorization} the number of entries in {\tt R} is given by {\tt Rp [0]}. %--------------------------------------- -\newpage \subsection{{\tt cholmod\_row\_lsubtree}: pattern of row of a factor} +\subsection{{\tt cholmod\_row\_lsubtree}: pattern of row of a factor} %--------------------------------------- \input{_row_lsubtree.tex} @@ -2721,7 +2698,7 @@ \subsection{{\tt cholmod\_rowfac\_mask}: row-oriented Cholesky factorization} {\tt Fi} and {\tt fnz} instead. %--------------------------------------- -\newpage \subsection{{\tt cholmod\_resymbol}: re-do symbolic factorization} +\subsection{{\tt cholmod\_resymbol}: re-do symbolic factorization} %--------------------------------------- \input{_resymbol.tex} @@ -2750,7 +2727,7 @@ \subsection{{\tt cholmod\_resymbol\_noperm}: re-do symbolic factorization} ordering {\tt L->Perm} is not used. %--------------------------------------- -\newpage \subsection{{\tt cholmod\_postorder}: tree postorder} +\subsection{{\tt cholmod\_postorder}: tree postorder} %--------------------------------------- \input{_postorder.tex} @@ -2863,7 +2840,6 @@ \subsection{{\tt cholmod\_updown\_solve}: update/downdate} ordering, not your original ordering. This routine does not handle multiple right-hand-sides. %--------------------------------------- -\newpage \subsection{{\tt cholmod\_updown\_mark}: update/downdate} %--------------------------------------- @@ -2882,7 +2858,7 @@ \subsection{{\tt cholmod\_updown\_mask}: update/downdate} For use in LPDASA only. %--------------------------------------- -\newpage \subsection{{\tt cholmod\_rowadd}: add row to factor} +\subsection{{\tt cholmod\_rowadd}: add row to factor} %--------------------------------------- \input{_rowadd.tex} @@ -2900,7 +2876,7 @@ \subsection{{\tt cholmod\_rowadd\_solve}: add row to factor} Identical to {\tt cholmod\_rowadd}, except the system $\m{Lx}=\m{b}$ is also updated/downdated, just like {\tt cholmod\_updown\_solve}. %--------------------------------------- -\newpage \subsection{{\tt cholmod\_rowdel}: delete row from factor} +\subsection{{\tt cholmod\_rowdel}: delete row from factor} %--------------------------------------- \input{_rowdel.tex} @@ -2921,7 +2897,7 @@ \subsection{{\tt cholmod\_rowdel\_solve}: delete row from factor} The algorithm is described in \cite{DavisHager05}. %--------------------------------------- -\newpage \subsection{{\tt cholmod\_rowadd\_mark}: add row to factor} +\subsection{{\tt cholmod\_rowadd\_mark}: add row to factor} %--------------------------------------- \input{_rowadd_mark.tex} diff --git a/CHOLMOD/Include/cholmod_core.h b/CHOLMOD/Include/cholmod_core.h index e6e5ef81a3..274ab47df0 100644 --- a/CHOLMOD/Include/cholmod_core.h +++ b/CHOLMOD/Include/cholmod_core.h @@ -243,11 +243,11 @@ * #endif */ -#define CHOLMOD_DATE "Jun 1, 2012" +#define CHOLMOD_DATE "Jun 20, 2012" #define CHOLMOD_VER_CODE(main,sub) ((main) * 1000 + (sub)) #define CHOLMOD_MAIN_VERSION 2 #define CHOLMOD_SUB_VERSION 0 -#define CHOLMOD_SUBSUB_VERSION 0 +#define CHOLMOD_SUBSUB_VERSION 1 #define CHOLMOD_VERSION \ CHOLMOD_VER_CODE(CHOLMOD_MAIN_VERSION,CHOLMOD_SUB_VERSION) diff --git a/CHOLMOD/Lib/Makefile b/CHOLMOD/Lib/Makefile index 28bda08b64..6e0915eb86 100644 --- a/CHOLMOD/Lib/Makefile +++ b/CHOLMOD/Lib/Makefile @@ -10,19 +10,26 @@ include ../../SuiteSparse_config/SuiteSparse_config.mk #------------------------------------------------------------------------------- # the optional Partition module requires METIS, CAMD, and CCOLAMD -I_WITH_PARTITION = -CONFIG = +I_WITH_PARTITION = +LIB_WITH_PARTITION = +CONFIG = -DNPARTITION +# check if METIS is requested and available ifeq (,$(findstring -DNPARTITION, $(CHOLMOD_CONFIG))) - # METIS is check if METIS is available - ifeq (../../metis-4.0, $(wildcard ../../metis-4.0)) - I_WITH_PARTITION = -I$(METIS_PATH)/Lib \ - -I../../CCOLAMD/Include -I../../CAMD/Include - else - # METIS is not available, but CHOLMOD_CONFIG does not specify - # -DNPARTITION. Add it here so we can still compile CHOLMOD. - CONFIG = -DNPARTITION + # METIS is requested. See if it is available + ifeq ($(METIS_PATH), $(wildcard $(METIS_PATH))) + ifeq (../../CAMD, $(wildcard ../../CAMD)) + ifeq (../../CCOLAMD, $(wildcard ../../CCOLAMD)) + # METIS, CAMD, and CCOLAMD are available + LIB_WITH_PARTITION = $(METIS) ../../CCOLAMD/Lib/libccolamd.a \ + ../../CAMD/Lib/libcamd.a + I_WITH_PARTITION = -I$(METIS_PATH)/Lib \ + -I../../CCOLAMD/Include -I../../CAMD/Include + CONFIG = + endif + endif endif endif +#------------------------------------------------------------------------------- I = -I../../AMD/Include -I../../AMD/Source -I../../COLAMD/Include \ $(I_WITH_PARTITION) -I../Include -I../../SuiteSparse_config diff --git a/CHOLMOD/MATLAB/chol2.m b/CHOLMOD/MATLAB/chol2.m index 8a7be6442f..baa5b7c01b 100644 --- a/CHOLMOD/MATLAB/chol2.m +++ b/CHOLMOD/MATLAB/chol2.m @@ -7,7 +7,7 @@ % % Example: % R = chol2 (A) same as R = chol (A), just faster -% [R,p] = chol2 (A) save as [R,p] = chol(A), just faster +% [R,p] = chol2 (A) same as [R,p] = chol(A), just faster % [R,p,q] = chol2 (A) factorizes A(q,q) into R'*R, where q is % a fill-reducing ordering % diff --git a/CHOLMOD/MATLAB/cholmod_demo.m b/CHOLMOD/MATLAB/cholmod_demo.m index 2285c4d304..61a6ffc019 100644 --- a/CHOLMOD/MATLAB/cholmod_demo.m +++ b/CHOLMOD/MATLAB/cholmod_demo.m @@ -71,7 +71,7 @@ function try_matrix (A) -% try_matrix: try a matrix with CHOLMOD + % try_matrix: try a matrix with CHOLMOD n = size (A,1) ; S = sparse (A) ; diff --git a/CHOLMOD/MATLAB/cholmod_make.m b/CHOLMOD/MATLAB/cholmod_make.m index 8e5a977772..c6ae5e50d9 100644 --- a/CHOLMOD/MATLAB/cholmod_make.m +++ b/CHOLMOD/MATLAB/cholmod_make.m @@ -8,7 +8,7 @@ % All but METIS are distributed with CHOLMOD. To compile CHOLMOD to use METIS % you must first place a copy of the metis-4.0 directory (METIS version 4.0.1) % in same directory that contains the AMD, COLAMD, CCOLAMD, and CHOLMOD -% directories. % See http://www-users.cs.umn.edu/~karypis/metis for a copy of +% directories. See http://www-users.cs.umn.edu/~karypis/metis for a copy of % METIS 4.0.1. % % You must type the cholmod_make command while in the CHOLMOD/MATLAB directory. @@ -54,11 +54,11 @@ include = [include ' -DMATLAB6p1_OR_EARLIER'] ; end -% Determine if METIS is available + % Determine if METIS is available metis_path = '../../metis-4.0' ; have_metis = exist ([metis_path '/Lib'], 'dir') ; -% fix the METIS 4.0.1 rename.h file + % fix the METIS 4.0.1 rename.h file if (have_metis) fprintf ('Compiling CHOLMOD with METIS for MATLAB Version %s\n', v) ; f = fopen ('rename.h', 'w') ; @@ -83,12 +83,12 @@ end -%------------------------------------------------------------------------------- -% BLAS option -%------------------------------------------------------------------------------- + %--------------------------------------------------------------------------- + % 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. + % 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. if (pc) if (verLessThan ('matlab', '6.5')) @@ -118,9 +118,7 @@ lapack = [lapack ' -lrt'] ; end -%------------------------------------------------------------------------------- - -include = strrep (include, '/', filesep) ; + %------------------------------------------------------------------------------- config_src = { '../../SuiteSparse_config/SuiteSparse_config' } ; @@ -300,7 +298,7 @@ obj_extension = '.o' ; end -% compile each library source file + % compile each library source file obj = '' ; source = [ordering_src config_src cholmod_src cholmod_matlab] ; @@ -311,8 +309,8 @@ kk = 0 ; for f = source - ff = strrep (f {1}, '/', filesep) ; - slash = strfind (ff, filesep) ; + ff = f {1} ; + slash = strfind (ff, '/') ; if (isempty (slash)) slash = 1 ; else @@ -324,21 +322,21 @@ kk = do_cmd (s, kk, details) ; end -% compile each mexFunction + % compile each mexFunction for f = cholmod_mex_src s = sprintf ('mex %s -DDLONG -O %s %s.c', flags, include, f{1}) ; s = [s obj ' ' lapack] ; %#ok kk = do_cmd (s, kk, details) ; end -% clean up + % clean up s = ['delete ' obj] ; do_cmd (s, kk, details) ; fprintf ('\nCHOLMOD successfully compiled\n') ; -%------------------------------------------------------------------------------- + %------------------------------------------------------------------------------- function kk = do_cmd (s, kk, details) -%DO_CMD: evaluate a command, and either print it or print a "." + %DO_CMD: evaluate a command, and either print it or print a "." if (details) fprintf ('%s\n', s) ; else diff --git a/CHOLMOD/MATLAB/graph_demo.m b/CHOLMOD/MATLAB/graph_demo.m index 7c24c38084..409bf6ad6a 100644 --- a/CHOLMOD/MATLAB/graph_demo.m +++ b/CHOLMOD/MATLAB/graph_demo.m @@ -89,10 +89,8 @@ function graph_demo (n) end end -%------------------------------------------------------------------------------- - function my_gplot (A, x, y) -% my_gplot : like gplot, just a lot faster + % my_gplot : like gplot, just a lot faster [i, j] = find (A) ; [ignore, p] = sort (max(i, j)) ; i = i (p) ; diff --git a/CHOLMOD/MATLAB/lchol.m b/CHOLMOD/MATLAB/lchol.m index 330e7f47aa..02627368ac 100644 --- a/CHOLMOD/MATLAB/lchol.m +++ b/CHOLMOD/MATLAB/lchol.m @@ -6,7 +6,7 @@ % % Example: % L = lchol (A) same as L = chol (A')', just faster -% [L,p] = lchol (A) save as [R,p] = chol(A') ; L=R', just faster +% [L,p] = lchol (A) same as [R,p] = chol(A') ; L=R', just faster % [L,p,q] = lchol (A) factorizes A(q,q) into L*L', where q is a % fill-reducing ordering % diff --git a/CHOLMOD/MATLAB/ldlchol.m b/CHOLMOD/MATLAB/ldlchol.m index 5087b0802b..17bdf2a55d 100644 --- a/CHOLMOD/MATLAB/ldlchol.m +++ b/CHOLMOD/MATLAB/ldlchol.m @@ -9,7 +9,6 @@ % [LD,p] = ldlchol (A) similar [R,p] = chol(A), but for L*D*L' % [LD,p,q] = ldlchol (A) factorizes A(q,q) into L*D*L', where q is a % fill-reducing ordering -% % LD = ldlchol (A,beta) return the LDL' factorization of A*A'+beta*I % [LD,p] = ldlchol (A,beta) like [R,p] = chol(A*A'+beta+I) % [LD,p,q] = ldlchol (A,beta) factorizes A(q,:)*A(q,:)'+beta*I into L*D*L' diff --git a/CHOLMOD/Makefile b/CHOLMOD/Makefile index decdc1f00d..97911ef39a 100644 --- a/CHOLMOD/Makefile +++ b/CHOLMOD/Makefile @@ -2,7 +2,7 @@ # CHOLMOD Makefile #------------------------------------------------------------------------------- -VERSION = 2.0.0 +VERSION = 2.0.1 # Note: If you do not have METIS, or do not wish to use it in CHOLMOD, you must # compile CHOLMOD with the -DNPARTITION flag. diff --git a/CHOLMOD/Supernodal/t_cholmod_gpu.c b/CHOLMOD/Supernodal/t_cholmod_gpu.c index ddb80ad1f8..e978799c05 100644 --- a/CHOLMOD/Supernodal/t_cholmod_gpu.c +++ b/CHOLMOD/Supernodal/t_cholmod_gpu.c @@ -25,7 +25,9 @@ #define L_ENTRY 2 #endif -//#define GPU_Printf printf +/* +#define GPU_Printf printf +*/ #define GPU_Printf #define PAGE_SIZE (4*1024) @@ -43,16 +45,16 @@ void TEMPLATE (CHOLMOD (gpu_init)) ) { Int i ; + cublasStatus_t cublasError ; + cudaError_t cudaErr ; + size_t maxBytesSize, HostPinnedSize ; Common->GemmUsed = 0 ; + GPU_Printf ("gpu_init : %p\n", (void *) ((size_t) Cwork & ~(PAGE_SIZE-1))) ; + if (!(Common->cublasHandle)) { -#ifndef NTIMER - double start = SuiteSparse_time ( ) ; -#endif - cublasStatus_t cublasError ; - cudaError_t cudaErr ; /* ------------------------------------------------------------------ */ /* create the CUDA BLAS handle */ @@ -104,7 +106,7 @@ void TEMPLATE (CHOLMOD (gpu_init)) /* create each CUDA event */ /* ------------------------------------------------------------------ */ - for (i=0 ; i< 2 ; i++) + for (i = 0 ; i < 2 ; i++) { cudaErr = cudaEventCreateWithFlags (&(Common->cublasEventPotrf [i]), cudaEventDisableTiming) ; @@ -114,27 +116,29 @@ void TEMPLATE (CHOLMOD (gpu_init)) return ; } } + } - /* ------------------------------------------------------------------ */ - /* pin the Host memory */ - /* ------------------------------------------------------------------ */ + /* ---------------------------------------------------------------------- */ + /* pin the Host memory */ + /* ---------------------------------------------------------------------- */ - Common->HostPinnedMemory = (void *) ((size_t) Cwork & ~(PAGE_SIZE-1)) ; - size_t maxBytesSize = sizeof (double)*L_ENTRY*maxSize ; + Common->HostPinnedMemory = (void *) ((size_t) Cwork & ~(PAGE_SIZE-1)) ; + maxBytesSize = sizeof (double)*L_ENTRY*maxSize ; - /* Align on a 4K page boundary (it is no more necessary in 4.1 */ - size_t HostPinnedSize = - (((size_t) Cwork + maxBytesSize + PAGE_SIZE-1) & ~(PAGE_SIZE-1)) - - (size_t) (Common->HostPinnedMemory) ; + /* Align on a 4K page boundary (it is no more necessary in 4.1 */ + HostPinnedSize = + (((size_t) Cwork + maxBytesSize + PAGE_SIZE-1) & ~(PAGE_SIZE-1)) + - (size_t) (Common->HostPinnedMemory) ; - cudaErr = cudaHostRegister (Common->HostPinnedMemory, - HostPinnedSize, 0) ; + GPU_Printf ("gpu HostPinnedSize: %g %p\n", (double) HostPinnedSize, + Common->HostPinnedMemory) ; + cudaErr = cudaHostRegister (Common->HostPinnedMemory, + HostPinnedSize, 0) ; - if (cudaErr != cudaSuccess) - { - ERROR (CHOLMOD_GPU_PROBLEM, "CUDA Pinning Memory") ; - Common->HostPinnedMemory = NULL ; - } + if (cudaErr != cudaSuccess) + { + ERROR (CHOLMOD_GPU_PROBLEM, "CUDA Pinning Memory") ; + Common->HostPinnedMemory = NULL ; } } @@ -149,6 +153,7 @@ void TEMPLATE (CHOLMOD (gpu_end)) ) { /* unpin the Host memory */ + GPU_Printf ("gpu_end %p\n", Common->HostPinnedMemory) ; cudaError_t cudaErr = cudaHostUnregister (Common->HostPinnedMemory) ; if (cudaErr != cudaSuccess) { @@ -187,8 +192,10 @@ int TEMPLATE (CHOLMOD (gpu_updateC)) ) { double *devPtrLx, *devPtrC ; + double alpha, beta ; cublasStatus_t cublasStatus ; cudaError_t cudaStat [2] ; + Int ndrow3 ; Common->SyrkUsed = 0 ; Common->GemmUsed = 0 ; @@ -199,7 +206,7 @@ int TEMPLATE (CHOLMOD (gpu_updateC)) return (0) ; } - Int ndrow3 = ndrow2 - ndrow1 ; + ndrow3 = ndrow2 - ndrow1 ; #ifndef NTIMER Common->syrkStart = SuiteSparse_time ( ) ; @@ -221,7 +228,7 @@ int TEMPLATE (CHOLMOD (gpu_updateC)) /* one or both cudaMalloc's failed */ if (devPtrLx) cudaFree (devPtrLx) ; if (devPtrC) cudaFree (devPtrC) ; - GPU_Printf ("cudaMalloc failed =%d,%d ndrow1=%d ndrow2=%d ndcol=%d\n", + GPU_Printf ("gpu malloc failed =%d,%d ndrow1=%d ndrow2=%d ndcol=%d\n", cudaStat [0], cudaStat [1], (int) ndrow1, (int) ndrow2, (int) ndcol) ; /* cudaMalloc failure is not an error, just bypass the GPU */ @@ -273,8 +280,8 @@ int TEMPLATE (CHOLMOD (gpu_updateC)) ERROR (CHOLMOD_GPU_PROBLEM, "GPU CUBLAS stream") ; } - double alpha = 1.0 ; - double beta = 0.0 ; + alpha = 1.0 ; + beta = 0.0 ; #ifdef REAL cublasStatus = cublasDsyrk (Common->cublasHandle, CUBLAS_FILL_MODE_LOWER, CUBLAS_OP_N, @@ -317,6 +324,11 @@ int TEMPLATE (CHOLMOD (gpu_updateC)) if (ndrow3 > 0) { +#ifndef REAL + cuDoubleComplex calpha = {1.0,0.0} ; + cuDoubleComplex cbeta = {0.0,0.0} ; +#endif + #ifndef NTIMER Common->CHOLMOD_GPU_GEMM_CALLS++ ; #endif @@ -332,8 +344,8 @@ int TEMPLATE (CHOLMOD (gpu_updateC)) /* ------------------------------------------------------------------ */ #ifdef REAL - double alpha = 1.0 ; - double beta = 0.0 ; + alpha = 1.0 ; + beta = 0.0 ; cublasStatus = cublasDgemm (Common->cublasHandle, CUBLAS_OP_N, CUBLAS_OP_T, ndrow3, ndrow1, ndcol, /* M, N, K */ @@ -346,17 +358,15 @@ int TEMPLATE (CHOLMOD (gpu_updateC)) devPtrC + L_ENTRY*ndrow1, /* C, LDC: C2 */ ndrow2) ; #else - cuDoubleComplex alpha = {1.0,0.0} ; - cuDoubleComplex beta = {0.0,0.0} ; cublasStatus = cublasZgemm (Common->cublasHandle, CUBLAS_OP_N, CUBLAS_OP_C, ndrow3, ndrow1, ndcol, /* M, N, K */ - &alpha, /* ALPHA: 1 */ + &calpha, /* ALPHA: 1 */ (const cuDoubleComplex *) devPtrLx + ndrow1, /* A, LDA: L2, ndrow */ ndrow2, (const cuDoubleComplex *) devPtrLx, /* B, LDB: L1, ndrow */ ndrow2, - &beta, /* BETA: 0 */ + &cbeta, /* BETA: 0 */ (cuDoubleComplex *)devPtrC + ndrow1, /* C, LDC: C2 */ ndrow2) ; #endif @@ -465,8 +475,14 @@ int TEMPLATE (CHOLMOD (gpu_lower_potrf)) ) { double *devPtrA, *devPtrB, *A ; + double alpha, beta ; cudaError_t cudaStat ; cublasStatus_t cublasStatus ; + Int j, nsrow2, nb, n, gpu_lda, lda, gpu_ldb ; + int ilda, ijb, iinfo ; +#ifndef NTIMER + double tstart = SuiteSparse_time ( ) ; +#endif if (nscol2 < 256) { @@ -474,25 +490,20 @@ int TEMPLATE (CHOLMOD (gpu_lower_potrf)) return (0) ; } - Int nsrow2 = nsrow - nscol2 ; - Int j ; + nsrow2 = nsrow - nscol2 ; /* ---------------------------------------------------------------------- */ /* heuristic to get the block size depending of the problem size */ /* ---------------------------------------------------------------------- */ - Int nb = 128 ; + nb = 128 ; if (nscol2 > 4096) nb = 256 ; if (nscol2 > 8192) nb = 384 ; - Int n = nscol2 ; - Int gpu_lda = ((nscol2+31)/32)*32 ; - Int lda = nsrow ; + n = nscol2 ; + gpu_lda = ((nscol2+31)/32)*32 ; + lda = nsrow ; A = Lx + L_ENTRY*psx ; -#ifndef NTIMER - double start = SuiteSparse_time ( ) ; -#endif - /* ---------------------------------------------------------------------- */ /* free the dpotrf workspace, if allocated */ /* ---------------------------------------------------------------------- */ @@ -507,7 +518,7 @@ int TEMPLATE (CHOLMOD (gpu_lower_potrf)) /* determine the GPU leading dimension of B */ /* ---------------------------------------------------------------------- */ - Int gpu_ldb = 0 ; + gpu_ldb = 0 ; if (nsrow2 > 0) { gpu_ldb = ((nsrow2+31)/32)*32 ; @@ -604,8 +615,8 @@ int TEMPLATE (CHOLMOD (gpu_lower_potrf)) /* do the CUDA BLAS dsyrk */ /* ------------------------------------------------------------------ */ - double alpha = -1.0 ; - double beta = 1.0 ; + alpha = -1.0 ; + beta = 1.0 ; #ifdef REAL cublasStatus = cublasDsyrk (Common->cublasHandle, CUBLAS_FILL_MODE_LOWER, CUBLAS_OP_N, jb, j, @@ -671,8 +682,8 @@ int TEMPLATE (CHOLMOD (gpu_lower_potrf)) if ((j+jb) < n) { #ifdef REAL - double alpha = -1.0 ; - double beta = 1.0 ; + alpha = -1.0 ; + beta = 1.0 ; cublasStatus = cublasDgemm (Common->cublasHandle, CUBLAS_OP_N, CUBLAS_OP_T, (n-j-jb), jb, j, @@ -682,15 +693,15 @@ int TEMPLATE (CHOLMOD (gpu_lower_potrf)) &beta, devPtrA + (j+jb + j*gpu_lda), gpu_lda) ; #else - cuDoubleComplex alpha = {-1.0,0.0} ; - cuDoubleComplex beta = { 1.0,0.0} ; - cublasStatus = cublasZgemm (Common->cublasHandle, + cuDoubleComplex calpha = {-1.0,0.0} ; + cuDoubleComplex cbeta = { 1.0,0.0} ; + cublasStatus = cublasZgemm (Common->cublasHandle, CUBLAS_OP_N, CUBLAS_OP_C, (n-j-jb), jb, j, - &alpha, + &calpha, (cuDoubleComplex*)devPtrA + (j+jb), gpu_lda, (cuDoubleComplex*)devPtrA + (j) , gpu_lda, - &beta, + &cbeta, (cuDoubleComplex*)devPtrA + (j+jb + j*gpu_lda), gpu_lda) ; #endif if (cublasStatus != CUBLAS_STATUS_SUCCESS) @@ -709,9 +720,8 @@ int TEMPLATE (CHOLMOD (gpu_lower_potrf)) /* compute the Cholesky factorization of the jbxjb block on the CPU */ /* ------------------------------------------------------------------ */ - int ilda = (int) lda ; - int ijb = jb ; - int iinfo ; + ilda = (int) lda ; + ijb = jb ; #ifdef REAL LAPACK_DPOTRF ("L", &ijb, A + L_ENTRY * (j + j*lda), &ilda, &iinfo) ; #else @@ -747,7 +757,7 @@ int TEMPLATE (CHOLMOD (gpu_lower_potrf)) if ((j+jb) < n) { #ifdef REAL - double alpha = 1.0 ; + alpha = 1.0 ; cublasStatus = cublasDtrsm (Common->cublasHandle, CUBLAS_SIDE_RIGHT, CUBLAS_FILL_MODE_LOWER, CUBLAS_OP_T, CUBLAS_DIAG_NON_UNIT, @@ -756,12 +766,12 @@ int TEMPLATE (CHOLMOD (gpu_lower_potrf)) devPtrA + (j + j*gpu_lda), gpu_lda, devPtrA + (j+jb + j*gpu_lda), gpu_lda) ; #else - cuDoubleComplex alpha = {1.0,0.0}; + cuDoubleComplex calpha = {1.0,0.0}; cublasStatus = cublasZtrsm (Common->cublasHandle, CUBLAS_SIDE_RIGHT, CUBLAS_FILL_MODE_LOWER, CUBLAS_OP_C, CUBLAS_DIAG_NON_UNIT, (n-j-jb), jb, - &alpha, + &calpha, (cuDoubleComplex *)devPtrA + (j + j*gpu_lda), gpu_lda, (cuDoubleComplex *)devPtrA + (j+jb + j*gpu_lda), gpu_lda) ; #endif @@ -780,7 +790,7 @@ int TEMPLATE (CHOLMOD (gpu_lower_potrf)) } #ifndef NTIMER - Common->CHOLMOD_GPU_POTRF_TIME += SuiteSparse_time ( ) - start ; + Common->CHOLMOD_GPU_POTRF_TIME += SuiteSparse_time ( ) - tstart ; #endif return (1) ; } @@ -812,6 +822,16 @@ int TEMPLATE (CHOLMOD (gpu_triangular_solve)) double *devPtrA, *devPtrB ; cudaError_t cudaStat ; cublasStatus_t cublasStatus ; + Int gpu_lda, gpu_ldb ; +#ifdef REAL + double alpha = 1.0 ; +#else + cuDoubleComplex calpha = {1.0,0.0} ; +#endif +#ifndef NTIMER + double tstart = SuiteSparse_time ( ) ; + Common->CHOLMOD_GPU_TRSM_CALLS++ ; +#endif if (!Common->devPotrfWork) { @@ -819,13 +839,8 @@ int TEMPLATE (CHOLMOD (gpu_triangular_solve)) return (0) ; } - Int gpu_lda = ((nscol2+31)/32)*32 ; - Int gpu_ldb = ((nsrow2+31)/32)*32 ; - -#ifndef NTIMER - Common->CHOLMOD_GPU_TRSM_CALLS++ ; - double start = SuiteSparse_time ( ) ; -#endif + gpu_lda = ((nscol2+31)/32)*32 ; + gpu_ldb = ((nsrow2+31)/32)*32 ; devPtrA = Common->devPotrfWork ; devPtrB = devPtrA + gpu_lda * gpu_lda * L_ENTRY ; @@ -846,7 +861,6 @@ int TEMPLATE (CHOLMOD (gpu_triangular_solve)) /* ---------------------------------------------------------------------- */ #ifdef REAL - double alpha = 1.0 ; cublasStatus = cublasDtrsm (Common->cublasHandle, CUBLAS_SIDE_RIGHT, CUBLAS_FILL_MODE_LOWER, CUBLAS_OP_T, CUBLAS_DIAG_NON_UNIT, @@ -855,12 +869,11 @@ int TEMPLATE (CHOLMOD (gpu_triangular_solve)) devPtrA, gpu_lda, /* A, LDA */ devPtrB, gpu_ldb) ; /* B, LDB */ #else - cuDoubleComplex alpha = {1.0,0.0} ; cublasStatus = cublasZtrsm (Common->cublasHandle, CUBLAS_SIDE_RIGHT, CUBLAS_FILL_MODE_LOWER, CUBLAS_OP_C, CUBLAS_DIAG_NON_UNIT, nsrow2, nscol2, /* M, N */ - &alpha, /* ALPHA: 1 */ + &calpha, /* ALPHA: 1 */ (const cuDoubleComplex *) devPtrA, gpu_lda, /* A, LDA */ (cuDoubleComplex *) devPtrB, gpu_ldb) ; /* B, LDB: nsrow2 */ #endif @@ -900,7 +913,7 @@ int TEMPLATE (CHOLMOD (gpu_triangular_solve)) cudaFree (Common->devPotrfWork) ; Common->devPotrfWork = NULL ; #ifndef NTIMER - Common->CHOLMOD_GPU_TRSM_TIME += SuiteSparse_time ( ) - start ; + Common->CHOLMOD_GPU_TRSM_TIME += SuiteSparse_time ( ) - tstart ; #endif return (1) ; } diff --git a/CHOLMOD/Supernodal/t_cholmod_super_numeric.c b/CHOLMOD/Supernodal/t_cholmod_super_numeric.c index 54cb0b8a0f..676ff61857 100644 --- a/CHOLMOD/Supernodal/t_cholmod_super_numeric.c +++ b/CHOLMOD/Supernodal/t_cholmod_super_numeric.c @@ -107,7 +107,7 @@ static int TEMPLATE (cholmod_super_numeric) cholmod_common *Common ) { - double one [2], zero [2], fjk [2] ; + double one [2], zero [2], fjk [2], tstart ; double *Lx, *Ax, *Fx, *Az, *Fz, *C ; Int *Super, *Head, *Ls, *Lpi, *Lpx, *Map, *SuperMap, *RelativeMap, *Next, *Lpos, *Fp, *Fi, *Fnz, *Ap, *Ai, *Anz, *Iwork, *Next_save, *Lpos_save ; @@ -473,7 +473,7 @@ static int TEMPLATE (cholmod_super_numeric) { #ifndef NTIMER Common->CHOLMOD_CPU_SYRK_CALLS++ ; - double start = SuiteSparse_time () ; + tstart = SuiteSparse_time () ; #endif #ifdef REAL BLAS_dsyrk ("L", "N", @@ -491,7 +491,7 @@ static int TEMPLATE (cholmod_super_numeric) C, ndrow2) ; /* C, LDC: C1 */ #endif #ifndef NTIMER - Common->CHOLMOD_CPU_SYRK_TIME += SuiteSparse_time () - start ; + Common->CHOLMOD_CPU_SYRK_TIME += SuiteSparse_time () - tstart ; #endif /* compute remaining (ndrow2-ndrow1)-by-ndrow1 block of C, * C2 = L2*L1' */ @@ -499,7 +499,7 @@ static int TEMPLATE (cholmod_super_numeric) { #ifndef NTIMER Common->CHOLMOD_CPU_GEMM_CALLS++ ; - double start = SuiteSparse_time () ; + tstart = SuiteSparse_time () ; #endif #ifdef REAL BLAS_dgemm ("N", "C", @@ -526,7 +526,7 @@ static int TEMPLATE (cholmod_super_numeric) #endif #ifndef NTIMER Common->CHOLMOD_CPU_GEMM_TIME += - SuiteSparse_time () - start ; + SuiteSparse_time () - tstart ; #endif } } @@ -577,7 +577,7 @@ static int TEMPLATE (cholmod_super_numeric) { /* GPU version when ndrow3 > zero, splits into two parts */ #ifndef NTIMER - double start = SuiteSparse_time () ; + tstart = SuiteSparse_time () ; #endif pj = 0 ; for (j = 0 ; j < ndrow1 ; j++) /* cols k1:k2-1 */ @@ -596,7 +596,7 @@ static int TEMPLATE (cholmod_super_numeric) pj += ndrow2 ; } #ifndef NTIMER - Common->CHOLMOD_ASSEMBLE_TIME2 += SuiteSparse_time () - start ; + Common->CHOLMOD_ASSEMBLE_TIME2 += SuiteSparse_time () - tstart ; #endif /* wait for dgemm to finish */ TEMPLATE (CHOLMOD (gpu_syncGemm)) (Common) ; @@ -617,7 +617,7 @@ static int TEMPLATE (cholmod_super_numeric) pj += ndrow2 ; } #ifndef NTIMER - Common->CHOLMOD_ASSEMBLE_TIME += SuiteSparse_time () - start ; + Common->CHOLMOD_ASSEMBLE_TIME += SuiteSparse_time () - tstart ; #endif } #endif @@ -676,7 +676,7 @@ static int TEMPLATE (cholmod_super_numeric) { #ifndef NTIMER Common->CHOLMOD_CPU_POTRF_CALLS++ ; - double start = SuiteSparse_time () ; + tstart = SuiteSparse_time () ; #endif #ifdef REAL LAPACK_dpotrf ("L", @@ -690,7 +690,7 @@ static int TEMPLATE (cholmod_super_numeric) info) ; /* INFO */ #endif #ifndef NTIMER - Common->CHOLMOD_CPU_POTRF_TIME += SuiteSparse_time ()- start ; + Common->CHOLMOD_CPU_POTRF_TIME += SuiteSparse_time ()- tstart ; #endif } @@ -766,6 +766,9 @@ static int TEMPLATE (cholmod_super_numeric) * zero. Also, info will be 1 if integer overflow occured in * the BLAS. */ Head [s] = EMPTY ; +#ifdef GPU_BLAS + TEMPLATE (CHOLMOD (gpu_end)) (Common) ; +#endif return (Common->status >= CHOLMOD_OK) ; } else @@ -802,7 +805,7 @@ static int TEMPLATE (cholmod_super_numeric) { #ifndef NTIMER Common->CHOLMOD_CPU_TRSM_CALLS++ ; - double start = SuiteSparse_time () ; + tstart = SuiteSparse_time () ; #endif #ifdef REAL BLAS_dtrsm ("R", "L", "C", "N", @@ -820,7 +823,7 @@ static int TEMPLATE (cholmod_super_numeric) nsrow) ; #endif #ifndef NTIMER - Common->CHOLMOD_CPU_TRSM_TIME += SuiteSparse_time ()- start ; + Common->CHOLMOD_CPU_TRSM_TIME += SuiteSparse_time () - tstart ; #endif } @@ -856,16 +859,19 @@ static int TEMPLATE (cholmod_super_numeric) { /* matrix is not positive definite; finished clean-up for supernode * containing negative diagonal */ + +#ifdef GPU_BLAS + TEMPLATE (CHOLMOD (gpu_end)) (Common) ; +#endif return (Common->status >= CHOLMOD_OK) ; } } + /* success; matrix is positive definite */ + L->minor = n ; #ifdef GPU_BLAS TEMPLATE (CHOLMOD (gpu_end)) (Common) ; #endif - - /* success; matrix is positive definite */ - L->minor = n ; return (Common->status >= CHOLMOD_OK) ; } diff --git a/CHOLMOD/Tcov/Makefile b/CHOLMOD/Tcov/Makefile index ffe6b1d97e..d6c3c544d5 100644 --- a/CHOLMOD/Tcov/Makefile +++ b/CHOLMOD/Tcov/Makefile @@ -32,6 +32,13 @@ C = $(CC) $(CF) $(CHOLMOD_CONFIG) $(NANTESTS) # Solaris # LIB = $(METIS) -xlic_lib=sunperf +#------------------------------------------------------------------------------- +# With the CUDA BLAS: +ifneq ($(GPU_CONFIG),) +LIB += $(GPU_BLAS_PATH)/lib64/libcudart.so $(GPU_BLAS_PATH)/lib64/libcublas.so +endif +#------------------------------------------------------------------------------- + # Use "grep" only, if you do not have "indent" # PRETTY = grep -v "^\#" | indent -bl -nce -ss -bli0 -i4 -sob -l120 PRETTY = grep -v "^\#" | indent -bl -nce -bli0 -i4 -sob -l120 @@ -1003,7 +1010,8 @@ z_updown.o: ../Modify/cholmod_updown.c \ #------------------------------------------------------------------------------- z_super_numeric.o: ../Supernodal/cholmod_super_numeric.c \ - ../Supernodal/t_cholmod_super_numeric.c + ../Supernodal/t_cholmod_super_numeric.c \ + ../Supernodal/t_cholmod_gpu.c $(C) -E $(I) $< | $(PRETTY) > z_super_numeric.c $(C) -c $(I) z_super_numeric.c diff --git a/CSparse/Doc/ChangeLog b/CSparse/Doc/ChangeLog index f92cd198dd..c9af6d4175 100644 --- a/CSparse/Doc/ChangeLog +++ b/CSparse/Doc/ChangeLog @@ -1,3 +1,7 @@ +Jun 20, 2012: verison 3.1.1 + + * minor update for Windows (removed filesep) + Jun 1, 2012: version 3.1.0 * minor changes to enable the creation of CXSparse 3.1.0 diff --git a/CSparse/MATLAB/CSparse/cs_make.m b/CSparse/MATLAB/CSparse/cs_make.m index 3bf9ffa90c..29689d28c1 100644 --- a/CSparse/MATLAB/CSparse/cs_make.m +++ b/CSparse/MATLAB/CSparse/cs_make.m @@ -141,7 +141,7 @@ kk, details, mexcmd) ; CS = ['cs_mex' obj] ; if (nargout > 0) - objfiles = ['..' filesep 'CSparse' filesep 'cs_mex' obj] ; + objfiles = ['../CSparse/cs_mex' obj] ; end for i = 1:length (cs) [s t kk] = compile_source (srcdir, cs {i}, obj, hfile, force, ... @@ -150,7 +150,7 @@ anysrc = anysrc | s ; %#ok CS = [CS ' ' cs{i} obj] ; %#ok if (nargout > 0) - objfiles = [objfiles ' ..' filesep 'CSparse' filesep cs{i} obj] ; %#ok + objfiles = [objfiles ' ../CSparse/' cs{i} obj] ; %#ok end end @@ -189,7 +189,6 @@ %------------------------------------------------------------------------------- function kk = do_cmd (s, kk, details) %DO_CMD: evaluate a command, and either print it or print a "." -s = strrep (s, '/', filesep) ; if (details) fprintf ('%s\n', s) ; else diff --git a/CSparse/MATLAB/Demo/cs_demo1.m b/CSparse/MATLAB/Demo/cs_demo1.m index 07b6dc64cc..a2c586b50c 100644 --- a/CSparse/MATLAB/Demo/cs_demo1.m +++ b/CSparse/MATLAB/Demo/cs_demo1.m @@ -17,7 +17,7 @@ function cs_demo1 (matrixpath) try % older versions of MATLAB do not have an input argument to mfilename p = mfilename ('fullpath') ; - t = strfind (p, filesep) ; + t = strfind (p, '/') ; matrixpath = [ p(1:t(end)) '../../Matrix' ] ; catch % assume we are in the C*Sparse/MATLAB/CSparse/Demo directory diff --git a/CSparse/MATLAB/Demo/cs_demo2.m b/CSparse/MATLAB/Demo/cs_demo2.m index 6bfbb5060a..72ae2f5438 100644 --- a/CSparse/MATLAB/Demo/cs_demo2.m +++ b/CSparse/MATLAB/Demo/cs_demo2.m @@ -16,7 +16,7 @@ function cs_demo2 (do_pause, matrixpath) try % older versions of MATLAB do not have an input argument to mfilename p = mfilename ('fullpath') ; - t = strfind (p, filesep) ; + t = strfind (p, '/') ; matrixpath = [ p(1:t(end)) '../../Matrix' ] ; catch % assume we are in the C*Sparse/MATLAB/CSparse/Demo directory diff --git a/CSparse/MATLAB/Demo/cs_demo3.m b/CSparse/MATLAB/Demo/cs_demo3.m index 1df6817d73..a40c271910 100644 --- a/CSparse/MATLAB/Demo/cs_demo3.m +++ b/CSparse/MATLAB/Demo/cs_demo3.m @@ -16,7 +16,7 @@ function cs_demo3 (do_pause, matrixpath) try % older versions of MATLAB do not have an input argument to mfilename p = mfilename ('fullpath') ; - t = strfind (p, filesep) ; + t = strfind (p, '/') ; matrixpath = [ p(1:t(end)) '../../Matrix' ] ; catch % assume we are in the C*Sparse/MATLAB/CSparse/Demo directory diff --git a/CSparse/MATLAB/Demo/private/get_problem.m b/CSparse/MATLAB/Demo/private/get_problem.m index 7829ae8312..32ac4168ed 100644 --- a/CSparse/MATLAB/Demo/private/get_problem.m +++ b/CSparse/MATLAB/Demo/private/get_problem.m @@ -19,8 +19,6 @@ if (isempty (s)) s = 0 ; end -% f = sprintf ('%s..%s..%sMatrix%s%s', ... -% prefix, filesep, filesep, filesep, name (s+1:end)) ; % load the triplet version of the matrix T = load ([ prefix '/' name(s+1:end) ]) ; diff --git a/CSparse/MATLAB/UFget/mat/UF_Index.mat b/CSparse/MATLAB/UFget/mat/UF_Index.mat index 3ebcb0990a..6ec593a03f 100644 Binary files a/CSparse/MATLAB/UFget/mat/UF_Index.mat and b/CSparse/MATLAB/UFget/mat/UF_Index.mat differ diff --git a/CSparse/MATLAB/UFget/matrices/UFstats.csv b/CSparse/MATLAB/UFget/matrices/UFstats.csv index 5a24289890..2c40799645 100644 --- a/CSparse/MATLAB/UFget/matrices/UFstats.csv +++ b/CSparse/MATLAB/UFget/matrices/UFstats.csv @@ -1,5 +1,5 @@ -2558 -06-Mar-2012 12:31:24 +2567 +03-Jul-2012 15:03:14 HB,1138_bus,1138,1138,4054,1,0,0,1,1,1,power network problem HB,494_bus,494,494,1666,1,0,0,1,1,1,power network problem HB,662_bus,662,662,2474,1,0,0,1,1,1,power network problem @@ -2558,3 +2558,12 @@ Chevron,Chevron1,37365,37365,330633,0,0,0,0,0.994503321194266,0.7103673090824775 Chevron,Chevron2,90249,90249,803173,0,0,0,0,0.9963698795383519,0.6400065084076283,other problem Chevron,Chevron3,381381,381381,3413113,0,0,0,0,0.998180577966654,0.5728441696033818,other problem Chevron,Chevron4,711450,711450,6376412,0,0,0,0,0.9986570077610406,0.5561276492234193,other problem +CPM,cz148,148,148,1527,1,0,1,0,0.4263959390862944,0.2306018854242204,2D/3D problem +CPM,cz308,308,308,3182,1,0,1,0,0.4342379958246347,0.2219902574808629,2D/3D problem +CPM,cz628,628,628,6346,1,0,1,0,0.441413081497027,0.2308499475341028,2D/3D problem +CPM,cz1268,1268,1268,12786,1,0,1,0,0.4386178155929849,0.2340684146553221,2D/3D problem +CPM,cz2548,2548,2548,25674,1,0,1,0,0.4322407679667906,0.2349736227622589,2D/3D problem +CPM,cz5108,5108,5108,51412,1,0,1,0,0.433914996544575,0.2362214927436075,2D/3D problem +CPM,cz10228,10228,10228,102876,1,0,1,0,0.4358431914342458,0.2371988602020551,2D/3D problem +CPM,cz20468,20468,20468,206076,1,0,1,0,0.4354769190983147,0.2377052713245119,2D/3D problem +CPM,cz40948,40948,40948,412148,1,0,1,0,0.4349030172413793,0.2372683189655172,2D/3D problem diff --git a/CSparse/MATLAB/cs_install.m b/CSparse/MATLAB/cs_install.m index 4b58066ba8..9f35a4791e 100644 --- a/CSparse/MATLAB/cs_install.m +++ b/CSparse/MATLAB/cs_install.m @@ -33,13 +33,13 @@ function cs_install (do_pause) if (do_pause) input ('Hit enter to continue: ') ; end -addpath ([pwd filesep 'CSparse']) ; -addpath ([pwd filesep 'Demo']) ; +addpath ([pwd '/CSparse']) ; +addpath ([pwd '/Demo']) ; if (verLessThan ('matlab', '7.0')) fprintf ('UFget not installed (MATLAB 7.0 or later required)\n') ; else - addpath ([pwd filesep 'UFget']) ; + addpath ([pwd '/UFget']) ; end cd ('CSparse') ; diff --git a/CSparse/Makefile b/CSparse/Makefile index b121b694e6..fd1bb8db86 100644 --- a/CSparse/Makefile +++ b/CSparse/Makefile @@ -2,7 +2,7 @@ # CSparse Makefile #------------------------------------------------------------------------------ -VERSION = 3.1.0 +VERSION = 3.1.1 C: ( cd Lib ; $(MAKE) ) diff --git a/CSparse/README.txt b/CSparse/README.txt index 71c323a92f..65dafef6ab 100644 --- a/CSparse/README.txt +++ b/CSparse/README.txt @@ -1,5 +1,5 @@ CSparse: a Concise Sparse Matrix package. -VERSION 3.1.0, Copyright (c) 2006-2012, Timothy A. Davis, Jun 1, 2012. +VERSION 3.1.1, Copyright (c) 2006-2012, Timothy A. Davis, Jun 20, 2012. http://www.suitesparse.com Refer to "Direct Methods for Sparse Linear Systems," Timothy A. Davis, diff --git a/CSparse/Tcov/Makefile b/CSparse/Tcov/Makefile index eba31ffbd7..7c823297c7 100644 --- a/CSparse/Tcov/Makefile +++ b/CSparse/Tcov/Makefile @@ -7,7 +7,7 @@ CC = gcc CFLAGS = -O -g -fprofile-arcs -ftest-coverage \ -Wall -W -Wshadow -Wmissing-prototypes -Wstrict-prototypes \ -Wredundant-decls -Wnested-externs -Wdisabled-optimization -ansi \ - -Wno-unused-parameter -Werror -I../Include -I../Demo + -Wno-unused-parameter -I../Include -I../Demo run: all run1 runbook run3 runtest ./covall diff --git a/CXSparse/Demo/cs_demo.out b/CXSparse/Demo/cs_demo.out index c8c174d86a..0a58a73f5d 100644 --- a/CXSparse/Demo/cs_demo.out +++ b/CXSparse/Demo/cs_demo.out @@ -424,8 +424,8 @@ QR amd(A'*A) time: 0.00 resid: 1.61e-02 --- Matrix: 492-by-490, nnz: 49920 (sym: 0: nnz 0), norm: 9.29e-01 blocks: 10 singletons: 8 structural rank: 448 -QR natural time: 0.05 resid: nan -QR amd(A'*A) time: 0.05 resid: nan +QR natural time: 0.04 resid: nan +QR amd(A'*A) time: 0.06 resid: nan ./cs_demo2 < ../Matrix/bcsstk01 --- Matrix: 48-by-48, nnz: 224 (sym: -1: nnz 400), norm: 3.57e+09 @@ -456,10 +456,10 @@ downdate: time: 0.00 (incl solve) resid: 3.74e-17 --- Matrix: 4884-by-4884, nnz: 147631 (sym: -1: nnz 290378), norm: 7.01e+09 blocks: 75 singletons: 74 structural rank: 4884 -QR amd(A'*A) time: 0.58 resid: 2.01e-22 -LU amd(A+A') time: 0.29 resid: 1.10e-22 +QR amd(A'*A) time: 0.57 resid: 2.01e-22 +LU amd(A+A') time: 0.30 resid: 1.10e-22 LU amd(S'*S) time: 0.30 resid: 1.28e-22 -LU amd(A'*A) time: 0.32 resid: 1.78e-22 +LU amd(A'*A) time: 0.31 resid: 1.78e-22 Chol amd(A+A') time: 0.10 resid: 1.19e-22 ./cs_demo3 < ../Matrix/bcsstk16 @@ -472,9 +472,9 @@ solve chol time 0.00 original: resid: 1.19e-22 update: time: 0.00 update: time: 0.00 (incl solve) resid: 1.12e-23 -rechol: time: 0.10 (incl solve) resid: 1.17e-23 +rechol: time: 0.08 (incl solve) resid: 1.17e-23 downdate: time: 0.00 -downdate: time: 0.00 (incl solve) resid: 4.09e-22 +downdate: time: 0.01 (incl solve) resid: 4.09e-22 ./cs_di_demo1 < ../Matrix/t1 T: CXSparse Version 2.3.0, Jun 1, 2012. Copyright (c) Timothy A. Davis, 2006-2012 @@ -564,7 +564,7 @@ tiny entries dropped: 10 blocks: 38 singletons: 37 structural rank: 183 QR natural time: 0.00 resid: 1.42e-27 QR amd(A'*A) time: 0.00 resid: 3.35e-28 -LU natural time: 0.00 resid: 6.20e-28 +LU natural time: 0.01 resid: 6.20e-28 LU amd(A+A') time: 0.00 resid: 1.55e-27 LU amd(S'*S) time: 0.00 resid: 6.98e-28 LU amd(A'*A) time: 0.00 resid: 6.98e-28 @@ -594,8 +594,8 @@ QR amd(A'*A) time: 0.00 resid: 1.61e-02 --- Matrix: 492-by-490, nnz: 49920 (sym: 0: nnz 0), norm: 9.29e-01 blocks: 10 singletons: 8 structural rank: 448 -QR natural time: 0.05 resid: nan -QR amd(A'*A) time: 0.05 resid: nan +QR natural time: 0.04 resid: nan +QR amd(A'*A) time: 0.06 resid: nan ./cs_di_demo2 < ../Matrix/bcsstk01 --- Matrix: 48-by-48, nnz: 224 (sym: -1: nnz 400), norm: 3.57e+09 @@ -626,8 +626,8 @@ downdate: time: 0.00 (incl solve) resid: 3.74e-17 --- Matrix: 4884-by-4884, nnz: 147631 (sym: -1: nnz 290378), norm: 7.01e+09 blocks: 75 singletons: 74 structural rank: 4884 -QR amd(A'*A) time: 0.58 resid: 2.01e-22 -LU amd(A+A') time: 0.29 resid: 1.10e-22 +QR amd(A'*A) time: 0.57 resid: 2.01e-22 +LU amd(A+A') time: 0.30 resid: 1.10e-22 LU amd(S'*S) time: 0.30 resid: 1.28e-22 LU amd(A'*A) time: 0.31 resid: 1.78e-22 Chol amd(A+A') time: 0.09 resid: 1.19e-22 @@ -642,7 +642,7 @@ solve chol time 0.00 original: resid: 1.19e-22 update: time: 0.00 update: time: 0.00 (incl solve) resid: 1.12e-23 -rechol: time: 0.10 (incl solve) resid: 1.17e-23 +rechol: time: 0.09 (incl solve) resid: 1.17e-23 downdate: time: 0.00 downdate: time: 0.00 (incl solve) resid: 4.09e-22 ./cs_dl_demo1 < ../Matrix/t1 @@ -796,23 +796,23 @@ downdate: time: 0.00 (incl solve) resid: 3.74e-17 --- Matrix: 4884-by-4884, nnz: 147631 (sym: -1: nnz 290378), norm: 7.01e+09 blocks: 75 singletons: 74 structural rank: 4884 -QR amd(A'*A) time: 0.57 resid: 2.01e-22 +QR amd(A'*A) time: 0.58 resid: 2.01e-22 LU amd(A+A') time: 0.30 resid: 1.10e-22 LU amd(S'*S) time: 0.30 resid: 1.28e-22 -LU amd(A'*A) time: 0.32 resid: 1.78e-22 +LU amd(A'*A) time: 0.31 resid: 1.78e-22 Chol amd(A+A') time: 0.10 resid: 1.19e-22 ./cs_dl_demo3 < ../Matrix/bcsstk16 --- Matrix: 4884-by-4884, nnz: 147631 (sym: -1: nnz 290378), norm: 7.01e+09 chol then update/downdate amd(A+A') -symbolic chol time 0.01 -numeric chol time 0.09 -solve chol time 0.00 +symbolic chol time 0.00 +numeric chol time 0.10 +solve chol time 0.01 original: resid: 1.19e-22 update: time: 0.00 -update: time: 0.01 (incl solve) resid: 1.12e-23 -rechol: time: 0.09 (incl solve) resid: 1.17e-23 +update: time: 0.00 (incl solve) resid: 1.12e-23 +rechol: time: 0.10 (incl solve) resid: 1.17e-23 downdate: time: 0.00 downdate: time: 0.00 (incl solve) resid: 4.09e-22 ./cs_ci_demo1 < ../Matrix/t2 @@ -944,9 +944,9 @@ LU amd(A'*A) time: 0.01 resid: 3.37e-16 --- Matrix: 324-by-324, nnz: 26730 (sym: 0: nnz 0), norm: 1.71e+00 blocks: 1 singletons: 0 structural rank: 324 -QR natural time: 0.02 resid: 9.42e-17 -QR amd(A'*A) time: 0.04 resid: 8.94e-17 -LU natural time: 0.00 resid: 6.01e-17 +QR natural time: 0.03 resid: 9.42e-17 +QR amd(A'*A) time: 0.03 resid: 8.94e-17 +LU natural time: 0.01 resid: 6.01e-17 LU amd(A+A') time: 0.02 resid: 4.05e-17 LU amd(S'*S) time: 0.01 resid: 4.71e-17 LU amd(A'*A) time: 0.01 resid: 4.71e-17 @@ -989,8 +989,8 @@ downdate: time: 0.00 (incl solve) resid: 5.85e-17 --- Matrix: 1280-by-1280, nnz: 11963 (sym: -1: nnz 22646), norm: 8.00e+01 tiny entries dropped: 66 blocks: 20 singletons: 14 structural rank: 1280 -QR amd(A'*A) time: 0.01 resid: 6.15e-25 -LU amd(A+A') time: 0.00 resid: 2.33e-25 +QR amd(A'*A) time: 0.00 resid: 6.15e-25 +LU amd(A+A') time: 0.01 resid: 2.33e-25 LU amd(S'*S) time: 0.00 resid: 3.96e-25 LU amd(A'*A) time: 0.00 resid: 3.96e-25 Chol amd(A+A') time: 0.00 resid: 1.58e-25 @@ -1004,7 +1004,7 @@ numeric chol time 0.00 solve chol time 0.00 original: resid: 1.51e-25 update: time: 0.00 -update: time: 0.01 (incl solve) resid: 1.75e-25 +update: time: 0.00 (incl solve) resid: 1.75e-25 rechol: time: 0.00 (incl solve) resid: 1.71e-25 downdate: time: 0.00 downdate: time: 0.00 (incl solve) resid: 5.85e-25 @@ -1122,26 +1122,26 @@ LU amd(A'*A) time: 0.00 resid: 4.76e-17 --- Matrix: 492-by-490, nnz: 49920 (sym: 0: nnz 0), norm: 9.29e-01 blocks: 10 singletons: 8 structural rank: 448 QR natural time: 0.17 resid: nan -QR amd(A'*A) time: 0.19 resid: nan +QR amd(A'*A) time: 0.18 resid: nan ./cs_cl_demo2 < ../Matrix/young1c --- Matrix: 841-by-841, nnz: 4089 (sym: 0: nnz 0), norm: 7.30e+02 blocks: 1 singletons: 0 structural rank: 841 -QR natural time: 0.00 resid: 1.81e-16 +QR natural time: 0.01 resid: 1.81e-16 QR amd(A'*A) time: 0.01 resid: 1.57e-16 -LU natural time: 0.01 resid: 1.39e-16 -LU amd(A+A') time: 0.00 resid: 2.95e-16 -LU amd(S'*S) time: 0.01 resid: 3.37e-16 -LU amd(A'*A) time: 0.00 resid: 3.37e-16 +LU natural time: 0.00 resid: 1.39e-16 +LU amd(A+A') time: 0.01 resid: 2.95e-16 +LU amd(S'*S) time: 0.00 resid: 3.37e-16 +LU amd(A'*A) time: 0.01 resid: 3.37e-16 ./cs_cl_demo2 < ../Matrix/qc324 --- Matrix: 324-by-324, nnz: 26730 (sym: 0: nnz 0), norm: 1.71e+00 blocks: 1 singletons: 0 structural rank: 324 QR natural time: 0.02 resid: 9.42e-17 -QR amd(A'*A) time: 0.04 resid: 8.94e-17 +QR amd(A'*A) time: 0.03 resid: 8.94e-17 LU natural time: 0.01 resid: 6.01e-17 LU amd(A+A') time: 0.01 resid: 4.05e-17 -LU amd(S'*S) time: 0.01 resid: 4.71e-17 +LU amd(S'*S) time: 0.02 resid: 4.71e-17 LU amd(A'*A) time: 0.01 resid: 4.71e-17 ./cs_cl_demo2 < ../Matrix/neumann @@ -1149,8 +1149,8 @@ LU amd(A'*A) time: 0.01 resid: 4.71e-17 blocks: 1 singletons: 0 structural rank: 1600 QR amd(A'*A) time: 0.02 resid: 1.04e-15 LU amd(A+A') time: 0.00 resid: 3.55e-16 -LU amd(S'*S) time: 0.01 resid: 4.03e-16 -LU amd(A'*A) time: 0.01 resid: 4.03e-16 +LU amd(S'*S) time: 0.02 resid: 4.03e-16 +LU amd(A'*A) time: 0.00 resid: 4.03e-16 ./cs_cl_demo2 < ../Matrix/c4 --- Matrix: 4-by-4, nnz: 10 (sym: -1: nnz 16), norm: 7.37e+01 @@ -1196,8 +1196,8 @@ symbolic chol time 0.00 numeric chol time 0.00 solve chol time 0.00 original: resid: 1.51e-25 -update: time: 0.01 -update: time: 0.01 (incl solve) resid: 1.75e-25 +update: time: 0.00 +update: time: 0.00 (incl solve) resid: 1.75e-25 rechol: time: 0.00 (incl solve) resid: 1.71e-25 downdate: time: 0.00 downdate: time: 0.00 (incl solve) resid: 5.85e-25 diff --git a/CXSparse/Doc/ChangeLog b/CXSparse/Doc/ChangeLog index f92cd198dd..c9af6d4175 100644 --- a/CXSparse/Doc/ChangeLog +++ b/CXSparse/Doc/ChangeLog @@ -1,3 +1,7 @@ +Jun 20, 2012: verison 3.1.1 + + * minor update for Windows (removed filesep) + Jun 1, 2012: version 3.1.0 * minor changes to enable the creation of CXSparse 3.1.0 diff --git a/CXSparse/MATLAB/CSparse/private/cs_make_helper.m b/CXSparse/MATLAB/CSparse/private/cs_make_helper.m index 57e944427d..264c698a22 100644 --- a/CXSparse/MATLAB/CSparse/private/cs_make_helper.m +++ b/CXSparse/MATLAB/CSparse/private/cs_make_helper.m @@ -121,7 +121,7 @@ mexcmd, kk, details) ; CS = ['cs_mex' obj] ; if (nargout > 0) - objfiles = ['..' filesep 'CSparse' filesep 'cs_mex' obj] ; + objfiles = ['../CSparse/cs_mex' obj] ; end for i = 1:length (cs) @@ -131,7 +131,7 @@ anysrc = anysrc | s ; %#ok CS = [CS ' ' cs{i} obj] ; %#ok if (nargout > 0) - objfiles = [objfiles ' ..' filesep 'CSparse' filesep cs{i} obj] ; %#ok + objfiles = [objfiles ' ../CSparse/' cs{i} obj] ; %#ok end % complex version: @@ -140,7 +140,7 @@ csrc = [ 'cs_cl_' csrc(4:end) ] ; CS = [CS ' ' csrc obj] ; %#ok if (nargout > 0) - objfiles = [objfiles ' ..' filesep 'CSparse' filesep csrc obj] ;%#ok + objfiles = [objfiles ' ../CSparse/' csrc obj] ;%#ok end if (s) cpfile (['../../Source/' cs{i} '.c'], [csrc '.c']) ; @@ -187,7 +187,6 @@ %------------------------------------------------------------------------------- function kk = do_cmd (s, kk, details) %DO_CMD: evaluate a command, and either print it or print a "." -s = strrep (s, '/', filesep) ; if (details) fprintf ('%s', s) ; else diff --git a/CXSparse/MATLAB/Demo/cs_demo1.m b/CXSparse/MATLAB/Demo/cs_demo1.m index 07b6dc64cc..a2c586b50c 100644 --- a/CXSparse/MATLAB/Demo/cs_demo1.m +++ b/CXSparse/MATLAB/Demo/cs_demo1.m @@ -17,7 +17,7 @@ function cs_demo1 (matrixpath) try % older versions of MATLAB do not have an input argument to mfilename p = mfilename ('fullpath') ; - t = strfind (p, filesep) ; + t = strfind (p, '/') ; matrixpath = [ p(1:t(end)) '../../Matrix' ] ; catch % assume we are in the C*Sparse/MATLAB/CSparse/Demo directory diff --git a/CXSparse/MATLAB/Demo/cs_demo2.m b/CXSparse/MATLAB/Demo/cs_demo2.m index 6bfbb5060a..72ae2f5438 100644 --- a/CXSparse/MATLAB/Demo/cs_demo2.m +++ b/CXSparse/MATLAB/Demo/cs_demo2.m @@ -16,7 +16,7 @@ function cs_demo2 (do_pause, matrixpath) try % older versions of MATLAB do not have an input argument to mfilename p = mfilename ('fullpath') ; - t = strfind (p, filesep) ; + t = strfind (p, '/') ; matrixpath = [ p(1:t(end)) '../../Matrix' ] ; catch % assume we are in the C*Sparse/MATLAB/CSparse/Demo directory diff --git a/CXSparse/MATLAB/Demo/cs_demo3.m b/CXSparse/MATLAB/Demo/cs_demo3.m index 1df6817d73..a40c271910 100644 --- a/CXSparse/MATLAB/Demo/cs_demo3.m +++ b/CXSparse/MATLAB/Demo/cs_demo3.m @@ -16,7 +16,7 @@ function cs_demo3 (do_pause, matrixpath) try % older versions of MATLAB do not have an input argument to mfilename p = mfilename ('fullpath') ; - t = strfind (p, filesep) ; + t = strfind (p, '/') ; matrixpath = [ p(1:t(end)) '../../Matrix' ] ; catch % assume we are in the C*Sparse/MATLAB/CSparse/Demo directory diff --git a/CXSparse/MATLAB/Demo/private/get_problem.m b/CXSparse/MATLAB/Demo/private/get_problem.m index 7829ae8312..32ac4168ed 100644 --- a/CXSparse/MATLAB/Demo/private/get_problem.m +++ b/CXSparse/MATLAB/Demo/private/get_problem.m @@ -19,8 +19,6 @@ if (isempty (s)) s = 0 ; end -% f = sprintf ('%s..%s..%sMatrix%s%s', ... -% prefix, filesep, filesep, filesep, name (s+1:end)) ; % load the triplet version of the matrix T = load ([ prefix '/' name(s+1:end) ]) ; diff --git a/CXSparse/MATLAB/Test/cs_test_make.m b/CXSparse/MATLAB/Test/cs_test_make.m index 111a5f8cb5..a2a4aa3504 100644 --- a/CXSparse/MATLAB/Test/cs_test_make.m +++ b/CXSparse/MATLAB/Test/cs_test_make.m @@ -33,9 +33,8 @@ function cs_test_make (force) [s t tobj] = cs_must_compile ('', mexfunc{i}, '_mex', ... ['.' mexext], 'cs_test_make.m', force) ; if (s | tobj < timestamp) %#ok - cmd = [mexcmd ' -O -output ' mexfunc{i} ' ' mexfunc{i} '_mex.c -I..' ... - filesep '..' filesep 'Include -I..' ... - filesep 'CSparse ' object_files] ; + cmd = [mexcmd ' -O -output ' mexfunc{i} ' ' mexfunc{i} '_mex.c' ... + ' -I../../Include -I../CSparse ' object_files] ; fprintf ('%s\n', cmd) ; eval (cmd) ; end diff --git a/CXSparse/MATLAB/UFget/mat/UF_Index.mat b/CXSparse/MATLAB/UFget/mat/UF_Index.mat index 3ebcb0990a..6ec593a03f 100644 Binary files a/CXSparse/MATLAB/UFget/mat/UF_Index.mat and b/CXSparse/MATLAB/UFget/mat/UF_Index.mat differ diff --git a/CXSparse/MATLAB/UFget/matrices/UFstats.csv b/CXSparse/MATLAB/UFget/matrices/UFstats.csv index 5a24289890..2c40799645 100644 --- a/CXSparse/MATLAB/UFget/matrices/UFstats.csv +++ b/CXSparse/MATLAB/UFget/matrices/UFstats.csv @@ -1,5 +1,5 @@ -2558 -06-Mar-2012 12:31:24 +2567 +03-Jul-2012 15:03:14 HB,1138_bus,1138,1138,4054,1,0,0,1,1,1,power network problem HB,494_bus,494,494,1666,1,0,0,1,1,1,power network problem HB,662_bus,662,662,2474,1,0,0,1,1,1,power network problem @@ -2558,3 +2558,12 @@ Chevron,Chevron1,37365,37365,330633,0,0,0,0,0.994503321194266,0.7103673090824775 Chevron,Chevron2,90249,90249,803173,0,0,0,0,0.9963698795383519,0.6400065084076283,other problem Chevron,Chevron3,381381,381381,3413113,0,0,0,0,0.998180577966654,0.5728441696033818,other problem Chevron,Chevron4,711450,711450,6376412,0,0,0,0,0.9986570077610406,0.5561276492234193,other problem +CPM,cz148,148,148,1527,1,0,1,0,0.4263959390862944,0.2306018854242204,2D/3D problem +CPM,cz308,308,308,3182,1,0,1,0,0.4342379958246347,0.2219902574808629,2D/3D problem +CPM,cz628,628,628,6346,1,0,1,0,0.441413081497027,0.2308499475341028,2D/3D problem +CPM,cz1268,1268,1268,12786,1,0,1,0,0.4386178155929849,0.2340684146553221,2D/3D problem +CPM,cz2548,2548,2548,25674,1,0,1,0,0.4322407679667906,0.2349736227622589,2D/3D problem +CPM,cz5108,5108,5108,51412,1,0,1,0,0.433914996544575,0.2362214927436075,2D/3D problem +CPM,cz10228,10228,10228,102876,1,0,1,0,0.4358431914342458,0.2371988602020551,2D/3D problem +CPM,cz20468,20468,20468,206076,1,0,1,0,0.4354769190983147,0.2377052713245119,2D/3D problem +CPM,cz40948,40948,40948,412148,1,0,1,0,0.4349030172413793,0.2372683189655172,2D/3D problem diff --git a/CXSparse/MATLAB/cs_install.m b/CXSparse/MATLAB/cs_install.m index 40ee0b20bd..78381192a5 100644 --- a/CXSparse/MATLAB/cs_install.m +++ b/CXSparse/MATLAB/cs_install.m @@ -33,13 +33,13 @@ function cs_install (do_pause) if (do_pause) input ('Hit enter to continue: ') ; end -addpath ([pwd filesep 'CSparse']) ; -addpath ([pwd filesep 'Demo']) ; +addpath ([pwd '/CSparse']) ; +addpath ([pwd '/Demo']) ; if (verLessThan ('matlab', '7.0')) fprintf ('UFget not installed (MATLAB 7.0 or later required)\n') ; else - addpath ([pwd filesep 'UFget']) ; + addpath ([pwd '/UFget']) ; end cd ('CSparse') ; diff --git a/CXSparse/Makefile b/CXSparse/Makefile index 9080297fbe..b5184cddca 100644 --- a/CXSparse/Makefile +++ b/CXSparse/Makefile @@ -2,7 +2,7 @@ # CXSparse Makefile #------------------------------------------------------------------------------ -VERSION = 3.1.0 +VERSION = 3.1.1 default: C diff --git a/CXSparse/Tcov/Makefile b/CXSparse/Tcov/Makefile index a5f565778c..d64ade8144 100644 --- a/CXSparse/Tcov/Makefile +++ b/CXSparse/Tcov/Makefile @@ -8,7 +8,7 @@ CC = gcc CFLAGS = -O -g -fprofile-arcs -ftest-coverage \ -Wall -W -Wshadow -Wmissing-prototypes -Wstrict-prototypes \ -Wredundant-decls -Wnested-externs -Wdisabled-optimization -ansi \ - -Wno-unused-parameter -Werror -I../Include \ + -Wno-unused-parameter -I../Include \ -I../Demo -I../../SuiteSparse_config C = $(CC) $(CFLAGS) diff --git a/CXSparse_newfiles.tar.gz b/CXSparse_newfiles.tar.gz index 3ac0cd27fa..3cc50c8c84 100644 Binary files a/CXSparse_newfiles.tar.gz and b/CXSparse_newfiles.tar.gz differ diff --git a/CXSparse_newfiles/MATLAB/CSparse/private/cs_make_helper.m b/CXSparse_newfiles/MATLAB/CSparse/private/cs_make_helper.m index 57e944427d..264c698a22 100644 --- a/CXSparse_newfiles/MATLAB/CSparse/private/cs_make_helper.m +++ b/CXSparse_newfiles/MATLAB/CSparse/private/cs_make_helper.m @@ -121,7 +121,7 @@ mexcmd, kk, details) ; CS = ['cs_mex' obj] ; if (nargout > 0) - objfiles = ['..' filesep 'CSparse' filesep 'cs_mex' obj] ; + objfiles = ['../CSparse/cs_mex' obj] ; end for i = 1:length (cs) @@ -131,7 +131,7 @@ anysrc = anysrc | s ; %#ok CS = [CS ' ' cs{i} obj] ; %#ok if (nargout > 0) - objfiles = [objfiles ' ..' filesep 'CSparse' filesep cs{i} obj] ; %#ok + objfiles = [objfiles ' ../CSparse/' cs{i} obj] ; %#ok end % complex version: @@ -140,7 +140,7 @@ csrc = [ 'cs_cl_' csrc(4:end) ] ; CS = [CS ' ' csrc obj] ; %#ok if (nargout > 0) - objfiles = [objfiles ' ..' filesep 'CSparse' filesep csrc obj] ;%#ok + objfiles = [objfiles ' ../CSparse/' csrc obj] ;%#ok end if (s) cpfile (['../../Source/' cs{i} '.c'], [csrc '.c']) ; @@ -187,7 +187,6 @@ %------------------------------------------------------------------------------- function kk = do_cmd (s, kk, details) %DO_CMD: evaluate a command, and either print it or print a "." -s = strrep (s, '/', filesep) ; if (details) fprintf ('%s', s) ; else diff --git a/CXSparse_newfiles/MATLAB/Test/cs_test_make.m b/CXSparse_newfiles/MATLAB/Test/cs_test_make.m index 111a5f8cb5..a2a4aa3504 100644 --- a/CXSparse_newfiles/MATLAB/Test/cs_test_make.m +++ b/CXSparse_newfiles/MATLAB/Test/cs_test_make.m @@ -33,9 +33,8 @@ function cs_test_make (force) [s t tobj] = cs_must_compile ('', mexfunc{i}, '_mex', ... ['.' mexext], 'cs_test_make.m', force) ; if (s | tobj < timestamp) %#ok - cmd = [mexcmd ' -O -output ' mexfunc{i} ' ' mexfunc{i} '_mex.c -I..' ... - filesep '..' filesep 'Include -I..' ... - filesep 'CSparse ' object_files] ; + cmd = [mexcmd ' -O -output ' mexfunc{i} ' ' mexfunc{i} '_mex.c' ... + ' -I../../Include -I../CSparse ' object_files] ; fprintf ('%s\n', cmd) ; eval (cmd) ; end diff --git a/CXSparse_newfiles/MATLAB/cs_install.m b/CXSparse_newfiles/MATLAB/cs_install.m index 40ee0b20bd..78381192a5 100644 --- a/CXSparse_newfiles/MATLAB/cs_install.m +++ b/CXSparse_newfiles/MATLAB/cs_install.m @@ -33,13 +33,13 @@ function cs_install (do_pause) if (do_pause) input ('Hit enter to continue: ') ; end -addpath ([pwd filesep 'CSparse']) ; -addpath ([pwd filesep 'Demo']) ; +addpath ([pwd '/CSparse']) ; +addpath ([pwd '/Demo']) ; if (verLessThan ('matlab', '7.0')) fprintf ('UFget not installed (MATLAB 7.0 or later required)\n') ; else - addpath ([pwd filesep 'UFget']) ; + addpath ([pwd '/UFget']) ; end cd ('CSparse') ; diff --git a/CXSparse_newfiles/Makefile b/CXSparse_newfiles/Makefile index 9080297fbe..b5184cddca 100644 --- a/CXSparse_newfiles/Makefile +++ b/CXSparse_newfiles/Makefile @@ -2,7 +2,7 @@ # CXSparse Makefile #------------------------------------------------------------------------------ -VERSION = 3.1.0 +VERSION = 3.1.1 default: C diff --git a/CXSparse_newfiles/Tcov/Makefile b/CXSparse_newfiles/Tcov/Makefile index a5f565778c..d64ade8144 100644 --- a/CXSparse_newfiles/Tcov/Makefile +++ b/CXSparse_newfiles/Tcov/Makefile @@ -8,7 +8,7 @@ CC = gcc CFLAGS = -O -g -fprofile-arcs -ftest-coverage \ -Wall -W -Wshadow -Wmissing-prototypes -Wstrict-prototypes \ -Wredundant-decls -Wnested-externs -Wdisabled-optimization -ansi \ - -Wno-unused-parameter -Werror -I../Include \ + -Wno-unused-parameter -I../Include \ -I../Demo -I../../SuiteSparse_config C = $(CC) $(CFLAGS) diff --git a/KLU/Doc/ChangeLog b/KLU/Doc/ChangeLog index 76e61797be..be040a82d4 100644 --- a/KLU/Doc/ChangeLog +++ b/KLU/Doc/ChangeLog @@ -1,3 +1,7 @@ +Jun 20, 2012: verison 1,2,1 + + * minor update for Windows (removed filesep) + Jun 1, 2012: version 1.2.0 * changed from UFconfig to SuiteSparse_config diff --git a/KLU/Doc/KLU_UserGuide.pdf b/KLU/Doc/KLU_UserGuide.pdf index c84f696953..e94864c5a0 100644 Binary files a/KLU/Doc/KLU_UserGuide.pdf and b/KLU/Doc/KLU_UserGuide.pdf differ diff --git a/KLU/Doc/KLU_UserGuide.tex b/KLU/Doc/KLU_UserGuide.tex index 053019b3f6..778ff9c014 100644 --- a/KLU/Doc/KLU_UserGuide.tex +++ b/KLU/Doc/KLU_UserGuide.tex @@ -26,7 +26,7 @@ } \and Eka Palamadai Natarajan} -\date{VERSION 1.2.0, Jun 1, 2012} +\date{VERSION 1.2.1, Jun 20, 2012} \maketitle %------------------------------------------------------------------------------ diff --git a/KLU/Include/klu.h b/KLU/Include/klu.h index e91c9e6234..283efe10b1 100644 --- a/KLU/Include/klu.h +++ b/KLU/Include/klu.h @@ -829,11 +829,11 @@ void *klu_l_realloc (size_t, size_t, size_t, void *, klu_l_common *) ; * #endif */ -#define KLU_DATE "Jun 1, 2012" +#define KLU_DATE "Jun 20, 2012" #define KLU_VERSION_CODE(main,sub) ((main) * 1000 + (sub)) #define KLU_MAIN_VERSION 1 #define KLU_SUB_VERSION 2 -#define KLU_SUBSUB_VERSION 0 +#define KLU_SUBSUB_VERSION 1 #define KLU_VERSION KLU_VERSION_CODE(KLU_MAIN_VERSION,KLU_SUB_VERSION) #ifdef __cplusplus diff --git a/KLU/MATLAB/klu_make.m b/KLU/MATLAB/klu_make.m index fcb6f786fd..cec47d3afa 100644 --- a/KLU/MATLAB/klu_make.m +++ b/KLU/MATLAB/klu_make.m @@ -62,8 +62,6 @@ include = ['-DNCHOLMOD ' include] ; end -include = strrep (include, '/', filesep) ; - amd_src = { ... '../../AMD/Source/amd_1', ... '../../AMD/Source/amd_2', ... @@ -277,8 +275,8 @@ end for f = source - fs = strrep (f {1}, '/', filesep) ; - slash = strfind (fs, filesep) ; + fs = f {1} ; + slash = strfind (fs, '/') ; if (isempty (slash)) slash = 1 ; else @@ -291,8 +289,8 @@ end for k = 1:length(klu_zlsrc) - ff = strrep (klu_zlsrc {k}, '/', filesep) ; - slash = strfind (ff, filesep) ; + ff = klu_zlsrc {k} ; + slash = strfind (ff, '/') ; if (isempty (slash)) slash = 1 ; else diff --git a/KLU/Makefile b/KLU/Makefile index 4808c0477c..de1d395199 100644 --- a/KLU/Makefile +++ b/KLU/Makefile @@ -2,7 +2,7 @@ # KLU Makefile #------------------------------------------------------------------------------ -VERSION = 1.2.0 +VERSION = 1.2.1 default: all diff --git a/MATLAB_Tools/Factorize/Test/test_all_output.txt b/MATLAB_Tools/Factorize/Test/test_all_output.txt deleted file mode 100644 index 73dd29cc58..0000000000 --- a/MATLAB_Tools/Factorize/Test/test_all_output.txt +++ /dev/null @@ -1 +0,0 @@ -diary off diff --git a/MATLAB_Tools/UFcollection/Doc/ChangeLog b/MATLAB_Tools/UFcollection/Doc/ChangeLog index bf9d10e3e5..b24cdb321d 100644 --- a/MATLAB_Tools/UFcollection/Doc/ChangeLog +++ b/MATLAB_Tools/UFcollection/Doc/ChangeLog @@ -1,3 +1,7 @@ +Jun 20, 2012: verison 1.6.2 + + * minor update for Windows (removed filesep) + May 15, 2012: version 1.6.1 * added test to exploit property of symmetric binary matrices (McKay et al) diff --git a/MATLAB_Tools/UFcollection/UFexport.m b/MATLAB_Tools/UFcollection/UFexport.m index e0742fffbe..77d0c4497d 100644 --- a/MATLAB_Tools/UFcollection/UFexport.m +++ b/MATLAB_Tools/UFcollection/UFexport.m @@ -72,9 +72,9 @@ function UFexport (list, check, tmp) fprintf ('Reading %s format ...\n', format {k}) ; try if (isempty (tmp)) - P2 = UFread ([topdir format{k} filesep Problem.name]) ; + P2 = UFread ([topdir format{k} '/' Problem.name]) ; else - P2 = UFread ([topdir format{k} filesep Problem.name], tmp) ; + P2 = UFread ([topdir format{k} '/' Problem.name], tmp) ; end catch % The Problem may be too large for two copies to be in the diff --git a/MATLAB_Tools/UFcollection/UFindex.m b/MATLAB_Tools/UFcollection/UFindex.m index e7c4c6433b..9e77297362 100644 --- a/MATLAB_Tools/UFcollection/UFindex.m +++ b/MATLAB_Tools/UFcollection/UFindex.m @@ -74,7 +74,7 @@ % load the filenames [url topdir] = UFlocation ; -files = textread ([topdir 'mat' filesep 'UF_Listing.txt'], '%s') ; +files = textread ([topdir 'mat/UF_Listing.txt'], '%s') ; % if no input, assume we have to do the whole file list create_new = 0 ; @@ -207,7 +207,7 @@ % group is the first part of the string up to the character before % the last file separator - gi = find (ffile == filesep) ; + gi = find (ffile == '/') ; gi = gi (end) ; groupN = char (ffile (1:gi-1)) ; @@ -215,7 +215,7 @@ matrixN = char (ffile (gi+1:end)) ; % get the directory info of the .mat file - fileInfo = dir ([topdir 'mat' filesep ffile '.mat']) ; + fileInfo = dir ([topdir 'mat/' ffile '.mat']) ; % set the file's data into the data arrays UF_Index.Name {i} = matrixN ; @@ -269,7 +269,7 @@ fprintf ('skip this file\n') ; continue ; end - load ([topdir 'mat' filesep ffile]) ; + load ([topdir 'mat/' ffile]) ; % display the Problem struct disp (Problem) ; diff --git a/MATLAB_Tools/UFcollection/UFlist.m b/MATLAB_Tools/UFcollection/UFlist.m index 673108649e..7e24fa630f 100644 --- a/MATLAB_Tools/UFcollection/UFlist.m +++ b/MATLAB_Tools/UFcollection/UFlist.m @@ -46,13 +46,13 @@ function UFlist (what, group) if (by_group) fprintf ('group: %s\n', group) ; loc = '../' ; - if (~exist ([matrices filesep group], 'dir')) - mkdir ([matrices filesep group]) ; + if (~exist ([matrices '/' group], 'dir')) + mkdir ([matrices '/' group]) ; end - f = fopen ([matrices filesep group filesep 'index.html'], 'w') ; + f = fopen ([matrices '/' group '/index.html'], 'w') ; else fprintf ('list: %s\n', what) ; - f = fopen ([matrices filesep 'list_by_' what '.html'], 'w') ; + f = fopen ([matrices '/list_by_' what '.html'], 'w') ; loc = '' ; end if (f < 0) diff --git a/MATLAB_Tools/UFcollection/UFlists.m b/MATLAB_Tools/UFcollection/UFlists.m index a0af4d994b..0782e1a9f4 100644 --- a/MATLAB_Tools/UFcollection/UFlists.m +++ b/MATLAB_Tools/UFcollection/UFlists.m @@ -33,7 +33,7 @@ end % create the groups.html file -f = fopen ([matrices filesep 'groups.html'], 'w') ; +f = fopen ([matrices '/groups.html'], 'w') ; if (f < 0) error ('unable to create groups.html file\n') ; end @@ -79,13 +79,13 @@ fprintf (f, '%s\n', group, group) ; % number of matrices - d = dir ([topdir 'mat' filesep group filesep '*.mat']) ; + d = dir ([topdir 'mat/' group '/*.mat']) ; nmat_group = size (d,1) ; fprintf (f, '%d\n', nmat_group) ; nmat = nmat + nmat_group ; % link to README.txt file ("details") - f2 = fopen ([topdir filesep 'mat' filesep group filesep 'README.txt'], 'r'); + f2 = fopen ([topdir '/mat/' group '/README.txt'], 'r'); if (f2 < 0) error (['no README file for group: ' group]) ; else diff --git a/MATLAB_Tools/UFcollection/UFlocation.m b/MATLAB_Tools/UFcollection/UFlocation.m index 57ce0ab158..22a42ce53f 100644 --- a/MATLAB_Tools/UFcollection/UFlocation.m +++ b/MATLAB_Tools/UFcollection/UFlocation.m @@ -12,9 +12,3 @@ url = [ params.topurl '/'] ; topdir = params.topdir ; -% old: -% t = find (params.dir == filesep) ; -% topdir = regexprep (params.dir (1:t(end-1)), '[\/\\]', filesep) ; -% t = find (params.url == '/') ; -% url = params.url (1:t(end)) ; - diff --git a/MATLAB_Tools/UFcollection/UFpage.m b/MATLAB_Tools/UFcollection/UFpage.m index 18104d4e32..19fd84523a 100644 --- a/MATLAB_Tools/UFcollection/UFpage.m +++ b/MATLAB_Tools/UFcollection/UFpage.m @@ -52,12 +52,12 @@ function UFpage (matrix, index, figures) end % create the group directory -if (~exist ([matrices filesep grp], 'dir')) - mkdir ([matrices filesep grp]) ; +if (~exist ([matrices '/' grp], 'dir')) + mkdir ([matrices '/' grp]) ; end % determine the full path of the problem -fullpath = regexprep ([matrices filesep fullname], '[\/\\]', filesep) ; +fullpath = regexprep ([matrices '/' fullname], '[\/\\]', '/') ; ptitle = Problem.title ; @@ -567,7 +567,7 @@ function UFpage (matrix, index, figures) %------------------------------------------------------------------------------- try - svdfile = [topdir 'svd' filesep grp filesep name '_SVD.mat'] ; + svdfile = [topdir 'svd/' grp '/' name '_SVD.mat'] ; S = load (svdfile) ; S = S.S ; s = S.s ; @@ -665,9 +665,9 @@ function UFpage (matrix, index, figures) function fsize (f, filename) % fsize: print the filesize -d = dir (regexprep (filename, '[\/\\]', filesep)) ; +d = dir (regexprep (filename, '[\/\\]', '/')) ; if (isempty (d)) - fprintf ('\n') ; + fprintf (f, '\n') ; elseif (d.bytes < 1024) fprintf (f, ', file size: %4d bytes.\n', d.bytes) ; elseif (d.bytes > 2^20) diff --git a/MATLAB_Tools/UFcollection/UFread.m b/MATLAB_Tools/UFcollection/UFread.m index aac93ce1ea..7d6ddc1f69 100644 --- a/MATLAB_Tools/UFcollection/UFread.m +++ b/MATLAB_Tools/UFcollection/UFread.m @@ -63,8 +63,8 @@ % determine the Problem name from the directory name %------------------------------------------------------------------------------- -directory = regexprep (directory, '[\/\\]', filesep) ; -t = find (directory == filesep) ; +directory = regexprep (directory, '[\/\\]', '/') ; +t = find (directory == '/') ; if (isempty (t)) name = directory ; else @@ -83,7 +83,7 @@ if (nargin < 2) tmpdir = [tempname '_UFread_' name] ; else - tmpdir = [tmp filesep name] ; + tmpdir = [tmp '/' name] ; end try % try untaring the problem @@ -96,7 +96,7 @@ end error (['unable to read problem: ' directory]) ; end - directory = [tmpdir filesep name] ; + directory = [tmpdir '/' name] ; d = dir (directory) ; is_tar = 1 ; end @@ -111,7 +111,7 @@ % get name, title, id, kind, date, author, editor, notes from master file %--------------------------------------------------------------------------- - masterfile = [directory filesep name] ; + masterfile = [directory '/' name] ; [Problem notes RB] = get_header (masterfile) ; %--------------------------------------------------------------------------- @@ -144,7 +144,7 @@ % get the next filename in the directory file = d(k).name ; - fullfilename = [directory filesep file] ; + fullfilename = [directory '/' file] ; if (length (file) < length (name) + 1) diff --git a/MATLAB_Tools/UFcollection/UFwrite.m b/MATLAB_Tools/UFcollection/UFwrite.m index 2c7bb09605..7f3e397df8 100644 --- a/MATLAB_Tools/UFcollection/UFwrite.m +++ b/MATLAB_Tools/UFcollection/UFwrite.m @@ -164,9 +164,9 @@ function UFwrite (Problem, Master, arg3, arg4) do_tar = (strcmp (arg3, 'tar') | strcmp (arg4, 'tar')) ; RB = (strcmp (arg3, 'rb') | strcmp (arg4, 'rb')) ; -Master = regexprep (Master, '[\/\\]', filesep) ; -if (~isempty (Master) && Master (end) ~= filesep) - Master = [Master filesep] ; +Master = regexprep (Master, '[\/\\]', '/') ; +if (~isempty (Master) && Master (end) ~= '/') + Master = [Master '/'] ; end %------------------------------------------------------------------------------- @@ -177,8 +177,8 @@ function UFwrite (Problem, Master, arg3, arg4) group = Problem.name (1:t-1) ; name = Problem.name (t+1:end) ; groupdir = [Master group] ; -probdir = [groupdir filesep name] ; -probname = [probdir filesep name] ; +probdir = [groupdir '/' name] ; +probname = [probdir '/' name] ; s = warning ('query', 'MATLAB:MKDIR:DirectoryExists') ; % get current state warning ('off', 'MATLAB:MKDIR:DirectoryExists') ; diff --git a/MATLAB_Tools/gipper.m b/MATLAB_Tools/gipper.m index 14d730554d..5622f2d6ee 100644 --- a/MATLAB_Tools/gipper.m +++ b/MATLAB_Tools/gipper.m @@ -75,7 +75,7 @@ % append the hidden file and directory rule, if requested if (exclude_hidden) - exclude = union (exclude, { '^\.', [ '\' filesep '\.' ] }) ; + exclude = union (exclude, { '^\.', [ '\' '/' '\.' ] }) ; end % always exclude '.' and '..' files @@ -90,7 +90,7 @@ % operate on the current directory, if not specified if (nargin < 1 || isempty (directory)) here = pwd ; - directory = here ((find (here == filesep, 1, 'last') + 1) : end) ; + directory = here ((find (here == '/', 1, 'last') + 1) : end) ; % use try-catch so that if a failure occurs, we go back to current % directory. Unfortunately, this mechanism does not catch a control-C. gipper_found = 0 ; @@ -124,7 +124,7 @@ return else if (nargout == 0) - fprintf ('\ngipper: creating %s%s%s.zip\n', pwd, filesep, directory) ; + fprintf ('\ngipper: creating %s%s%s.zip\n', pwd, '/', directory) ; end end @@ -175,7 +175,7 @@ function [files, n] = finder (files, n, prefix, name, include, exclude) % finder: return a list of files to zip % fullname includes the entire path to the file or directory -fullname = [prefix filesep name] ; +fullname = [prefix '/' name] ; if (isdir (fullname)) % always traverse a subdirectory to look for files to include, unless the % directory name or fullname itself is explicitly excluded. diff --git a/RBio/Doc/ChangeLog b/RBio/Doc/ChangeLog index f919bb5b30..9dd2dc84f0 100644 --- a/RBio/Doc/ChangeLog +++ b/RBio/Doc/ChangeLog @@ -1,3 +1,7 @@ +Jun 20, 2012: verison 2.1.1 + + * minor update for Windows (removed filesep) + Jun 1, 2012: version 2.1.0 * changed from UFconfig to SuiteSparse_config diff --git a/RBio/Include/RBio.h b/RBio/Include/RBio.h index af8c886cee..4bce5d710a 100644 --- a/RBio/Include/RBio.h +++ b/RBio/Include/RBio.h @@ -86,11 +86,11 @@ 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 "Jun 1, 2012" +#define RBIO_DATE "Jun 20, 2012" #define RBIO_VER_CODE(main,sub) ((main) * 1000 + (sub)) #define RBIO_MAIN_VERSION 2 #define RBIO_SUB_VERSION 1 -#define RBIO_SUBSUB_VERSION 0 +#define RBIO_SUBSUB_VERSION 1 #define RBIO_VERSION RBIO_VER_CODE(RBIO_MAIN_VERSION,RBIO_SUB_VERSION) diff --git a/RBio/Makefile b/RBio/Makefile index 37fc15b57d..87ec81c542 100644 --- a/RBio/Makefile +++ b/RBio/Makefile @@ -2,7 +2,7 @@ # RBio Makefile #------------------------------------------------------------------------------- -VERSION = 2.1.0 +VERSION = 2.1.1 default: all diff --git a/RBio/RBio/RBmake.m b/RBio/RBio/RBmake.m index 735ed201f8..2fc77cb3f0 100644 --- a/RBio/RBio/RBmake.m +++ b/RBio/RBio/RBmake.m @@ -13,7 +13,6 @@ mexcmd = ['mex -O %s %s RBerror.c ../Source/RBio.c ' ... '../../SuiteSparse_config/SuiteSparse_config.c ' ... '-I../../SuiteSparse_config -I../Include'] ; -mexcmd = strrep (mexcmd, '/', filesep) ; try % ispc does not appear in MATLAB 5.3 diff --git a/README.txt b/README.txt index a174820719..5aaed4cf4e 100644 --- a/README.txt +++ b/README.txt @@ -20,7 +20,7 @@ file, and then remove "_Mac" from the *Mac.mk file in that directory. Then continue as the 'QUICK START FOR LINUX' above. ================================================================================ -Jun 1, 2012. SuiteSparse VERSION 4.0.0 +Jun 20, 2012. SuiteSparse VERSION 4.0.1 spqr_rank MATLAB toolbox for rank deficient sparse matrices: null spaces, reliable factorizations, etc. With Leslie Foster, San Jose diff --git a/SPQR/Demo/Makefile b/SPQR/Demo/Makefile index 373e6923bc..a52e4da0ef 100644 --- a/SPQR/Demo/Makefile +++ b/SPQR/Demo/Makefile @@ -10,19 +10,21 @@ include ../../SuiteSparse_config/SuiteSparse_config.mk #------------------------------------------------------------------------------- # the optional Partition module requires METIS, CAMD, and CCOLAMD +I_WITH_PARTITION = LIB_WITH_PARTITION = CONFIG = -DNPARTITION # check if METIS is requested and available ifeq (,$(findstring -DNPARTITION, $(CHOLMOD_CONFIG))) # METIS is requested. See if it is available - ifeq ($(METIS), $(wildcard $(METIS))) + ifeq ($(METIS_PATH), $(wildcard $(METIS_PATH))) ifeq (../../CAMD, $(wildcard ../../CAMD)) ifeq (../../CCOLAMD, $(wildcard ../../CCOLAMD)) - # METIS, CAMD, and CCOLAMD is available - CONFIG = - LIB_WITH_PARTITION = $(METIS) \ - ../../CCOLAMD/Lib/libccolamd.a \ + # METIS, CAMD, and CCOLAMD are available + LIB_WITH_PARTITION = $(METIS) ../../CCOLAMD/Lib/libccolamd.a \ ../../CAMD/Lib/libcamd.a + I_WITH_PARTITION = -I$(METIS_PATH)/Lib \ + -I../../CCOLAMD/Include -I../../CAMD/Include + CONFIG = endif endif endif @@ -125,6 +127,9 @@ cdemo: qrdemoc ../../CAMD/Lib/libcamd.a: - ( cd ../../CAMD && $(MAKE) library ) +$(METIS): + ( cd $(METIS_PATH) && $(MAKE) ) + library: $(CLIB) purge: distclean diff --git a/SPQR/Doc/ChangeLog b/SPQR/Doc/ChangeLog index 8e84092410..93c25216bc 100644 --- a/SPQR/Doc/ChangeLog +++ b/SPQR/Doc/ChangeLog @@ -1,3 +1,7 @@ +Jun 20, 2012: verison 1.3.1 + + * minor update for Windows (removed filesep) + Jun 1, 2012: version 1.3.0 * changed from UFconfig to SuiteSparse_config diff --git a/SPQR/Doc/Makefile b/SPQR/Doc/Makefile index 9114631eb2..3aeea7c4f7 100644 --- a/SPQR/Doc/Makefile +++ b/SPQR/Doc/Makefile @@ -3,6 +3,7 @@ spqr_user_guide.pdf: spqr_user_guide.tex spqr_user_guide.bib Makefile bibtex spqr_user_guide pdflatex spqr_user_guide.tex pdflatex spqr_user_guide.tex + - $(RM) *.aux *.bbl *.blg *.log *.out clean: purge diff --git a/SPQR/Doc/spqr_user_guide.aux b/SPQR/Doc/spqr_user_guide.aux deleted file mode 100644 index 7c8179ee0b..0000000000 --- a/SPQR/Doc/spqr_user_guide.aux +++ /dev/null @@ -1,68 +0,0 @@ -\relax -\ifx\hyper@anchor\@undefined -\global \let \oldcontentsline\contentsline -\gdef \contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} -\global \let \oldnewlabel\newlabel -\gdef \newlabel#1#2{\newlabelxx{#1}#2} -\gdef \newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} -\AtEndDocument{\let \contentsline\oldcontentsline -\let \newlabel\oldnewlabel} -\else -\global \let \hyper@last\relax -\fi - -\citation{Davis08a} -\citation{Davis08b} -\citation{GilbertMolerSchreiber} -\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}{section.1}} -\newlabel{intro}{{1}{1}{Introduction\relax }{section.1}{}} -\@writefile{toc}{\contentsline {section}{\numberline {2}Using SuiteSparseQR in MATLAB}{1}{section.2}} -\citation{KarypisKumar98e} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Installing SuiteSparseQR for use in MATLAB}{2}{subsection.2.1}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.1}Required instructions for Windows}{2}{subsubsection.2.1.1}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.2}Optional instructions on using METIS for any operating system}{2}{subsubsection.2.1.2}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.3}Optional instructions for using TBB on Linux/Unix/Mac}{2}{subsubsection.2.1.3}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.4}Optional instructions for using TBB on Windows}{3}{subsubsection.2.1.4}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.5}Now you're ready to compile (on any operating system)}{4}{subsubsection.2.1.5}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {2.1.6}Optional instructions for using TBB on any system}{5}{subsubsection.2.1.6}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Functions provided to the MATLAB user}{6}{subsection.2.2}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}The {\tt opts} parameter}{6}{subsection.2.3}} -\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}Examples on how to use the MATLAB interface}{8}{subsection.2.4}} -\citation{GotoVanDeGeijn08} -\@writefile{toc}{\contentsline {section}{\numberline {3}Using SuiteSparseQR in C and C++}{9}{section.3}} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Installing the C/C++ library on Linux/Unix}{9}{subsection.3.1}} -\citation{BoisvertPozoRemingtonBarrettDongarra97} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}C/C++ Example}{10}{subsection.3.2}} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.3}C++ Syntax}{11}{subsection.3.3}} -\@writefile{toc}{\contentsline {subsection}{\numberline {3.4}Details of the C/C++ Syntax}{11}{subsection.3.4}} -\citation{ChenDavisHagerRajamanickam09} -\citation{DavisHager09} -\citation{AmestoyDavisDuff96} -\citation{AmestoyDavisDuff03} -\citation{DavisGilbertLarimoreNg00_algo} -\citation{DavisGilbertLarimoreNg00} -\citation{dddh:90} -\citation{LAPACK} -\citation{GotoVanDeGeijn08} -\citation{Reinders07} -\citation{KarypisKumar98e} -\citation{ChenDavisHagerRajamanickam09} -\bibstyle{plain} -\bibdata{spqr_user_guide} -\bibcite{AmestoyDavisDuff96}{1} -\bibcite{AmestoyDavisDuff03}{2} -\bibcite{LAPACK}{3} -\bibcite{BoisvertPozoRemingtonBarrettDongarra97}{4} -\bibcite{ChenDavisHagerRajamanickam09}{5} -\bibcite{Davis08b}{6} -\bibcite{Davis08a}{7} -\bibcite{DavisGilbertLarimoreNg00_algo}{8} -\@writefile{toc}{\contentsline {section}{\numberline {4}Requirements and Availability}{13}{section.4}} -\newlabel{summary}{{4}{13}{Requirements and Availability\relax }{section.4}{}} -\bibcite{DavisGilbertLarimoreNg00}{9} -\bibcite{DavisHager09}{10} -\bibcite{dddh:90}{11} -\bibcite{GilbertMolerSchreiber}{12} -\bibcite{GotoVanDeGeijn08}{13} -\bibcite{KarypisKumar98e}{14} -\bibcite{Reinders07}{15} diff --git a/SPQR/Doc/spqr_user_guide.bbl b/SPQR/Doc/spqr_user_guide.bbl deleted file mode 100644 index 1fef4cf041..0000000000 --- a/SPQR/Doc/spqr_user_guide.bbl +++ /dev/null @@ -1,91 +0,0 @@ -\begin{thebibliography}{10} - -\bibitem{AmestoyDavisDuff96} -P.~R. Amestoy, T.~A. Davis, and I.~S. Duff. -\newblock An approximate minimum degree ordering algorithm. -\newblock {\em {SIAM} J. Matrix Anal. Appl.}, 17(4):886--905, 1996. - -\bibitem{AmestoyDavisDuff03} -P.~R. Amestoy, T.~A. Davis, and I.~S. Duff. -\newblock Algorithm 837: {AMD}, an approximate minimum degree ordering - algorithm. -\newblock {\em {ACM} Trans. Math. Software}, 30(3):381--388, 2004. - -\bibitem{LAPACK} -E.~Anderson, Z.~Bai, C.~H. Bischof, S.~Blackford, J.~W. Demmel, J.~J. Dongarra, - J.~{Du Croz}, A.~Greenbaum, S.~Hammarling, A.~McKenney, and D.~C. Sorensen. -\newblock {\em {LAPACK} Users' Guide}. -\newblock SIAM, Philadelphia, 3rd edition, 1999. - -\bibitem{BoisvertPozoRemingtonBarrettDongarra97} -R.~F. Boisvert, R.~Pozo, K.~Remington, R.~Barrett, and J.~J. Dongarra. -\newblock The {M}atrix {M}arket: A web resource for test matrix collections. -\newblock In R.~F. Boisvert, editor, {\em Quality of Numerical Software, - Assessment and Enhancement}, pages 125--137. Chapman \& Hall, London, 1997. -\newblock ({\tt http://math.nist.gov/MatrixMarket}). - -\bibitem{ChenDavisHagerRajamanickam09} -Y.~Chen, T.~A. Davis, W.~W. Hager, and S.~Rajamanickam. -\newblock Algorithm 887: {CHOLMOD}, supernodal sparse {Cholesky} factorization - and update/downdate. -\newblock {\em {ACM} Trans. Math. Software}, 35(3), 2009. - -\bibitem{Davis08b} -T.~A. Davis. -\newblock Algorithm 8xx: {SuiteSparseQR}, a multifrontal multithreaded sparse - qr factorization package. -\newblock {\em {ACM} Trans. Math. Software}, 2008. -\newblock under submission. - -\bibitem{Davis08a} -T.~A. Davis. -\newblock Multifrontal multithreaded rank-revealing sparse {QR} factorization. -\newblock {\em {ACM} Trans. Math. Software}, 2008. -\newblock under submission. - -\bibitem{DavisGilbertLarimoreNg00_algo} -T.~A. Davis, J.~R. Gilbert, S.~I. Larimore, and E.~G. Ng. -\newblock Algorithm 836: {COLAMD}, a column approximate minimum degree ordering - algorithm. -\newblock {\em {ACM} Trans. Math. Software}, 30(3):377--380, 2004. - -\bibitem{DavisGilbertLarimoreNg00} -T.~A. Davis, J.~R. Gilbert, S.~I. Larimore, and E.~G. Ng. -\newblock A column approximate minimum degree ordering algorithm. -\newblock {\em {ACM} Trans. Math. Software}, 30(3):353--376, 2004. - -\bibitem{DavisHager09} -T.~A. Davis and W.~W. Hager. -\newblock Dynamic supernodes in sparse {Cholesky} update/downdate and - triangular solves. -\newblock {\em {ACM} Trans. Math. Software}, 35(4), 2009. - -\bibitem{dddh:90} -J.~J. Dongarra, J.~J. {Du Croz}, I.~S. Duff, and S.~Hammarling. -\newblock A set of {L}evel 3 {B}asic {L}inear {A}lgebra {S}ubprograms. -\newblock {\em {ACM} Trans. Math. Software}, 16:1--17, 1990. - -\bibitem{GilbertMolerSchreiber} -J.~R. Gilbert, C.~Moler, and R.~Schreiber. -\newblock Sparse matrices in {MATLAB}: design and implementation. -\newblock {\em {SIAM} J. Matrix Anal. Appl.}, 13(1):333--356, 1992. - -\bibitem{GotoVanDeGeijn08} -K.~Goto and R.~van~de Geijn. -\newblock High performance implementation of the level-3 {BLAS}. -\newblock {\em {ACM} Trans. Math. Software}, 35(1):4, July 2008. -\newblock Article 4, 14 pages. - -\bibitem{KarypisKumar98e} -G.~Karypis and V.~Kumar. -\newblock A fast and high quality multilevel scheme for partitioning irregular - graphs. -\newblock {\em {SIAM} J. Sci. Comput.}, 20:359--392, 1998. - -\bibitem{Reinders07} -J.~Reinders. -\newblock {\em Intel Threading Building Blocks: Outfitting C++ for Multi-core - Processor Parallelism}. -\newblock O'Reilly Media, Sebastopol, CA, 2007. - -\end{thebibliography} diff --git a/SPQR/Doc/spqr_user_guide.blg b/SPQR/Doc/spqr_user_guide.blg deleted file mode 100644 index 8e94ee64d5..0000000000 --- a/SPQR/Doc/spqr_user_guide.blg +++ /dev/null @@ -1,45 +0,0 @@ -This is BibTeX, Version 0.99c (TeX Live 2009/Debian) -The top-level auxiliary file: spqr_user_guide.aux -The style file: plain.bst -Database file #1: spqr_user_guide.bib -You've used 15 entries, - 2118 wiz_defined-function locations, - 593 strings with 6571 characters, -and the built_in function-call counts, 5165 in all, are: -= -- 489 -> -- 296 -< -- 1 -+ -- 121 -- -- 101 -* -- 392 -:= -- 909 -add.period$ -- 50 -call.type$ -- 15 -change.case$ -- 94 -chr.to.int$ -- 0 -cite$ -- 15 -duplicate$ -- 176 -empty$ -- 362 -format.name$ -- 101 -if$ -- 1046 -int.to.chr$ -- 0 -int.to.str$ -- 15 -missing$ -- 17 -newline$ -- 82 -num.names$ -- 32 -pop$ -- 78 -preamble$ -- 1 -purify$ -- 80 -quote$ -- 0 -skip$ -- 118 -stack$ -- 0 -substring$ -- 257 -swap$ -- 24 -text.length$ -- 1 -text.prefix$ -- 0 -top$ -- 0 -type$ -- 56 -warning$ -- 0 -while$ -- 43 -width$ -- 17 -write$ -- 176 diff --git a/SPQR/Doc/spqr_user_guide.log b/SPQR/Doc/spqr_user_guide.log deleted file mode 100644 index 7a14c11fdc..0000000000 --- a/SPQR/Doc/spqr_user_guide.log +++ /dev/null @@ -1,249 +0,0 @@ -This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian) (format=pdflatex 2012.5.16) 29 MAY 2012 16:25 -entering extended mode - %&-line parsing enabled. -**spqr_user_guide.tex -(./spqr_user_guide.tex -LaTeX2e <2009/09/24> -Babel and hyphenation patterns for english, usenglishmax, dumylang, noh -yphenation, loaded. -(/usr/share/texmf-texlive/tex/latex/base/article.cls -Document Class: article 2007/10/19 v1.4h Standard LaTeX document class -(/usr/share/texmf-texlive/tex/latex/base/size12.clo -File: size12.clo 2007/10/19 v1.4h Standard LaTeX file (size option) -) -\c@part=\count79 -\c@section=\count80 -\c@subsection=\count81 -\c@subsubsection=\count82 -\c@paragraph=\count83 -\c@subparagraph=\count84 -\c@figure=\count85 -\c@table=\count86 -\abovecaptionskip=\skip41 -\belowcaptionskip=\skip42 -\bibindent=\dimen102 -) -(/usr/share/texmf-texlive/tex/latex/hyperref/hyperref.sty -Package: hyperref 2009/10/09 v6.79a Hypertext links for LaTeX - -(/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty -Package: keyval 1999/03/16 v1.13 key=value parser (DPC) -\KV@toks@=\toks14 -) -(/usr/share/texmf-texlive/tex/generic/oberdiek/ifpdf.sty -Package: ifpdf 2009/04/10 v2.0 Provides the ifpdf switch (HO) -Package ifpdf Info: pdfTeX in pdf mode detected. -) -(/usr/share/texmf-texlive/tex/generic/oberdiek/ifvtex.sty -Package: ifvtex 2008/11/04 v1.4 Switches for detecting VTeX and its modes (HO) -Package ifvtex Info: VTeX not detected. -) -(/usr/share/texmf-texlive/tex/generic/ifxetex/ifxetex.sty -Package: ifxetex 2009/01/23 v0.5 Provides ifxetex conditional -) -(/usr/share/texmf-texlive/tex/latex/oberdiek/hycolor.sty -Package: hycolor 2009/10/02 v1.5 Code for color options of hyperref/bookmark (H -O) - -(/usr/share/texmf-texlive/tex/latex/oberdiek/xcolor-patch.sty -Package: xcolor-patch 2009/10/02 xcolor patch -)) -\@linkdim=\dimen103 -\Hy@linkcounter=\count87 -\Hy@pagecounter=\count88 - -(/usr/share/texmf-texlive/tex/latex/hyperref/pd1enc.def -File: pd1enc.def 2009/10/09 v6.79a Hyperref: PDFDocEncoding definition (HO) -) -(/usr/share/texmf-texlive/tex/generic/oberdiek/etexcmds.sty -Package: etexcmds 2007/12/12 v1.2 Prefix for e-TeX command names (HO) - -(/usr/share/texmf-texlive/tex/generic/oberdiek/infwarerr.sty -Package: infwarerr 2007/09/09 v1.2 Providing info/warning/message (HO) -) -Package etexcmds Info: Could not find \expanded. -(etexcmds) That can mean that you are not using pdfTeX 1.50 or -(etexcmds) that some package has redefined \expanded. -(etexcmds) In the latter case, load this package earlier. -) -(/usr/share/texmf-texlive/tex/latex/latexconfig/hyperref.cfg -File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive -) -(/usr/share/texmf-texlive/tex/latex/oberdiek/kvoptions.sty -Package: kvoptions 2009/08/13 v3.4 Keyval support for LaTeX options (HO) - -(/usr/share/texmf-texlive/tex/generic/oberdiek/kvsetkeys.sty -Package: kvsetkeys 2009/07/30 v1.5 Key value parser with default handler suppor -t (HO) -)) -Package hyperref Info: Hyper figures OFF on input line 2975. -Package hyperref Info: Link nesting OFF on input line 2980. -Package hyperref Info: Hyper index ON on input line 2983. -Package hyperref Info: Plain pages OFF on input line 2990. -Package hyperref Info: Backreferencing OFF on input line 2995. - -Implicit mode ON; LaTeX internals redefined -Package hyperref Info: Bookmarks ON on input line 3191. -(/usr/share/texmf-texlive/tex/latex/ltxmisc/url.sty -\Urlmuskip=\muskip10 -Package: url 2006/04/12 ver 3.3 Verb mode for urls, etc. -) -LaTeX Info: Redefining \url on input line 3428. - -(/usr/share/texmf-texlive/tex/generic/oberdiek/bitset.sty -Package: bitset 2007/09/28 v1.0 Data type bit set (HO) - -(/usr/share/texmf-texlive/tex/generic/oberdiek/intcalc.sty -Package: intcalc 2007/09/27 v1.1 Expandable integer calculations (HO) -) -(/usr/share/texmf-texlive/tex/generic/oberdiek/bigintcalc.sty -Package: bigintcalc 2007/11/11 v1.1 Expandable big integer calculations (HO) - -(/usr/share/texmf-texlive/tex/generic/oberdiek/pdftexcmds.sty -Package: pdftexcmds 2009/09/23 v0.6 LuaTeX support for pdfTeX utility functions - (HO) - -(/usr/share/texmf-texlive/tex/generic/oberdiek/ifluatex.sty -Package: ifluatex 2009/04/17 v1.2 Provides the ifluatex switch (HO) -Package ifluatex Info: LuaTeX not detected. -) -(/usr/share/texmf-texlive/tex/generic/oberdiek/ltxcmds.sty -Package: ltxcmds 2009/08/05 v1.0 Some LaTeX kernel commands for general use (HO -) -) -Package pdftexcmds Info: LuaTeX not detected. -Package pdftexcmds Info: \pdf@primitive is available. -Package pdftexcmds Info: \pdf@ifprimitive is available. -))) -\Fld@menulength=\count89 -\Field@Width=\dimen104 -\Fld@charsize=\dimen105 -\Field@toks=\toks15 -Package hyperref Info: Hyper figures OFF on input line 4377. -Package hyperref Info: Link nesting OFF on input line 4382. -Package hyperref Info: Hyper index ON on input line 4385. -Package hyperref Info: backreferencing OFF on input line 4392. -Package hyperref Info: Link coloring OFF on input line 4397. -Package hyperref Info: Link coloring with OCG OFF on input line 4402. -Package hyperref Info: PDF/A mode OFF on input line 4407. - -(/usr/share/texmf-texlive/tex/generic/oberdiek/atbegshi.sty -Package: atbegshi 2008/07/31 v1.9 At begin shipout hook (HO) -) -\Hy@abspage=\count90 -\c@Item=\count91 -\c@Hfootnote=\count92 -) -*hyperref using default driver hpdftex* -(/usr/share/texmf-texlive/tex/latex/hyperref/hpdftex.def -File: hpdftex.def 2009/10/09 v6.79a Hyperref driver for pdfTeX -\Fld@listcount=\count93 -) -(/usr/share/texmf-texlive/tex/generic/epsf/epsf.tex -This is `epsf.tex' v2.7.3 <23 July 2005> -\epsffilein=\read1 -\epsfframemargin=\dimen106 -\epsfframethickness=\dimen107 -\epsfrsize=\dimen108 -\epsftmp=\dimen109 -\epsftsize=\dimen110 -\epsfxsize=\dimen111 -\epsfysize=\dimen112 -\pspoints=\dimen113 -) (./spqr_user_guide.aux) -\openout1 = `spqr_user_guide.aux'. - -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 34. -LaTeX Font Info: ... okay on input line 34. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 34. -LaTeX Font Info: ... okay on input line 34. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 34. -LaTeX Font Info: ... okay on input line 34. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 34. -LaTeX Font Info: ... okay on input line 34. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 34. -LaTeX Font Info: ... okay on input line 34. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 34. -LaTeX Font Info: ... okay on input line 34. -LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 34. -LaTeX Font Info: ... okay on input line 34. -Package hyperref Info: Link coloring OFF on input line 34. - -(/usr/share/texmf-texlive/tex/latex/hyperref/nameref.sty -Package: nameref 2007/05/29 v2.31 Cross-referencing by name of section - -(/usr/share/texmf-texlive/tex/latex/oberdiek/refcount.sty -Package: refcount 2008/08/11 v3.1 Data extraction from references (HO) -) -\c@section@level=\count94 -) -LaTeX Info: Redefining \ref on input line 34. -LaTeX Info: Redefining \pageref on input line 34. - -(./spqr_user_guide.out) (./spqr_user_guide.out) -\@outlinefile=\write3 -\openout3 = `spqr_user_guide.out'. - -\AtBeginShipoutBox=\box26 -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <14.4> on input line 37. -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <7> on input line 37. -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <5> on input line 37. - [1 - -{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2] -Overfull \hbox (6.42763pt too wide) in paragraph at lines 143--153 -[]\OT1/cmr/m/n/12 If you do not have per-mis-sion to in-stall TBB prop-erly int -o the []\OT1/cmtt/m/n/12 /usr/lib \OT1/cmr/m/n/12 and []\OT1/cmtt/m/n/12 /usr/i -nclude - [] - -[3] [4] [5] -LaTeX Font Info: Try loading font information for OMS+cmr on input line 403. - - (/usr/share/texmf-texlive/tex/latex/base/omscmr.fd -File: omscmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions -) -LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <12> not available -(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 403. - [6] -Overfull \hbox (10.13206pt too wide) in paragraph at lines 467--471 -[][]\OT1/cmtt/m/n/12 opts.min2norm\OT1/cmr/m/n/12 : used by []\OT1/cmtt/m/n/12 -spqr_solve\OT1/cmr/m/n/12 ; you can use []\OT1/cmtt/m/n/12 'basic' \OT1/cmr/m/n -/12 (the de-fault), or []\OT1/cmtt/m/n/12 'min2norm'\OT1/cmr/m/n/12 . - [] - -[7] [8] [9] [10] -Overfull \hbox (0.29666pt too wide) in paragraph at lines 781--784 -[][]\OT1/cmtt/m/n/12 SuiteSparse/SPQR/Include/SuiteSparseQR.hpp \OT1/cmr/m/n/12 - de-scribes each C++ func-tion. Both - [] - -[11] [12] (./spqr_user_guide.bbl [13]) [14] (./spqr_user_guide.aux) ) -Here is how much of TeX's memory you used: - 3671 strings out of 495061 - 54532 string characters out of 1182621 - 125197 words of memory out of 3000000 - 6770 multiletter control sequences out of 15000+50000 - 8555 words of font info for 32 fonts, out of 3000000 for 9000 - 28 hyphenation exceptions out of 8191 - 38i,11n,37p,260b,450s stack positions out of 5000i,500n,10000p,200000b,50000s - - -Output written on spqr_user_guide.pdf (14 pages, 221870 bytes). -PDF statistics: - 250 PDF objects out of 1000 (max. 8388607) - 63 named destinations out of 1000 (max. 500000) - 145 words of extra memory for PDF output out of 10000 (max. 10000000) - diff --git a/SPQR/Doc/spqr_user_guide.out b/SPQR/Doc/spqr_user_guide.out deleted file mode 100644 index 38ecd23a11..0000000000 --- a/SPQR/Doc/spqr_user_guide.out +++ /dev/null @@ -1,18 +0,0 @@ -\BOOKMARK [1][-]{section.1}{Introduction}{} -\BOOKMARK [1][-]{section.2}{Using SuiteSparseQR in MATLAB}{} -\BOOKMARK [2][-]{subsection.2.1}{Installing SuiteSparseQR for use in MATLAB}{section.2} -\BOOKMARK [3][-]{subsubsection.2.1.1}{Required instructions for Windows}{subsection.2.1} -\BOOKMARK [3][-]{subsubsection.2.1.2}{Optional instructions on using METIS for any operating system}{subsection.2.1} -\BOOKMARK [3][-]{subsubsection.2.1.3}{Optional instructions for using TBB on Linux/Unix/Mac}{subsection.2.1} -\BOOKMARK [3][-]{subsubsection.2.1.4}{Optional instructions for using TBB on Windows}{subsection.2.1} -\BOOKMARK [3][-]{subsubsection.2.1.5}{Now you're ready to compile \(on any operating system\)}{subsection.2.1} -\BOOKMARK [3][-]{subsubsection.2.1.6}{Optional instructions for using TBB on any system}{subsection.2.1} -\BOOKMARK [2][-]{subsection.2.2}{Functions provided to the MATLAB user}{section.2} -\BOOKMARK [2][-]{subsection.2.3}{The opts parameter}{section.2} -\BOOKMARK [2][-]{subsection.2.4}{Examples on how to use the MATLAB interface}{section.2} -\BOOKMARK [1][-]{section.3}{Using SuiteSparseQR in C and C++}{} -\BOOKMARK [2][-]{subsection.3.1}{Installing the C/C++ library on Linux/Unix}{section.3} -\BOOKMARK [2][-]{subsection.3.2}{C/C++ Example}{section.3} -\BOOKMARK [2][-]{subsection.3.3}{C++ Syntax}{section.3} -\BOOKMARK [2][-]{subsection.3.4}{Details of the C/C++ Syntax}{section.3} -\BOOKMARK [1][-]{section.4}{Requirements and Availability}{} diff --git a/SPQR/Doc/spqr_user_guide.pdf b/SPQR/Doc/spqr_user_guide.pdf index 8ccc197824..aec57096cb 100644 Binary files a/SPQR/Doc/spqr_user_guide.pdf and b/SPQR/Doc/spqr_user_guide.pdf differ diff --git a/SPQR/Include/SuiteSparseQR_definitions.h b/SPQR/Include/SuiteSparseQR_definitions.h index 68f827b1bd..27986b9a93 100644 --- a/SPQR/Include/SuiteSparseQR_definitions.h +++ b/SPQR/Include/SuiteSparseQR_definitions.h @@ -59,11 +59,11 @@ #endif */ -#define SPQR_DATE "Jun 1, 2012" +#define SPQR_DATE "Jun 20, 2012" #define SPQR_VER_CODE(main,sub) ((main) * 1000 + (sub)) #define SPQR_MAIN_VERSION 1 #define SPQR_SUB_VERSION 3 -#define SPQR_SUBSUB_VERSION 0 +#define SPQR_SUBSUB_VERSION 1 #define SPQR_VERSION SPQR_VER_CODE(SPQR_MAIN_VERSION,SPQR_SUB_VERSION) #endif diff --git a/SPQR/Lib/Makefile b/SPQR/Lib/Makefile index c7ebc32ad3..0ef7787ece 100644 --- a/SPQR/Lib/Makefile +++ b/SPQR/Lib/Makefile @@ -10,14 +10,20 @@ include ../../SuiteSparse_config/SuiteSparse_config.mk #------------------------------------------------------------------------------- # the optional Partition module requires METIS, CAMD, and CCOLAMD +I_WITH_PARTITION = +LIB_WITH_PARTITION = CONFIG = -DNPARTITION # check if METIS is requested and available ifeq (,$(findstring -DNPARTITION, $(CHOLMOD_CONFIG))) # METIS is requested. See if it is available - ifeq ($(METIS), $(wildcard $(METIS))) + ifeq ($(METIS_PATH), $(wildcard $(METIS_PATH))) ifeq (../../CAMD, $(wildcard ../../CAMD)) ifeq (../../CCOLAMD, $(wildcard ../../CCOLAMD)) - # METIS, CAMD, and CCOLAMD is available + # METIS, CAMD, and CCOLAMD are available + LIB_WITH_PARTITION = $(METIS) ../../CCOLAMD/Lib/libccolamd.a \ + ../../CAMD/Lib/libcamd.a + I_WITH_PARTITION = -I$(METIS_PATH)/Lib \ + -I../../CCOLAMD/Include -I../../CAMD/Include CONFIG = endif endif diff --git a/SPQR/MATLAB/spqr_make.m b/SPQR/MATLAB/spqr_make.m index c0ab4b49f8..485e7c28f2 100644 --- a/SPQR/MATLAB/spqr_make.m +++ b/SPQR/MATLAB/spqr_make.m @@ -181,13 +181,6 @@ function spqr_make (opt1) lib = [lib ' -lrt'] ; end -%------------------------------------------------------------------------------- -% make sure the paths have valid file-separators -%------------------------------------------------------------------------------- - -include = strrep (include, '/', filesep) ; -lib = strrep (lib, '/', filesep) ; - %------------------------------------------------------------------------------- % ready to compile ... %------------------------------------------------------------------------------- @@ -403,15 +396,12 @@ function spqr_make (opt1) % drand48 and srand48 in CHOLMOD/MATLAB/Windows/rand48.c instead. % Also provide Windows with an empty include file. obj_extension = '.obj' ; - cholmod_c_src = [cholmod_c_src {'..\..\CHOLMOD\MATLAB\Windows\rand48'}] ; - include = [include ' -I..\..\CHOLMOD\MATLAB\Windows'] ; + cholmod_c_src = [cholmod_c_src {'../../CHOLMOD/MATLAB/Windows/rand48'}] ; + include = [include ' -I../../CHOLMOD/MATLAB/Windows'] ; else obj_extension = '.o' ; end -lib = strrep (lib, '/', filesep) ; -include = strrep (include, '/', filesep) ; - % compile each library source file obj = '' ; @@ -426,8 +416,8 @@ function spqr_make (opt1) kk = 0 ; for f = cpp_source - ff = strrep (f {1}, '/', filesep) ; - slash = strfind (ff, filesep) ; + ff = f {1} ; + slash = strfind (ff, '/') ; if (isempty (slash)) slash = 1 ; else @@ -440,8 +430,8 @@ function spqr_make (opt1) end for f = c_source - ff = strrep (f {1}, '/', filesep) ; - slash = strfind (ff, filesep) ; + ff = f {1} ; + slash = strfind (ff, '/') ; if (isempty (slash)) slash = 1 ; else diff --git a/SPQR/Makefile b/SPQR/Makefile index 7dc93f331b..f87b62bf15 100644 --- a/SPQR/Makefile +++ b/SPQR/Makefile @@ -2,7 +2,7 @@ # SuiteSparseQR Makefile #------------------------------------------------------------------------------- -VERSION = 1.3.0 +VERSION = 1.3.1 include ../SuiteSparse_config/SuiteSparse_config.mk @@ -25,6 +25,7 @@ purge: ( cd Lib ; $(MAKE) purge ) ( cd Demo ; $(MAKE) purge ) ( cd Tcov ; $(MAKE) purge ) + ( cd Doc ; $(MAKE) purge ) ( cd MATLAB ; $(RM) $(CLEAN) rename.h *.mex* ) clean: diff --git a/SuiteSparse_config/Makefile b/SuiteSparse_config/Makefile index 6e7b35df37..4ced090b5e 100644 --- a/SuiteSparse_config/Makefile +++ b/SuiteSparse_config/Makefile @@ -2,7 +2,7 @@ # SuiteSparse_config Makefile #------------------------------------------------------------------------------- -VERSION = 4.0.0 +VERSION = 4.0.1 default: ccode diff --git a/SuiteSparse_config/SuiteSparse_config.h b/SuiteSparse_config/SuiteSparse_config.h index 26dd5a0e91..463b59b851 100644 --- a/SuiteSparse_config/SuiteSparse_config.h +++ b/SuiteSparse_config/SuiteSparse_config.h @@ -143,20 +143,20 @@ double SuiteSparse_time /* returns current wall clock time in seconds */ * * SuiteSparse contains the following packages: * - * SuiteSparse_config version 4.0.0 (version always the same as SuiteSparse) - * AMD version 2.3.0 + * SuiteSparse_config version 4.0.1 (version always the same as SuiteSparse) + * AMD version 2.3.1 * BTF version 1.2.0 - * CAMD version 2.3.0 + * CAMD version 2.3.1 * CCOLAMD version 2.8.0 - * CHOLMOD version 2.0.0 + * CHOLMOD version 2.0.1 * COLAMD version 2.8.0 - * CSparse version 3.1.0 - * CXSparse version 3.1.0 - * KLU version 1.2.0 + * CSparse version 3.1.1 + * CXSparse version 3.1.1 + * KLU version 1.2.1 * LDL version 2.1.0 - * RBio version 2.1.0 - * SPQR version 1.3.0 (full name is SuiteSparseQR) - * UMFPACK version 5.6.0 + * RBio version 2.1.1 + * SPQR version 1.3.1 (full name is SuiteSparseQR) + * UMFPACK version 5.6.1 * MATLAB_Tools various packages & M-files * * Other package dependencies: @@ -165,11 +165,11 @@ double SuiteSparse_time /* returns current wall clock time in seconds */ * METIS 4.0.1 required by CHOLMOD (optional) and KLU (optional) */ -#define SUITESPARSE_DATE "Jun 1, 2012" +#define SUITESPARSE_DATE "Jun 20, 2012" #define SUITESPARSE_VER_CODE(main,sub) ((main) * 1000 + (sub)) #define SUITESPARSE_MAIN_VERSION 4 #define SUITESPARSE_SUB_VERSION 0 -#define SUITESPARSE_SUBSUB_VERSION 0 +#define SUITESPARSE_SUBSUB_VERSION 1 #define SUITESPARSE_VERSION \ SUITESPARSE_VER_CODE(SUITESPARSE_MAIN_VERSION,SUITESPARSE_SUB_VERSION) diff --git a/SuiteSparse_config/SuiteSparse_config_GPU.mk b/SuiteSparse_config/SuiteSparse_config_GPU.mk new file mode 100644 index 0000000000..3cec80e8db --- /dev/null +++ b/SuiteSparse_config/SuiteSparse_config_GPU.mk @@ -0,0 +1,392 @@ +#=============================================================================== +# SuiteSparse_config.mk: common configuration file for the SuiteSparse +#=============================================================================== + +# This file contains all configuration settings for all packages authored or +# co-authored by Tim Davis: +# +# Package Version Description +# ------- ------- ----------- +# AMD 1.2 or later approximate minimum degree ordering +# COLAMD 2.4 or later column approximate minimum degree ordering +# CCOLAMD 1.0 or later constrained column approximate minimum degree ordering +# CAMD any constrained approximate minimum degree ordering +# UMFPACK 4.5 or later sparse LU factorization, with the BLAS +# CHOLMOD any sparse Cholesky factorization, update/downdate +# KLU 0.8 or later sparse LU factorization, BLAS-free +# BTF 0.8 or later permutation to block triangular form +# LDL 1.2 or later concise sparse LDL' +# CXSparse any extended version of CSparse (int/long, real/complex) +# SuiteSparseQR any sparse QR factorization +# RBio 2.0 or later read/write sparse matrices in Rutherford-Boeing format +# +# By design, this file is NOT included in the CSparse makefile. +# That package is fully stand-alone. CSparse is primarily for teaching; +# production code should use CXSparse. +# +# The SuiteSparse_config directory and the above packages should all appear in +# a single directory, in order for the Makefile's within each package to find +# this file. +# +# To enable an option of the form "# OPTION = ...", edit this file and +# delete the "#" in the first column of the option you wish to use. +# +# The use of METIS 4.0.1 is optional. To exclude METIS, you must compile with +# CHOLMOD_CONFIG set to -DNPARTITION. See below for details. However, if you +# do not have a metis-4.0 directory inside the SuiteSparse directory, the +# */Makefile's that optionally rely on METIS will automatically detect this +# and compile without METIS. + +#------------------------------------------------------------------------------ +# Generic configuration +#------------------------------------------------------------------------------ + +# Using standard definitions from the make environment, typically: +# +# CC cc C compiler +# CXX g++ C++ compiler +# CFLAGS [ ] flags for C and C++ compiler +# CPPFLAGS [ ] flags for C and C++ compiler +# TARGET_ARCH [ ] target architecture +# FFLAGS [ ] flags for Fortran compiler +# RM rm -f delete a file +# AR ar create a static *.a library archive +# ARFLAGS rv flags for ar +# MAKE make make itself (sometimes called gmake) +# +# You can redefine them here, but by default they are used from the +# default make environment. + +# C and C++ compiler flags. The first three are standard for *.c and *.cpp +# Add -DNTIMER if you do use any timing routines (otherwise -lrt is required). +# CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -O3 -fexceptions -fPIC -DNTIMER + CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -O3 -fexceptions -fPIC + +# ranlib, and ar, for generating libraries. If you don't need ranlib, +# just change it to RANLAB = echo +RANLIB = ranlib +ARCHIVE = $(AR) $(ARFLAGS) + +# copy and delete a file +CP = cp -f +MV = mv -f + +# Fortran compiler (not required for 'make' or 'make library') +F77 = gfortran +F77FLAGS = $(FFLAGS) -O +F77LIB = + +# C and Fortran libraries. Remove -lrt if you don't have it. + LIB = -lm -lrt +# Using the following requires CF = ... -DNTIMER on POSIX C systems. +# LIB = -lm + +# For "make install" +INSTALL_LIB = /usr/local/lib +INSTALL_INCLUDE = /usr/local/include + +# Which version of MAKE you are using (default is "make") +# MAKE = make +# MAKE = gmake + +#------------------------------------------------------------------------------ +# BLAS and LAPACK configuration: +#------------------------------------------------------------------------------ + +# UMFPACK and CHOLMOD both require the BLAS. CHOLMOD also requires LAPACK. +# See Kazushige Goto's BLAS at http://www.cs.utexas.edu/users/flame/goto/ or +# http://www.tacc.utexas.edu/~kgoto/ for the best BLAS to use with CHOLMOD. +# LAPACK is at http://www.netlib.org/lapack/ . You can use the standard +# Fortran LAPACK along with Goto's BLAS to obtain very good performance. +# CHOLMOD gets a peak numeric factorization rate of 3.6 Gflops on a 3.2 GHz +# Pentium 4 (512K cache, 4GB main memory) with the Goto BLAS, and 6 Gflops +# on a 2.5Ghz dual-core AMD Opteron. + +# These settings will probably not work, since there is no fixed convention for +# naming the BLAS and LAPACK library (*.a or *.so) files. + +# This is probably slow ... it might connect to the Standard Reference BLAS: +BLAS = -lblas -lgfortran +LAPACK = -llapack + +# NOTE: this next option for the "Goto BLAS" has nothing to do with a "goto" +# statement. Rather, the Goto BLAS is written by Dr. Kazushige Goto. +# Using the Goto BLAS: +# BLAS = -lgoto -lgfortran -lgfortranbegin +# BLAS = -lgoto2 -lgfortran -lgfortranbegin -lpthread + +# Using non-optimized versions: +# BLAS = -lblas_plain -lgfortran -lgfortranbegin +# LAPACK = -llapack_plain + +# BLAS = -lblas_plain -lgfortran -lgfortranbegin +# LAPACK = -llapack + +# The BLAS might not contain xerbla, an error-handling routine for LAPACK and +# the BLAS. Also, the standard xerbla requires the Fortran I/O library, and +# stops the application program if an error occurs. A C version of xerbla +# distributed with this software (SuiteSparse_config/xerbla/libcerbla.a) +# includes a Fortran-callable xerbla routine that prints nothing and does not +# stop the application program. This is optional. + +# XERBLA = ../../SuiteSparse_config/xerbla/libcerbla.a + +# If you wish to use the XERBLA in LAPACK and/or the BLAS instead, +# use this option: +XERBLA = + +# If you wish to use the Fortran SuiteSparse_config/xerbla/xerbla.f instead, +# use this: + +# XERBLA = ../../SuiteSparse_config/xerbla/libxerbla.a + +#------------------------------------------------------------------------------ +# GPU configuration for CHOLMOD, using the CUDA BLAS +#------------------------------------------------------------------------------ + +# no cuda +# GPU_BLAS_PATH = +# GPU_CONFIG = + +# with cuda BLAS acceleration for CHOLMOD + GPU_BLAS_PATH=/usr/local/cuda + GPU_CONFIG=-DGPU_BLAS -I$(GPU_BLAS_PATH)/include + +#------------------------------------------------------------------------------ +# METIS, optionally used by CHOLMOD +#------------------------------------------------------------------------------ + +# If you do not have METIS, or do not wish to use it in CHOLMOD, you must +# compile CHOLMOD with the -DNPARTITION flag. + +# The path is relative to where it is used, in CHOLMOD/Lib, CHOLMOD/MATLAB, etc. +# You may wish to use an absolute path. METIS is optional. Compile +# CHOLMOD with -DNPARTITION if you do not wish to use METIS. +METIS_PATH = ../../metis-4.0 +METIS = ../../metis-4.0/libmetis.a + +#------------------------------------------------------------------------------ +# UMFPACK configuration: +#------------------------------------------------------------------------------ + +# Configuration flags for UMFPACK. See UMFPACK/Source/umf_config.h for details. +# +# -DNBLAS do not use the BLAS. UMFPACK will be very slow. +# -D'LONGBLAS=long' or -DLONGBLAS='long long' defines the integers used by +# LAPACK and the BLAS (defaults to 'int') +# -DNSUNPERF do not use the Sun Perf. Library (default is use it on Solaris) +# -DNRECIPROCAL do not multiply by the reciprocal +# -DNO_DIVIDE_BY_ZERO do not divide by zero +# -DNCHOLMOD do not use CHOLMOD as a ordering method. If -DNCHOLMOD is +# included in UMFPACK_CONFIG, then UMFPACK does not rely on +# CHOLMOD, CAMD, CCOLAMD, COLAMD, and METIS. + +UMFPACK_CONFIG = + +# uncomment this line to compile UMFPACK without CHOLMOD: +# UMFPACK_CONFIG = -DNCHOLMOD + +#------------------------------------------------------------------------------ +# CHOLMOD configuration +#------------------------------------------------------------------------------ + +# CHOLMOD Library Modules, which appear in libcholmod.a: +# Core requires: none +# Check requires: Core +# Cholesky requires: Core, AMD, COLAMD. optional: Partition, Supernodal +# MatrixOps requires: Core +# Modify requires: Core +# Partition requires: Core, CCOLAMD, METIS. optional: Cholesky +# Supernodal requires: Core, BLAS, LAPACK +# +# CHOLMOD test/demo Modules (all are GNU GPL, do not appear in libcholmod.a): +# Tcov requires: Core, Check, Cholesky, MatrixOps, Modify, Supernodal +# optional: Partition +# Valgrind same as Tcov +# Demo requires: Core, Check, Cholesky, MatrixOps, Supernodal +# optional: Partition +# +# Configuration flags: +# -DNCHECK do not include the Check module. License GNU LGPL +# -DNCHOLESKY do not include the Cholesky module. License GNU LGPL +# -DNPARTITION do not include the Partition module. License GNU LGPL +# also do not include METIS. +# -DNGPL do not include any GNU GPL Modules in the CHOLMOD library: +# -DNMATRIXOPS do not include the MatrixOps module. License GNU GPL +# -DNMODIFY do not include the Modify module. License GNU GPL +# -DNSUPERNODAL do not include the Supernodal module. License GNU GPL +# +# -DNPRINT do not print anything. +# -D'LONGBLAS=long' or -DLONGBLAS='long long' defines the integers used by +# LAPACK and the BLAS (defaults to 'int') +# -DNSUNPERF for Solaris only. If defined, do not use the Sun +# Performance Library + +CHOLMOD_CONFIG = $(GPU_CONFIG) + +# uncomment this line to compile CHOLMOD without METIS: +# CHOLMOD_CONFIG = -DNPARTITION + +#------------------------------------------------------------------------------ +# SuiteSparseQR configuration: +#------------------------------------------------------------------------------ + +# The SuiteSparseQR library can be compiled with the following options: +# +# -DNPARTITION do not include the CHOLMOD partition module +# -DNEXPERT do not include the functions in SuiteSparseQR_expert.cpp +# -DHAVE_TBB enable the use of Intel's Threading Building Blocks (TBB) + +# default, without timing, without TBB: +SPQR_CONFIG = +# with TBB: +# SPQR_CONFIG = -DHAVE_TBB + +# This is needed for IBM AIX: (but not for and C codes, just C++) +# SPQR_CONFIG = -DBLAS_NO_UNDERSCORE + +# with TBB, you must select this: +# TBB = -ltbb +# without TBB: +TBB = + +#------------------------------------------------------------------------------ +# Linux +#------------------------------------------------------------------------------ + +# Using default compilers: +# CC = gcc +# CF = $(CFLAGS) -O3 -fexceptions + +# alternatives: +# CF = $(CFLAGS) -g -fexceptions \ + -Wall -W -Wshadow -Wmissing-prototypes -Wstrict-prototypes \ + -Wredundant-decls -Wnested-externs -Wdisabled-optimization -ansi \ + -funit-at-a-time +# CF = $(CFLAGS) -O3 -fexceptions \ + -Wall -W -Werror -Wshadow -Wmissing-prototypes -Wstrict-prototypes \ + -Wredundant-decls -Wnested-externs -Wdisabled-optimization -ansi +# CF = $(CFLAGS) -O3 -fexceptions -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE +# CF = $(CFLAGS) -O3 +# CF = $(CFLAGS) -O3 -g -fexceptions +# CF = $(CFLAGS) -g -fexceptions \ + -Wall -W -Wshadow \ + -Wredundant-decls -Wdisabled-optimization -ansi + +# consider: +# -fforce-addr -fmove-all-movables -freduce-all-givs -ftsp-ordering +# -frename-registers -ffast-math -funroll-loops + +# Using the Goto BLAS: +# BLAS = -lgoto -lfrtbegin -lg2c $(XERBLA) -lpthread + +# Using Intel's icc and ifort compilers: +# (does not work for mexFunctions unless you add a mexopts.sh file) +# F77 = ifort +# CC = icc +# CF = $(CFLAGS) -O3 -xN -vec_report=0 +# CF = $(CFLAGS) -g + +# 64bit: +# F77FLAGS = -O -m64 +# CF = $(CFLAGS) -O3 -fexceptions -m64 +# BLAS = -lgoto64 -lfrtbegin -lg2c -lpthread $(XERBLA) +# LAPACK = -llapack64 + +# SUSE Linux 10.1, AMD Opteron, with GOTO Blas +# F77 = gfortran +# BLAS = -lgoto_opteron64 -lgfortran + +# SUSE Linux 10.1, Intel Pentium, with GOTO Blas +# F77 = gfortran +# BLAS = -lgoto -lgfortran + +#------------------------------------------------------------------------------ +# Mac +#------------------------------------------------------------------------------ + +# As recommended by macports, http://suitesparse.darwinports.com/ +# I've tested them myself on Mac OSX 10.6.1 and 10.6.8 (Snow Leopard), +# on my MacBook Air, and they work fine. + +# F77 = gfortran +# CF = $(CFLAGS) -O3 -fno-common -fexceptions -DNTIMER +# BLAS = -framework Accelerate +# LAPACK = -framework Accelerate +# LIB = -lm + +#------------------------------------------------------------------------------ +# Solaris +#------------------------------------------------------------------------------ + +# 32-bit +# CF = $(CFLAGS) -KPIC -dalign -xc99=%none -Xc -xlibmieee -xO5 -xlibmil -m32 + +# 64-bit +# CF = $(CFLAGS) -fast -KPIC -xc99=%none -xlibmieee -xlibmil -m64 -Xc + +# FFLAGS = -fast -KPIC -dalign -xlibmil -m64 + +# The Sun Performance Library includes both LAPACK and the BLAS: +# BLAS = -xlic_lib=sunperf +# LAPACK = + + +#------------------------------------------------------------------------------ +# Compaq Alpha +#------------------------------------------------------------------------------ + +# 64-bit mode only +# CF = $(CFLAGS) -O2 -std1 +# BLAS = -ldxml +# LAPACK = + +#------------------------------------------------------------------------------ +# IBM RS 6000 +#------------------------------------------------------------------------------ + +# BLAS = -lessl +# LAPACK = + +# 32-bit mode: +# CF = $(CFLAGS) -O4 -qipa -qmaxmem=16384 -qproto +# F77FLAGS = -O4 -qipa -qmaxmem=16384 + +# 64-bit mode: +# CF = $(CFLAGS) -O4 -qipa -qmaxmem=16384 -q64 -qproto +# F77FLAGS = -O4 -qipa -qmaxmem=16384 -q64 + +#------------------------------------------------------------------------------ +# SGI IRIX +#------------------------------------------------------------------------------ + +# BLAS = -lscsl +# LAPACK = + +# 32-bit mode +# CF = $(CFLAGS) -O + +# 64-bit mode (32 bit int's and 64-bit long's): +# CF = $(CFLAGS) -64 +# F77FLAGS = -64 + +# SGI doesn't have ranlib +# RANLIB = echo + +#------------------------------------------------------------------------------ +# AMD Opteron (64 bit) +#------------------------------------------------------------------------------ + +# BLAS = -lgoto_opteron64 -lg2c +# LAPACK = -llapack_opteron64 + +# SUSE Linux 10.1, AMD Opteron +# F77 = gfortran +# BLAS = -lgoto_opteron64 -lgfortran +# LAPACK = -llapack_opteron64 + +#------------------------------------------------------------------------------ +# remove object files and profile output +#------------------------------------------------------------------------------ + +CLEAN = *.o *.obj *.ln *.bb *.bbg *.da *.tcov *.gcov gmon.out *.bak *.d *.gcda *.gcno diff --git a/SuiteSparse_demo.m b/SuiteSparse_demo.m index c030656e84..1505cb52a8 100644 --- a/SuiteSparse_demo.m +++ b/SuiteSparse_demo.m @@ -13,7 +13,7 @@ function SuiteSparse_demo (matrixpath, dopause) try % older versions of MATLAB do not have an input argument to mfilename p = mfilename ('fullpath') ; - t = strfind (p, filesep) ; + t = strfind (p, '/') ; matrixpath = [ p(1:t(end)) 'CXSparse/Matrix' ] ; catch me %#ok % mfilename failed, assume we're in the SuiteSparse directory diff --git a/SuiteSparse_install.m b/SuiteSparse_install.m index d27dcf5906..9668ee3115 100644 --- a/SuiteSparse_install.m +++ b/SuiteSparse_install.m @@ -212,6 +212,7 @@ function SuiteSparse_install (do_demo) paths = add_to_path (paths, [SuiteSparse '/MATLAB_Tools/shellgui']) ; paths = add_to_path (paths, [SuiteSparse '/MATLAB_Tools/waitmex']) ; paths = add_to_path (paths, [SuiteSparse '/MATLAB_Tools/spqr_rank']) ; + paths = add_to_path (paths, [SuiteSparse '/MATLAB_Tools/spqr_rank/SJget']) ; fprintf ('MATLAB_Tools installed\n') ; catch me disp (me.message) ; diff --git a/UMFPACK/Demo/Makefile b/UMFPACK/Demo/Makefile index 83f27dd394..9f0b5ac56a 100644 --- a/UMFPACK/Demo/Makefile +++ b/UMFPACK/Demo/Makefile @@ -17,10 +17,10 @@ include ../../SuiteSparse_config/SuiteSparse_config.mk #------------------------------------------------------------------------------- # the optional Partition module requires METIS, CAMD, and CCOLAMD +I_WITH_PARTITION = LIB_WITH_PARTITION = CONFIG1 = -DNCHOLMOD CONFIG2 = -DNPARTITION -LIB_WITH_CHOLMOD = ifeq (,$(findstring -DNCHOLMOD, $(UMFPACK_CONFIG))) # CHOLMOD is requested. See if it is available ifeq (../../CHOLMOD, $(wildcard ../../CHOLMOD)) @@ -32,13 +32,16 @@ ifeq (,$(findstring -DNCHOLMOD, $(UMFPACK_CONFIG))) # check if METIS is requested and available ifeq (,$(findstring -DNPARTITION, $(CHOLMOD_CONFIG))) # METIS is requested. See if it is available - ifeq ($(METIS), $(wildcard $(METIS))) + ifeq ($(METIS_PATH), $(wildcard $(METIS_PATH))) ifeq (../../CAMD, $(wildcard ../../CAMD)) ifeq (../../CCOLAMD, $(wildcard ../../CCOLAMD)) - CONFIG2 = + # METIS, CAMD, and CCOLAMD are available LIB_WITH_PARTITION = $(METIS) \ ../../CCOLAMD/Lib/libccolamd.a \ ../../CAMD/Lib/libcamd.a + I_WITH_PARTITION = -I$(METIS_PATH)/Lib \ + -I../../CCOLAMD/Include -I../../CAMD/Include + CONFIG2 = endif endif endif diff --git a/UMFPACK/Doc/ChangeLog b/UMFPACK/Doc/ChangeLog index d0f277d9c9..d4cc633353 100644 --- a/UMFPACK/Doc/ChangeLog +++ b/UMFPACK/Doc/ChangeLog @@ -1,3 +1,7 @@ +Jun 20, 2012: verison 5.6.1 + + * minor update for Windows (removed filesep) + Jun 1, 2012: version 5.6.0 * UFconfig replaced with SuiteSparse_config diff --git a/UMFPACK/Doc/QuickStart.pdf b/UMFPACK/Doc/QuickStart.pdf index 52fb2c6fa2..e148a33290 100644 Binary files a/UMFPACK/Doc/QuickStart.pdf and b/UMFPACK/Doc/QuickStart.pdf differ diff --git a/UMFPACK/Doc/QuickStart.tex b/UMFPACK/Doc/QuickStart.tex index 9c463c6302..53a0ef8fe3 100644 --- a/UMFPACK/Doc/QuickStart.tex +++ b/UMFPACK/Doc/QuickStart.tex @@ -18,7 +18,7 @@ \author{Timothy A. Davis \\ DrTimothyAldenDavis@gmail.com, http://www.suitesparse.com} \title{UMFPACK Quick Start Guide} -\date{VERSION 5.6.0, Jun 1, 2012} +\date{VERSION 5.6.1, Jun 20, 2012} \maketitle %------------------------------------------------------------------------------- diff --git a/UMFPACK/Doc/UserGuide.pdf b/UMFPACK/Doc/UserGuide.pdf index a89783ed63..60d745caf7 100644 Binary files a/UMFPACK/Doc/UserGuide.pdf and b/UMFPACK/Doc/UserGuide.pdf differ diff --git a/UMFPACK/Doc/UserGuide.stex b/UMFPACK/Doc/UserGuide.stex index 21df5e3e03..2cddf843ee 100644 --- a/UMFPACK/Doc/UserGuide.stex +++ b/UMFPACK/Doc/UserGuide.stex @@ -20,7 +20,7 @@ \author{Timothy A. Davis \\ DrTimothyAldenDavis@gmail.com, http://www.suitesparse.com} \title{UMFPACK User Guide} -\date{VERSION 5.6.0, Jun 1, 2012} +\date{VERSION 5.6.1, Jun 20, 2012} \maketitle %------------------------------------------------------------------------------- diff --git a/UMFPACK/Include/umfpack.h b/UMFPACK/Include/umfpack.h index ac36c525f3..67e67469a6 100644 --- a/UMFPACK/Include/umfpack.h +++ b/UMFPACK/Include/umfpack.h @@ -95,7 +95,7 @@ extern "C" { /* Version, copyright, and license */ /* -------------------------------------------------------------------------- */ -#define UMFPACK_VERSION "UMFPACK V5.6.0 (Jun 1, 2012)" +#define UMFPACK_VERSION "UMFPACK V5.6.1 (Jun 20, 2012)" #define UMFPACK_COPYRIGHT \ "UMFPACK: Copyright (c) 2005-2012 by Timothy A. Davis. All Rights Reserved.\n" @@ -161,11 +161,11 @@ extern "C" { * above. */ -#define UMFPACK_DATE "Jun 1, 2012" +#define UMFPACK_DATE "Jun 20, 2012" #define UMFPACK_VER_CODE(main,sub) ((main) * 1000 + (sub)) #define UMFPACK_MAIN_VERSION 5 #define UMFPACK_SUB_VERSION 6 -#define UMFPACK_SUBSUB_VERSION 0 +#define UMFPACK_SUBSUB_VERSION 1 #define UMFPACK_VER UMFPACK_VER_CODE(UMFPACK_MAIN_VERSION,UMFPACK_SUB_VERSION) /* -------------------------------------------------------------------------- */ diff --git a/UMFPACK/MATLAB/umfpack_make.m b/UMFPACK/MATLAB/umfpack_make.m index beb3915d38..d0e8af4156 100644 --- a/UMFPACK/MATLAB/umfpack_make.m +++ b/UMFPACK/MATLAB/umfpack_make.m @@ -298,8 +298,6 @@ incdir = [incdir ' -I../../CHOLMOD/MATLAB/Windows'] ; end -incdir = strrep (incdir, '/', filesep) ; - %------------------------------------------------------------------------------- % mex command %------------------------------------------------------------------------------- @@ -315,8 +313,8 @@ %------------------------------------------------------------------------------- for k = 1:length(other_source) - fs = strrep (other_source {k}, '/', filesep) ; - slash = strfind (fs, filesep) ; + fs = other_source {k} ; + slash = strfind (fs, '/') ; slash = slash (end) + 1 ; o = fs (slash:end) ; kk = cmd (sprintf ('%s -DDLONG -c %s.c', mx, fs), kk, details) ; diff --git a/UMFPACK/MATLAB/umfpack_report.m b/UMFPACK/MATLAB/umfpack_report.m index 211482ca46..c69c58aedb 100644 --- a/UMFPACK/MATLAB/umfpack_report.m +++ b/UMFPACK/MATLAB/umfpack_report.m @@ -32,7 +32,7 @@ function umfpack_report (Control, Info) end fprintf ('\nUMFPACK Control:\n') ; disp (Control) ; -if (nargin > 1 && !isempty (Info)) +if (nargin > 1 && ~isempty (Info)) fprintf ('\nUMFPACK Info:\n') ; disp (Info) ; end diff --git a/UMFPACK/MATLAB/umfpackmex.c b/UMFPACK/MATLAB/umfpackmex.c index b6bd6c5231..e1fac08ab2 100644 --- a/UMFPACK/MATLAB/umfpackmex.c +++ b/UMFPACK/MATLAB/umfpackmex.c @@ -496,7 +496,7 @@ mxArray *umfpack_mx_info_details /* return a struct with info statistics */ "number_of_entries_in_LU_data_structure", "numeric_time", "nnz_diagonal_of_U", - "rcond", + "rcond_estimate", "scaling_used", "min_abs_row_sum_of_A", "max_abs_row_sum_of_A", diff --git a/UMFPACK/Makefile b/UMFPACK/Makefile index e22269fd22..622ee39661 100644 --- a/UMFPACK/Makefile +++ b/UMFPACK/Makefile @@ -2,7 +2,7 @@ # UMFPACK Makefile #------------------------------------------------------------------------------- -VERSION = 5.6.0 +VERSION = 5.6.1 # UMFPACK requires the AMD package to be in ../AMD