diff --git a/gtsam/3rdparty/CCOLAMD/Source/ccolamd.c b/gtsam/3rdparty/CCOLAMD/Source/ccolamd.c index d5e8da2f0..9a08e3ea8 100644 --- a/gtsam/3rdparty/CCOLAMD/Source/ccolamd.c +++ b/gtsam/3rdparty/CCOLAMD/Source/ccolamd.c @@ -1560,9 +1560,8 @@ PUBLIC Int CCOLAMD_2 /* returns TRUE if successful, FALSE otherwise */ Int *dead_cols ; Int set1 ; Int set2 ; -#ifndef NDEBUG Int cs ; -#endif + int ok ; #ifndef NDEBUG @@ -1910,10 +1909,8 @@ PUBLIC Int CCOLAMD_2 /* returns TRUE if successful, FALSE otherwise */ p [k] = col ; ASSERT (A [col] == EMPTY) ; -#ifndef NDEBUG - cs = CMEMBER (col) ; + cs = CMEMBER (col) ; ASSERT (k >= cset_start [cs] && k < cset_start [cs+1]) ; -#endif A [col] = k ; k++ ; @@ -1929,11 +1926,11 @@ PUBLIC Int CCOLAMD_2 /* returns TRUE if successful, FALSE otherwise */ if (A [col] == EMPTY) { k = Col [col].shared2.order ; + cs = CMEMBER (col) ; #ifndef NDEBUG - cs = CMEMBER (col) ; dead_cols [cs]-- ; - ASSERT (k >= cset_start [cs] && k < cset_start [cs+1]) ; #endif + ASSERT (k >= cset_start [cs] && k < cset_start [cs+1]) ; DEBUG1 (("ccolamd output ordering: k "ID" col "ID " (dense or null col)\n", k, col)) ; p [k] = col ; diff --git a/gtsam/3rdparty/SuiteSparse_config/Makefile b/gtsam/3rdparty/SuiteSparse_config/Makefile index aa858aeab..695a327a4 100644 --- a/gtsam/3rdparty/SuiteSparse_config/Makefile +++ b/gtsam/3rdparty/SuiteSparse_config/Makefile @@ -7,8 +7,8 @@ export SUITESPARSE # version of SuiteSparse_config is also version of SuiteSparse meta-package LIBRARY = libsuitesparseconfig -VERSION = 4.5.6 -SO_VERSION = 4 +VERSION = 5.4.0 +SO_VERSION = 5 default: library diff --git a/gtsam/3rdparty/SuiteSparse_config/README.txt b/gtsam/3rdparty/SuiteSparse_config/README.txt index 8129f5a04..8555cc459 100644 --- a/gtsam/3rdparty/SuiteSparse_config/README.txt +++ b/gtsam/3rdparty/SuiteSparse_config/README.txt @@ -1,4 +1,4 @@ -SuiteSparse_config, 2017, Timothy A. Davis, http://www.suitesparse.com +SuiteSparse_config, 2018, Timothy A. Davis, http://www.suitesparse.com (formerly the UFconfig package) This directory contains a default SuiteSparse_config.mk file. It tries to @@ -37,6 +37,7 @@ SuiteSparse_config is not required by these packages: CSparse a Concise Sparse matrix package MATLAB_Tools toolboxes for use in MATLAB + GraphBLAS graph algorithms in the language of linear algebra In addition, the xerbla/ directory contains Fortan and C versions of the BLAS/LAPACK xerbla routine, which is called when an invalid input is passed to diff --git a/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.c b/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.c index b491539fe..595e46781 100644 --- a/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.c +++ b/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.c @@ -4,7 +4,7 @@ /* SuiteSparse configuration : memory manager and printf functions. */ -/* Copyright (c) 2013, Timothy A. Davis. No licensing restrictions +/* Copyright (c) 2013-2018, Timothy A. Davis. No licensing restrictions * apply to this file or to the SuiteSparse_config directory. * Author: Timothy A. Davis. */ diff --git a/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.h b/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.h index 7d4de65d3..9e28c0530 100644 --- a/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.h +++ b/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.h @@ -177,38 +177,7 @@ int SuiteSparse_divcomplex /* SuiteSparse is not a package itself, but a collection of packages, some of * which must be used together (UMFPACK requires AMD, CHOLMOD requires AMD, * COLAMD, CAMD, and CCOLAMD, etc). A version number is provided here for the - * collection itself. The versions of packages within each version of - * SuiteSparse are meant to work together. Combining one package from one - * version of SuiteSparse, with another package from another version of - * SuiteSparse, may or may not work. - * - * SuiteSparse contains the following packages: - * - * SuiteSparse_config version 4.5.6 (version always the same as SuiteSparse) - * AMD version 2.4.6 - * BTF version 1.2.6 - * CAMD version 2.4.6 - * CCOLAMD version 2.9.6 - * CHOLMOD version 3.0.11 - * COLAMD version 2.9.6 - * CSparse version 3.1.9 - * CXSparse version 3.1.9 - * GPUQREngine version 1.0.5 - * KLU version 1.3.8 - * LDL version 2.2.6 - * RBio version 2.2.6 - * SPQR version 2.0.8 - * SuiteSparse_GPURuntime version 1.0.5 - * UMFPACK version 5.7.6 - * MATLAB_Tools various packages & M-files - * xerbla version 1.0.3 - * - * Other package dependencies: - * BLAS required by CHOLMOD and UMFPACK - * LAPACK required by CHOLMOD - * METIS 5.1.0 required by CHOLMOD (optional) and KLU (optional) - * CUBLAS, CUDART NVIDIA libraries required by CHOLMOD and SPQR when - * they are compiled with GPU acceleration. + * collection itself, which is also the version number of SuiteSparse_config. */ int SuiteSparse_version /* returns SUITESPARSE_VERSION */ @@ -233,11 +202,11 @@ int SuiteSparse_version /* returns SUITESPARSE_VERSION */ */ #define SUITESPARSE_HAS_VERSION_FUNCTION -#define SUITESPARSE_DATE "Oct 3, 2017" +#define SUITESPARSE_DATE "Dec 28, 2018" #define SUITESPARSE_VER_CODE(main,sub) ((main) * 1000 + (sub)) -#define SUITESPARSE_MAIN_VERSION 4 -#define SUITESPARSE_SUB_VERSION 5 -#define SUITESPARSE_SUBSUB_VERSION 6 +#define SUITESPARSE_MAIN_VERSION 5 +#define SUITESPARSE_SUB_VERSION 4 +#define SUITESPARSE_SUBSUB_VERSION 0 #define SUITESPARSE_VERSION \ SUITESPARSE_VER_CODE(SUITESPARSE_MAIN_VERSION,SUITESPARSE_SUB_VERSION) diff --git a/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.mk b/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.mk index 2c13a6010..19a39032a 100644 --- a/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.mk +++ b/gtsam/3rdparty/SuiteSparse_config/SuiteSparse_config.mk @@ -3,9 +3,11 @@ #=============================================================================== # This file contains all configuration settings for all packages in SuiteSparse, -# except for CSparse (which is stand-alone) and the packages in MATLAB_Tools. +# except for CSparse (which is stand-alone), the packages in MATLAB_Tools, +# and GraphBLAS. The configuration settings for GraphBLAS are determined by +# GraphBLAS/CMakeLists.txt -SUITESPARSE_VERSION = 4.5.6 +SUITESPARSE_VERSION = 5.4.0 #=============================================================================== # Options you can change without editing this file: @@ -57,6 +59,15 @@ SUITESPARSE_VERSION = 4.5.6 INSTALL_INCLUDE ?= $(INSTALL)/include INSTALL_DOC ?= $(INSTALL)/share/doc/suitesparse-$(SUITESPARSE_VERSION) + CMAKE_OPTIONS ?= -DCMAKE_INSTALL_PREFIX=$(INSTALL) + + #--------------------------------------------------------------------------- + # parallel make + #--------------------------------------------------------------------------- + + # sequential make's by default + JOBS ?= 1 + #--------------------------------------------------------------------------- # optimization level #--------------------------------------------------------------------------- @@ -78,19 +89,11 @@ SUITESPARSE_VERSION = 4.5.6 CXX = g++ BLAS = -lrefblas -lgfortran -lstdc++ LAPACK = -llapack - CFLAGS += --coverage - OPTIMIZATION = -g - LDFLAGS += --coverage + CFLAGS += --coverage + OPTIMIZATION = -g + LDFLAGS += --coverage endif - #--------------------------------------------------------------------------- - # CFLAGS for the C/C++ compiler - #--------------------------------------------------------------------------- - - # The CF macro is used by SuiteSparse Makefiles as a combination of - # CFLAGS, CPPFLAGS, TARGET_ARCH, and system-dependent settings. - CF ?= $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) $(OPTIMIZATION) -fexceptions -fPIC - #--------------------------------------------------------------------------- # OpenMP is used in CHOLMOD #--------------------------------------------------------------------------- @@ -112,10 +115,12 @@ SUITESPARSE_VERSION = 4.5.6 ifneq ($(AUTOCC),no) ifneq ($(shell which icc 2>/dev/null),) # use the Intel icc compiler for C codes, and -qopenmp for OpenMP - CC = icc -D_GNU_SOURCE - CXX = $(CC) + CC = icc + CFLAGS += -D_GNU_SOURCE + CXX = icpc CFOPENMP = -qopenmp -I$(MKLROOT)/include - LDFLAGS += -openmp + LDFLAGS += -qopenmp + LDLIBS += -lm -lirc endif ifneq ($(shell which ifort 2>/dev/null),) # use the Intel ifort compiler for Fortran codes @@ -123,6 +128,16 @@ SUITESPARSE_VERSION = 4.5.6 endif endif + CMAKE_OPTIONS += -DCMAKE_CXX_COMPILER=$(CXX) -DCMAKE_C_COMPILER=$(CC) + + #--------------------------------------------------------------------------- + # CFLAGS for the C/C++ compiler + #--------------------------------------------------------------------------- + + # The CF macro is used by SuiteSparse Makefiles as a combination of + # CFLAGS, CPPFLAGS, TARGET_ARCH, and system-dependent settings. + CF ?= $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) $(OPTIMIZATION) -fexceptions -fPIC + #--------------------------------------------------------------------------- # code formatting (for Tcov on Linux only) #--------------------------------------------------------------------------- @@ -157,7 +172,7 @@ SUITESPARSE_VERSION = 4.5.6 # $(MKLROOT)/lib/intel64/libmkl_intel_thread.a \ # -Wl,--end-group -lpthread -lm # using dynamic linking: - BLAS = -lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread -lpthread -lm + BLAS = -lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread -liomp5 -lpthread -lm LAPACK = else # use the OpenBLAS at http://www.openblas.net @@ -223,12 +238,16 @@ SUITESPARSE_VERSION = 4.5.6 CUBLAS_LIB = $(CUDA_PATH)/lib64/libcublas.so CUDA_INC_PATH = $(CUDA_PATH)/include/ CUDA_INC = -I$(CUDA_INC_PATH) + MAGMA_INC = -I/opt/magma-2.4.0/include/ + MAGMA_LIB = -L/opt/magma-2.4.0/lib/ -lmagma NVCC = $(CUDA_PATH)/bin/nvcc NVCCFLAGS = -Xcompiler -fPIC -O3 \ -gencode=arch=compute_30,code=sm_30 \ -gencode=arch=compute_35,code=sm_35 \ -gencode=arch=compute_50,code=sm_50 \ - -gencode=arch=compute_50,code=compute_50 + -gencode=arch=compute_53,code=sm_53 \ + -gencode=arch=compute_53,code=sm_53 \ + -gencode=arch=compute_60,code=compute_60 endif #--------------------------------------------------------------------------- @@ -555,6 +574,7 @@ config: @echo 'Install include files in: INSTALL_INCLUDE=' '$(INSTALL_INCLUDE)' @echo 'Install documentation in: INSTALL_DOC= ' '$(INSTALL_DOC)' @echo 'Optimization level: OPTIMIZATION= ' '$(OPTIMIZATION)' + @echo 'parallel make jobs: JOBS= ' '$(JOBS)' @echo 'BLAS library: BLAS= ' '$(BLAS)' @echo 'LAPACK library: LAPACK= ' '$(LAPACK)' @echo 'Intel TBB library: TBB= ' '$(TBB)'