Rev 4428 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
CHOLMOD: a sparse CHOLesky MODification packageVersion 1.6, Nov 1, 2007. Copyright (c) 2005-2007.-----------------------------------------------CHOLMOD is a set of routines for factorizing sparse symmetric positivedefinite matrices of the form A or AA', updating/downdating a sparseCholesky factorization, solving linear systems, updating/downdatingthe solution to the triangular system Lx=b, and many other sparse matrixfunctions for both symmetric and unsymmetric matrices. Its supernodalCholesky factorization relies on LAPACK and the Level-3 BLAS, and obtainsa substantial fraction of the peak performance of the BLAS. Both real andcomplex matrices are supported. CHOLMOD is written in ANSI/ISO C, with bothC and MATLAB interfaces. This code works on Microsoft Windows and manyversions of Unix and Linux.Some Modules of CHOLMOD are copyrighted by the University of Florida (theCore and Partition Modules). The rest are copyrighted by the authors:Timothy A. Davis (all of them), and William W. Hager (the Modify Module).CHOLMOD relies on several other packages: AMD, CAMD, COLAMD, CCOLAMD, UFconfig,METIS, the BLAS, and LAPACK. All but METIS, the BLAS, and LAPACK are part ofSuiteSparse.AMD is authored by T. Davis, Iain Duff, and Patrick Amestoy.COLAMD is authored by T. Davis and Stefan Larimore, with algorithmic designin collaboration with John Gilbert and Esmond Ng.CCOLAMD is authored by T. Davis and Siva Rajamanickam.CAMD is authored by T. Davis and Y. Chen.LAPACK and the BLAS are authored by Jack Dongarra and many others.LAPACK is available at http://www.netlib.org/lapackMETIS is authored by George Karypis, Univ. of Minnesota. Its use in CHOLMODis optional. See http://www-users.cs.umn.edu/~karypis/metis.Place a copy of the metis-4.0 directory in the same directory thatcontains the CHOLMOD, AMD, COLAMD, and CCOLAMD directories prior to compilingwith "make".If you do not wish to use METIS, you must edit UFconfig and change the line:CHOLMOD_CONFIG =toCHOLMOD_CONFIG = -DNPARTITIONThe CHOLMOD, AMD, COLAMD, CCOLAMD, and UFconfig directories must all residein a common parent directory. To compile all these libraries,edit UFconfig/UFconfig.mk to reflect your environment (C compiler, locationof the BLAS, and so on) and then type "make" in either the CHOLMOD directoryor in the parent directory of CHOLMOD. See each package for more details onhow to compile them.For use in MATLAB (on any system, including Windows): start MATLAB,cd to the CHOLMOD/MATLAB directory, and type cholmod_make in the MATLABCommand Window. This is the best way to compile CHOLMOD for MATLAB; itprovides a workaround for a METIS design feature, in which METIS terminatesyour program (and thus MATLAB) if it runs out of memory. Using cholmod_makealso ensures your mexFunctions are compiled with -fexceptions, so thatexceptions are handled properly (when hitting control-C in the MATLAB commandwindow, for example).If you have MATLAB 7.2 or earlier and use "make mex", you must first editUFconfig/UFconfig.h to remove the "-largeArrayDims" option from the MEX command(or just use cholmod_make.m inside MATLAB).On the Pentium, do NOT use the Intel MKL BLAS prior to MKL Version 8.0 withCHOLMOD. Older versions (prior to 8.0) have a bug in dgemm when computingA*B'. The bug generates a NaN result, when the inputs are well-defined. Usethe Goto BLAS or the MKL v8.0 BLAS instead. The Goto BLAS is faster and morereliable. See http://www.tacc.utexas.edu/~kgoto/ orhttp://www.cs.utexas.edu/users/flame/goto/.Sadly, the Intel MKL BLAS 7.x is the default for MATLAB 7.0.4. Seehttp://www.mathworks.com/support/bugreports/details.html?rp=252103 for moredetails. To workaround this problem on Linux, set environment variableBLAS_VERSION to libmkl_p3.so:libguide.so. On Windows, set environment variableBLAS_VERSION to mkl_p3.dll. Better yet, get MATLAB 7sp3 (MATLAB 7.1) or later.Acknowledgements: this work was supported in part by the National ScienceFoundation (NFS CCR-0203270 and DMS-9803599), and a grant from Sandia NationalLaboratories (Dept. of Energy) which supported the development of CHOLMOD'sPartition Module.