diff --git a/math/superlu_mt/Makefile b/math/superlu_mt/Makefile index 77e545b484d5..38a11e030210 100644 --- a/math/superlu_mt/Makefile +++ b/math/superlu_mt/Makefile @@ -2,12 +2,11 @@ # $FreeBSD$ PORTNAME= superlu_mt -PORTVERSION= 2.0.20080115 -PORTREVISION= 9 +PORTVERSION= 3.1.20160319 CATEGORIES= math MASTER_SITES= http://crd.lbl.gov/~xiaoye/SuperLU/ \ http://crd.lbl.gov/~xiaoye/:doc -DISTNAME= ${PORTNAME}_2.0 +DISTNAME= ${PORTNAME}_3.1 DISTFILES= ${DISTNAME}${EXTRACT_SUFX} simax97.ps.gz:doc DIST_SUBDIR= superlu2 EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} @@ -15,7 +14,11 @@ EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} MAINTAINER= ports@FreeBSD.org COMMENT= Routines for performing multithreaded sparse factorization +LICENSE= BSD3CLAUSE +LICENSE_FILE= ${WRKSRC}/License.txt + BROKEN_aarch64= fails to build: undefined reference to sbrk +BROKEN_sparc64= Does not link on sparc64 USES= fortran gmake @@ -49,21 +52,16 @@ FPIC= -fPIC FPIC= -fpic .endif -.if ${ARCH} == "sparc64" -BROKEN= Does not link on sparc64 -.endif - USE_LDCONFIG= yes -WRKSRC= ${WRKDIR}/SuperLU_MT_2.0 -WRKSRC_SHARED= ${WRKDIR}/SuperLU_MT_2.0_shared +WRKSRC= ${WRKDIR}/SuperLU_MT_3.1 +WRKSRC_SHARED= ${WRKDIR}/SuperLU_MT_3.1_shared ALL_TARGET= lib -SVERSION= 1 +SVERSION= 3 ARCH2FIX= CBLAS/Makefile MAKE_INC/make.openmp MAKE_INC/make.exemplar \ - MAKE_INC/make.pthreads TESTING/MATGEN/Makefile \ - make.inc SRC/Makefile + make.inc SRC/Makefile TESTING/MATGEN/Makefile -post-patch: +do-configure: .for fmk in ${ARCH2FIX} @${REINPLACE_CMD} -e 's|^ARCH *.= ar|ARCMD = ar| ; \ s|\$$(ARCH)|$$(ARCMD)|' ${WRKSRC}/${fmk} @@ -106,20 +104,24 @@ do-build: done do-install: - ${INSTALL_DATA} ${WRKDIR}/tmp_static/libsuperlu_mt.a ${STAGEDIR}${PREFIX}/lib - ${INSTALL_LIB} ${WRKDIR}/tmp_shared/libsuperlu_mt.so.${SVERSION} ${STAGEDIR}${PREFIX}/lib - cd ${STAGEDIR}${PREFIX}/lib && ${LN} -s -f libsuperlu_mt.so.${SVERSION} libsuperlu_mt.so + ${INSTALL_DATA} ${WRKDIR}/tmp_static/libsuperlu_mt_*.a ${STAGEDIR}${PREFIX}/lib + ${INSTALL_LIB} ${WRKDIR}/tmp_shared/libsuperlu_mt_*.so.${SVERSION} ${STAGEDIR}${PREFIX}/lib + ${RLN} ${STAGEDIR}${PREFIX}/lib/libsuperlu_mt_PTHREAD.so.${SVERSION} \ + ${STAGEDIR}${PREFIX}/lib/libsuperlu_mt_PTHREAD.so + ${RLN} ${STAGEDIR}${PREFIX}/lib/libsuperlu_mt_PTHREAD.so.${SVERSION} \ + ${STAGEDIR}${PREFIX}/lib/libsuperlu_mt.so ${MKDIR} ${STAGEDIR}${PREFIX}/include/${PORTNAME} ${INSTALL_DATA} ${WRKSRC}/SRC/*.h ${STAGEDIR}${PREFIX}/include/${PORTNAME} .if ${PORT_OPTIONS:MDOCS} @${MKDIR} ${STAGEDIR}${DOCSDIR} -# ${INSTALL_DATA} ${WRKSRC}/INSTALL/*.ps ${STAGEDIR}${DOCSDIR} -# ${GZIP_CMD} ${STAGEDIR}${DOCSDIR}/*.ps + ${INSTALL_DATA} ${WRKSRC}/DOC/*.pdf ${STAGEDIR}${DOCSDIR} ${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/simax97.ps.gz ${STAGEDIR}${DOCSDIR} .endif +.ifdef MAINTAINER_MODE regression-test: do-build @(cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} testing) @(cd ${WRKSRC_SHARED} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} testing) +.endif .include diff --git a/math/superlu_mt/distinfo b/math/superlu_mt/distinfo index c545ae8f82a2..20e005bf9129 100644 --- a/math/superlu_mt/distinfo +++ b/math/superlu_mt/distinfo @@ -1,4 +1,5 @@ -SHA256 (superlu2/superlu_mt_2.0.tar.gz) = 76f54f332db22313316798c3983b7bb704c159ce5a404ddda1f04d0fa477aab1 -SIZE (superlu2/superlu_mt_2.0.tar.gz) = 1332773 +TIMESTAMP = 1494706587 +SHA256 (superlu2/superlu_mt_3.1.tar.gz) = 407b544b9a92b2ed536b1e713e80f986824cf3016657a4bfc2f3e7d2a76ecab6 +SIZE (superlu2/superlu_mt_3.1.tar.gz) = 1824440 SHA256 (superlu2/simax97.ps.gz) = 8f8ae10e28dfdeda2fed58b0bcec1bf96f10fa7b1d055aff160d77d7aeb8a983 SIZE (superlu2/simax97.ps.gz) = 158724 diff --git a/math/superlu_mt/files/patch-INSTALL-Makefile b/math/superlu_mt/files/patch-INSTALL-Makefile index 354a0ce66850..429b7fd6ce24 100644 --- a/math/superlu_mt/files/patch-INSTALL-Makefile +++ b/math/superlu_mt/files/patch-INSTALL-Makefile @@ -1,6 +1,6 @@ ---- INSTALL/Makefile.orig 2013-11-16 19:14:28.000000000 +0100 -+++ INSTALL/Makefile 2013-11-16 19:14:58.000000000 +0100 -@@ -17,7 +17,7 @@ +--- INSTALL/Makefile.orig 2013-03-19 22:10:40 UTC ++++ INSTALL/Makefile +@@ -17,7 +17,7 @@ install.out: slamch.o: slamch.c ; $(CC) $(NOOPTS) -c $< dlamch.o: dlamch.c ; $(CC) $(NOOPTS) -c $< diff --git a/math/superlu_mt/files/patch-SRC+slu_mt_util.h b/math/superlu_mt/files/patch-SRC+slu_mt_util.h deleted file mode 100644 index daf2a8cf9bef..000000000000 --- a/math/superlu_mt/files/patch-SRC+slu_mt_util.h +++ /dev/null @@ -1,10 +0,0 @@ ---- SRC/slu_mt_util.h~ 2008-01-09 08:28:56.000000000 +0900 -+++ SRC/slu_mt_util.h 2008-07-02 09:54:31.000000000 +0900 -@@ -12,6 +12,7 @@ - #include - #include - #include -+#include - - /* Macros */ - #ifndef USER_ABORT diff --git a/math/superlu_mt/files/patch-TESTING+pddrive.c b/math/superlu_mt/files/patch-TESTING+pddrive.c deleted file mode 100644 index 52f92404b7e0..000000000000 --- a/math/superlu_mt/files/patch-TESTING+pddrive.c +++ /dev/null @@ -1,14 +0,0 @@ ---- TESTING/pddrive.c.orig 2008-06-18 22:06:40.000000000 -0500 -+++ TESTING/pddrive.c 2008-06-18 22:08:38.000000000 -0500 -@@ -9,6 +9,11 @@ - #define FMT2 "%10s:fact=%d, trans=%d, refact=%d, equed=%d, n=%d, imat=%d, test(%d)=%12.5g\n" - #define FMT3 "%10s:info=%d, izero=%d, n=%d, nrhs=%d, imat=%d, nfail=%d\n" - -+/* SuperLU compatibility */ -+#define DN SLU_DN -+#define _D SLU_D -+#define GE SLU_GE -+#define NC SLU_NC - - main(int argc, char *argv[]) - { diff --git a/math/superlu_mt/files/patch-TESTING+pdgssv.c b/math/superlu_mt/files/patch-TESTING+pdgssv.c deleted file mode 100644 index 926ed0a98863..000000000000 --- a/math/superlu_mt/files/patch-TESTING+pdgssv.c +++ /dev/null @@ -1,16 +0,0 @@ ---- TESTING/pdgssv.c.orig 2008-06-18 22:09:01.000000000 -0500 -+++ TESTING/pdgssv.c 2008-06-18 22:10:18.000000000 -0500 -@@ -1,6 +1,13 @@ - #include "pdsp_defs.h" - #include "util.h" - -+/* SuperLU compatibility */ -+#define DN SLU_DN -+#define _D SLU_D -+#define GE SLU_GE -+#define NC SLU_NC -+#define NR SLU_NR -+ - void - pdgssv(int nprocs, SuperMatrix *A, int *perm_c, int *perm_r, - SuperMatrix *L, SuperMatrix *U, SuperMatrix *B, int *info ) diff --git a/math/superlu_mt/files/patch-TESTING+pdgssvx.c b/math/superlu_mt/files/patch-TESTING+pdgssvx.c deleted file mode 100644 index 8a09843b89ff..000000000000 --- a/math/superlu_mt/files/patch-TESTING+pdgssvx.c +++ /dev/null @@ -1,16 +0,0 @@ ---- TESTING/pdgssvx.c.orig 2008-06-18 22:10:35.000000000 -0500 -+++ TESTING/pdgssvx.c 2008-06-18 22:11:10.000000000 -0500 -@@ -1,6 +1,13 @@ - #include "pdsp_defs.h" - #include "util.h" - -+/* SuperLU compatibility */ -+#define DN SLU_DN -+#define _D SLU_D -+#define GE SLU_GE -+#define NC SLU_NC -+#define NR SLU_NR -+ - void - pdgssvx(int nprocs, pdgstrf_options_t *pdgstrf_options, SuperMatrix *A, - int *perm_c, int *perm_r, equed_t *equed, double *R, double *C, diff --git a/math/superlu_mt/files/patch-make.inc b/math/superlu_mt/files/patch-make.inc index 23c7237fc353..9d88f8dfdd6d 100644 --- a/math/superlu_mt/files/patch-make.inc +++ b/math/superlu_mt/files/patch-make.inc @@ -1,62 +1,57 @@ ---- make.inc.orig 2008-02-22 22:45:36 UTC +--- make.inc.orig 2015-04-30 00:46:42 UTC +++ make.inc -@@ -16,13 +16,13 @@ - # - # The machine (platform) identifier to append to the library names - # --PLAT = _sp -+PLAT = _PTHREAD - - # - # The name of the libraries to be created/linked to - # --TMGLIB = libtmglib.a --SUPERLULIB = libsuperlu_mt$(PLAT).a -+TMGLIB = libtmg.a -+SUPERLULIB = libsuperlu_mt.a - - # - # If you don't have ESSL, you can use the following blaslib instead: -@@ -30,7 +30,7 @@ SUPERLULIB = libsuperlu_mt$(PLAT).a - # which may be slower than ESSL - # - BLASDEF = -DUSE_VENDOR_BLAS --BLASLIB = -lessl -+BLASLIB = %%BLAS%% - #BLASLIB = ../lib/libblas$(PLAT).a - MATHLIB = -lm - MPLIB = -lpthread -@@ -38,7 +38,7 @@ MPLIB = -lpthread +@@ -22,7 +22,7 @@ PLAT = _PTHREAD + TMGLIB = libtmglib$(PLAT).a + SUPERLULIB = libsuperlu_mt$(PLAT).a + BLASDEF = -DUSE_VENDOR_BLAS +-BLASLIB = -L/usr/lib -lf77blas -latlas ++BLASLIB = %%BLAS%% + #BLASLIB = ../lib/libblas$(PLAT).a + MATHLIB = -lm + MPLIB = -lpthread +@@ -31,7 +31,7 @@ MPLIB = -lpthread # The archiver and the flag(s) to use when building archive (library) # If your system has no ranlib, set RANLIB = echo. # --ARCH = ar -+ARCMD = ar - ARCHFLAGS = cr - RANLIB = ranlib +-ARCH = ar ++ARCMD = ar + ARCHFLAGS = cr + RANLIB = ranlib -@@ -46,16 +46,17 @@ RANLIB = ranlib - PREDEFS = -D_PTHREAD +@@ -40,8 +40,8 @@ RANLIB = ranlib + # Definitions used by CPP: + PREDEFS = -D__PTHREAD ## -DDEBUGlevel=0 -DPRNTlevel=0 # +-CC = gcc +-CFLAGS = $(PREDEFS) -g #-O3 ++CC = %%CC%% ++CFLAGS = $(PREDEFS) %%CFLAGS%% + # Uncomment the following to use 64-bit integer + CFLAGS += -D_LONGINT --CC = xlc_r --CFLAGS = -qarch=pwr5 -qalias=allptrs $(PREDEFS) -DPRNTlevel=0 -O3 --FORTRAN = xlf --FFLAGS = -O3 -qarch=pwr5 --LOADER = xlc_r --LOADOPTS = -bmaxdata:0x80000000 -+CC = %%CC%% -+CFLAGS = $(PREDEFS) %%CPPFLAGS%% %%CFLAGS%% -+FORTRAN = %%FC%% -+FFLAGS = %%FFLAGS%% -+LOADER = %%CC%% -+LOADOPTS = %%LDFLAGS%% -+NOOPTS = %%FPIC%% +@@ -49,19 +49,19 @@ CFLAGS += -D_LONGINT + # There are a few files that should NOT be optimized, which appear in the + # end of SRC/Makefile, taking the flag $(NOOPTS) + # NOOPTS should be defined to explicitly turn off any optimization. +-NOOPTS = -O0 ++NOOPTS = -O0 %%FPIC%% + +-BLASOPTS = ++BLASOPTS = + + ############################################################################ + +-FORTRAN = gfortran +-FFLAGS = -O -fdefault-integer-8 ++FORTRAN = %%FC%% ++FFLAGS = %%FFLAGS%% -fdefault-integer-8 + + ############################################################################ + +-LOADER = gcc +-LOADOPTS = -O #-pthread ++LOADER = %%CC%% ++LOADOPTS = -O %%LDFLAGS%% + + ############################################################################ # - # C preprocessor defs for compilation for the Fortran interface - # (-DNoChange, -DAdd_, -DAdd__, or -DUpCase) - # --CDEFS = -DNoChange -+CDEFS = -DAdd_ - - diff --git a/math/superlu_mt/pkg-descr b/math/superlu_mt/pkg-descr index f55d8b951990..a0559f7cee48 100644 --- a/math/superlu_mt/pkg-descr +++ b/math/superlu_mt/pkg-descr @@ -1,5 +1,5 @@ - SuperLU_MT (version 2.0) - ======================== + SuperLU_MT (version 3.1) + ======================== SuperLU_MT contains a set of subroutines to solve a sparse linear system A*X=B. It uses Gaussian elimination with partial pivoting (GEPP). @@ -8,12 +8,13 @@ preordering for sparsity is completely separate from the factorization. SuperLU_MT is a parallel extension to the serial SuperLU library. SuperLU_MT is implemented in ANSI C, with multithreading extension, -for example, using POSIX threads. Currently, only the LU factorization -routine, which is the most time-consuming part of the solution process, -is parallelized on machines with a shared address space. The other -routines, such as column preordering and the forward and back substitutions -are performed sequentially. This "alpha" release contains only -double-precision real data type. +for example, using POSIX threads or OpenMP. Currently, only the LU +factorization routine, which is the most time-consuming part of the +solution process, is parallelized on machines with a shared address space. +The other routines, such as column preordering and the forward and +back substitutions are performed sequentially. +The library provides functionality for both real and complex +matrices, in both single and double precision. Xiaoye S. Li, Lawrence Berkeley National Lab, xiaoye@nersc.gov James Demmel, Univ. of California Berkeley, demmel@cs.berkeley.edu diff --git a/math/superlu_mt/pkg-plist b/math/superlu_mt/pkg-plist index 49869c3cb563..98e432091f8a 100644 --- a/math/superlu_mt/pkg-plist +++ b/math/superlu_mt/pkg-plist @@ -1,16 +1,18 @@ include/superlu_mt/colamd.h -include/superlu_mt/pcsp_defs.h -include/superlu_mt/pdsp_defs.h -include/superlu_mt/pssp_defs.h include/superlu_mt/pxgstrf_synch.h -include/superlu_mt/pzsp_defs.h include/superlu_mt/slu_dcomplex.h include/superlu_mt/slu_mt_Cnames.h +include/superlu_mt/slu_mt_cdefs.h +include/superlu_mt/slu_mt_ddefs.h include/superlu_mt/slu_mt_machines.h +include/superlu_mt/slu_mt_sdefs.h include/superlu_mt/slu_mt_util.h +include/superlu_mt/slu_mt_zdefs.h include/superlu_mt/slu_scomplex.h include/superlu_mt/supermatrix.h -lib/libsuperlu_mt.a lib/libsuperlu_mt.so -lib/libsuperlu_mt.so.1 +lib/libsuperlu_mt_PTHREAD.a +lib/libsuperlu_mt_PTHREAD.so +lib/libsuperlu_mt_PTHREAD.so.3 %%PORTDOCS%%%%DOCSDIR%%/simax97.ps.gz +%%PORTDOCS%%%%DOCSDIR%%/ug.pdf