mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-02 06:03:50 +00:00
MUMPS, the MUltifrontal Massively Parallel sparse direct Solver, is the
fastest matrix solver available for FreeBSD. It requires a F90 compiler so it's built with gfortran, however care was taken to ensure it will work with g77 while a the default compiler is changed. PR: ports/98107 Submitted by: Pedro Giffuni <giffunip (at) asme.org>
This commit is contained in:
parent
d48c67b141
commit
0a44455f19
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=164274
@ -137,6 +137,7 @@
|
||||
SUBDIR += mprime
|
||||
SUBDIR += mtl
|
||||
SUBDIR += mtrxmath
|
||||
SUBDIR += mumps
|
||||
SUBDIR += mupad
|
||||
SUBDIR += muparser
|
||||
SUBDIR += naturalmath
|
||||
|
108
math/mumps/Makefile
Normal file
108
math/mumps/Makefile
Normal file
@ -0,0 +1,108 @@
|
||||
# New ports collection makefile for: MUMPS
|
||||
# Date created: 5 Mar 2006
|
||||
# Whom: Pedro Giffuni
|
||||
#
|
||||
# $FreeBSD$
|
||||
#
|
||||
|
||||
PORTNAME= mumps
|
||||
PORTVERSION= 4.6.2
|
||||
CATEGORIES= math
|
||||
MASTER_SITES= http://www.enseeiht.fr/apo/MUMPS/ \
|
||||
http://graal.ens-lyon.fr/MUMPS/
|
||||
DISTNAME= MUMPS_${PORTVERSION}
|
||||
|
||||
MAINTAINER= giffunip@asme.org
|
||||
COMMENT= MUltifrontal Massively Parallel sparse direct Solver
|
||||
|
||||
BUILD_DEPENDS= ${FC}:${PORTSDIR}/lang/gfortran
|
||||
.ifdef WITH_MPI
|
||||
BUILD_DEPENDS+= ${LOCALBASE}/mpich/include/mpif.h:${PORTSDIR}/net/mpich \
|
||||
${LOCALBASE}/lib/libscalapack.a:${PORTSDIR}/math/scalapack \
|
||||
${LOCALBASE}/lib/libblacs.a:${PORTSDIR}/math/blacs
|
||||
.endif
|
||||
.ifdef WITH_METIS
|
||||
BUILD_DEPENDS+= ${LOCALBASE}/lib/libmetis.a:${PORTSDIR}/math/metis
|
||||
.endif
|
||||
|
||||
#-----------------------------------------------------------------------
|
||||
|
||||
# WARNING: Non-serviceable parts inside, can break other ports
|
||||
# You may define these options/knobs:
|
||||
#
|
||||
# FFLAGS: Fortran compiler flags for gfortran
|
||||
# WITH_OPTIMIZED_FLAGS:Try to use agressive (non-CPU) FFLAGS
|
||||
# BLAS_LIBS: specify other version of BLAS
|
||||
# WITH_ATLAS: Use ATLAS instead of the regular BLAS
|
||||
# WITH_GFC_BLAS: BLAS was generated with gfortran, not g77
|
||||
# WITH_METIS: Add METIS ordering
|
||||
# WITH_MPI: Use mpich for the parallel version
|
||||
#-----------------------------------------------------------------------
|
||||
|
||||
USE_GCC= 4.1+
|
||||
WITH_FORTRAN= yes
|
||||
FC= ${LOCALBASE}/bin/gfortran41
|
||||
|
||||
.if defined(WITH_OPTIMIZED_FLAGS)
|
||||
FFLAGS+= -O3 -ffast-math -funroll-loops
|
||||
.endif
|
||||
|
||||
.ifndef WITH_GFC_BLAS # g77 compatibility
|
||||
FFLAGS+= -ff2c
|
||||
MAKE_ENV+= CDEFS=-DAdd__
|
||||
.endif
|
||||
|
||||
.ifdef WITH_ATLAS
|
||||
LIB_DEPENDS+= atlas.1:${PORTSDIR}/math/atlas
|
||||
BLAS_LIBS= -lptf77blas -latlas_r
|
||||
.else
|
||||
LIB_DEPENDS+= blas.1:${PORTSDIR}/math/blas
|
||||
BLAS_LIBS?= -lblas
|
||||
.endif
|
||||
|
||||
.ifdef WITH_METIS
|
||||
MAKE_ENV+= ORDERINGSF=-Dmetis
|
||||
.endif
|
||||
|
||||
.ifndef WITH_MPI
|
||||
PLIST_SUB+= WITH_LIBSEQ=""
|
||||
.else
|
||||
PLIST_SUB+= WITH_LIBSEQ="@comment "
|
||||
.endif
|
||||
PLIST_SUB+= MUMPSVERSION=${PORTVERSION}
|
||||
|
||||
post-patch:
|
||||
.ifdef WITH_MPI
|
||||
@${INSTALL_DATA} ${WRKSRC}/Make.inc/Makefile.inc.generic \
|
||||
${WRKSRC}/Makefile.inc
|
||||
.else
|
||||
@${INSTALL_DATA} ${WRKSRC}/Make.inc/Makefile.inc.generic.SEQ \
|
||||
${WRKSRC}/Makefile.inc
|
||||
.endif
|
||||
|
||||
pre-build:
|
||||
@${REINPLACE_CMD} -e 's+@CC@+${CC}+g ; s+@FC@+${FC}+g ; \
|
||||
s+@CFLAGS@+${CFLAGS}+g; \
|
||||
s+@FCFLAGS@+${FFLAGS}+g; \
|
||||
s+@PTHREAD_LIBS@+${PTHREAD_LIBS}+g; \
|
||||
s+@BLAS_LIBS@+${BLAS_LIBS}+ ; \
|
||||
s+@LOCALBASE@+${LOCALBASE}+g;' \
|
||||
${WRKSRC}/Makefile.inc
|
||||
.ifdef WITH_METIS
|
||||
@${REINPLACE_CMD} -e 's+#LMETIS+LMETIS+' ${WRKSRC}/Makefile.inc
|
||||
.endif
|
||||
|
||||
do-install:
|
||||
${INSTALL_DATA} ${WRKSRC}/include/*.h ${PREFIX}/include
|
||||
${INSTALL_DATA} ${WRKSRC}/lib/lib*.a ${PREFIX}/lib
|
||||
.ifndef WITH_MPI
|
||||
${INSTALL_DATA} ${WRKSRC}/libseq/libmpiseq.a ${PREFIX}/lib
|
||||
.endif
|
||||
.ifndef NOPORTDOCS
|
||||
@${MKDIR} ${DOCSDIR}
|
||||
${INSTALL_DATA} ${WRKSRC}/doc/userguide_${PORTVERSION}.pdf ${DOCSDIR}
|
||||
${INSTALL_DATA} ${WRKSRC}/doc/userguide_${PORTVERSION}.ps ${DOCSDIR}
|
||||
${GZIP_CMD} ${DOCSDIR}/userguide_${PORTVERSION}.ps
|
||||
.endif
|
||||
|
||||
.include <bsd.port.mk>
|
3
math/mumps/distinfo
Normal file
3
math/mumps/distinfo
Normal file
@ -0,0 +1,3 @@
|
||||
MD5 (MUMPS_4.6.2.tar.gz) = 26b27241a4b4c11d5534cd28a3daa2bd
|
||||
SHA256 (MUMPS_4.6.2.tar.gz) = e92cea3295e04fcc23937079a1916a9705462fa8e89f05261d02e205582eba13
|
||||
SIZE (MUMPS_4.6.2.tar.gz) = 2081479
|
86
math/mumps/files/patch-Make.inc+Makefile.inc.generic
Normal file
86
math/mumps/files/patch-Make.inc+Makefile.inc.generic
Normal file
@ -0,0 +1,86 @@
|
||||
--- Make.inc/Makefile.inc.generic.orig Fri Apr 14 08:00:50 2006
|
||||
+++ Make.inc/Makefile.inc.generic Fri May 26 10:28:02 2006
|
||||
@@ -39,20 +39,20 @@
|
||||
# Metis is now available as an internal ordering for MUMPS.
|
||||
|
||||
|
||||
-#LSCOTCHDIR = $(HOME)/JY/emilio/bin/generic
|
||||
+#LSCOTCHDIR = @LOCALBASE@/lib
|
||||
#LSCOTCH = -L$(LSCOTCHDIR) -lesmumps -lfax -lorder -lscotch -lsymbol -ldof -lgraph -lcommon -lm
|
||||
|
||||
LPORDDIR = ../PORD/lib/
|
||||
IPORD = -I../PORD/include/
|
||||
LPORD = -L$(LPORDDIR) -lpord
|
||||
|
||||
-#LMETISDIR = Directory containing Metis library
|
||||
+LMETISDIR = @LOCALBASE@/lib
|
||||
#IMETIS = # Metis doesn't need include files (Fortran interface avail.)
|
||||
#LMETIS = -L$(LMETISDIR) -lmetis
|
||||
|
||||
# Corresponding variables reused later
|
||||
#ORDERINGS = -Dmetis -Dpord
|
||||
-ORDERINGSF = -Dpord
|
||||
+ORDERINGSF += -Dpord
|
||||
ORDERINGSC = $(ORDERINGSF)
|
||||
LORDERINGS = $(LMETIS) $(LPORD) $(LSCOTCH)
|
||||
IORDERINGS = $(IMETIS) $(IPORD) $(ISCOTCH)
|
||||
@@ -66,11 +66,11 @@
|
||||
# RM : remove files
|
||||
RM = /bin/rm -f
|
||||
# CC : C compiler
|
||||
-CC = cc
|
||||
+CC = @CC@
|
||||
# FC : Fortran 90 compiler
|
||||
-FC = f90
|
||||
+FC = @FC@
|
||||
# FL : Fortran linker
|
||||
-FL = f90
|
||||
+FL = @FC@
|
||||
# AR : Archive object in a library
|
||||
AR = ar vr
|
||||
# RANLIB : generate index of an archive file
|
||||
@@ -79,13 +79,13 @@
|
||||
#RANLIB = echo
|
||||
|
||||
# SCALAP should define the SCALAPACK and BLACS libraries.
|
||||
-SCALAP = -lscalapack -lblacs
|
||||
+SCALAP = -L@LOCALBASE@/lib -lscalapack -lblacs -lblacsc -lblacsf77 -lblacs
|
||||
|
||||
# INCLUDE DIRECTORY FOR MPI
|
||||
-INCPAR = -I/usr/include
|
||||
+INCPAR = -I@LOCALBASE@/mpich/include
|
||||
|
||||
# LIBRARIES USED BY THE PARALLEL VERSION OF MUMPS: $(SCALAP) and MPI
|
||||
-LIBPAR = $(SCALAP) -L/usr/lib -lmpi
|
||||
+LIBPAR = $(SCALAP) -L@LOCALBASE@/mpich/lib -lfmpich -lmpich
|
||||
|
||||
# The parallel version is not concerned by the next two lines.
|
||||
# They are related to the sequential library provided by MUMPS,
|
||||
@@ -95,10 +95,10 @@
|
||||
|
||||
# DEFINE HERE YOUR BLAS LIBRARY
|
||||
|
||||
-LIBBLAS = -lblas
|
||||
+LIBBLAS = -L@LOCALBASE@/lib @BLAS_LIBS@
|
||||
|
||||
# DEFINE YOUR PTHREAD LIBRARY
|
||||
-LIBOTHERS = -lpthread
|
||||
+LIBOTHERS = @PTHREAD_LIBS@ -lg2c
|
||||
|
||||
# FORTRAN/C COMPATIBILITY:
|
||||
# Use:
|
||||
@@ -111,11 +111,11 @@
|
||||
# leave empty if your Fortran compiler does not change the symbols.
|
||||
#
|
||||
|
||||
-CDEFS = -DAdd_
|
||||
+CDEFS ?= -DAdd_
|
||||
|
||||
#COMPILER OPTIONS
|
||||
-OPTF = -O
|
||||
-OPTC = -O -I.
|
||||
+OPTF = @FCFLAGS@
|
||||
+OPTC = @CFLAGS@
|
||||
OPTL = -O
|
||||
|
||||
# CHOOSE BETWEEN USING THE SEQUENTIAL OR THE PARALLEL VERSION.
|
70
math/mumps/files/patch-Make.inc+Makefile.inc.generic.SEQ
Normal file
70
math/mumps/files/patch-Make.inc+Makefile.inc.generic.SEQ
Normal file
@ -0,0 +1,70 @@
|
||||
--- Make.inc/Makefile.inc.generic.SEQ.orig Fri Apr 14 08:00:50 2006
|
||||
+++ Make.inc/Makefile.inc.generic.SEQ Fri May 26 10:27:58 2006
|
||||
@@ -42,20 +42,20 @@
|
||||
# Metis is now available as an internal ordering for MUMPS.
|
||||
|
||||
|
||||
-#LSCOTCHDIR = $(HOME)/JY/emilio/bin/generic
|
||||
+#LSCOTCHDIR = @LOCALBASE@/lib
|
||||
#LSCOTCH = -L$(LSCOTCHDIR) -lesmumps -lfax -lorder -lscotch -lsymbol -ldof -lgraph -lcommon -lm
|
||||
|
||||
LPORDDIR = ../PORD/lib/
|
||||
IPORD = -I../PORD/include/
|
||||
LPORD = -L$(LPORDDIR) -lpord
|
||||
|
||||
-#LMETISDIR = Directory containing Metis library
|
||||
+LMETISDIR = @LOCALBASE@/lib
|
||||
#IMETIS = # Metis doesn't need include files (Fortran interface avail.)
|
||||
#LMETIS = -L$(LMETISDIR) -lmetis
|
||||
|
||||
# Corresponding variables reused later
|
||||
#ORDERINGS = -Dmetis -Dpord
|
||||
-ORDERINGSF = -Dpord
|
||||
+ORDERINGSF += -Dpord
|
||||
ORDERINGSC = $(ORDERINGSF)
|
||||
LORDERINGS = $(LMETIS) $(LPORD) $(LSCOTCH)
|
||||
IORDERINGS = $(IMETIS) $(IPORD) $(ISCOTCH)
|
||||
@@ -69,11 +69,11 @@
|
||||
# RM : remove files
|
||||
RM = /bin/rm -f
|
||||
# CC : C compiler
|
||||
-CC = cc
|
||||
+CC = @CC@
|
||||
# FC : Fortran 90 compiler
|
||||
-FC = f90
|
||||
+FC = @FC@
|
||||
# FL : Fortran linker
|
||||
-FL = f90
|
||||
+FL = @FC@
|
||||
# AR : Archive object in a library
|
||||
AR = ar vr
|
||||
# RANLIB : generate index of an archive file
|
||||
@@ -89,10 +89,10 @@
|
||||
|
||||
# DEFINE HERE YOUR BLAS LIBRARY
|
||||
|
||||
-LIBBLAS = -lblas
|
||||
+LIBBLAS = -L@LOCALBASE@/lib @BLAS_LIBS@
|
||||
|
||||
# DEFINE HERE YOUR PTHREAD LIBRARY
|
||||
-LIBOTHERS = -lpthread
|
||||
+LIBOTHERS = @PTHREAD_LIBS@ -lg2c
|
||||
|
||||
# FORTRAN/C COMPATIBILITY:
|
||||
# Use:
|
||||
@@ -105,12 +105,12 @@
|
||||
# leave empty if your Fortran compiler does not change the symbols.
|
||||
#
|
||||
|
||||
-CDEFS = -DAdd_
|
||||
+CDEFS ?= -DAdd_
|
||||
|
||||
#COMPILER OPTIONS
|
||||
|
||||
-OPTF = -O
|
||||
-OPTC = -O -I.
|
||||
+OPTF = @FCFLAGS@
|
||||
+OPTC = @CFLAGS@
|
||||
OPTL = -O
|
||||
|
||||
#Sequential:
|
16
math/mumps/pkg-descr
Normal file
16
math/mumps/pkg-descr
Normal file
@ -0,0 +1,16 @@
|
||||
MUMPS is a Distributed Multifrontal Solver (F90, MPI based) with Dynamic
|
||||
Distributed Scheduling to accomodate both numerical fill-in and multi-user
|
||||
environment.
|
||||
|
||||
- Solution of large linear systems with symmetric positive definite
|
||||
matrices; general symmetric matrices; general unsymmetric matrices.
|
||||
- Version for complex arithmetic.
|
||||
- Parallel factorization and solve phases (uniprocessor version also
|
||||
available).
|
||||
- Iterative refinement and backward error analysis.
|
||||
- Various matrix input formats: assembled format; distributed assembled
|
||||
format; elemental format.
|
||||
- Partial factorization and Schur complement matrix.
|
||||
- Several orderings interfaced : AMD, AMF, PORD, METIS
|
||||
|
||||
WWW: http://graal.ens-lyon.fr/MUMPS/
|
25
math/mumps/pkg-plist
Normal file
25
math/mumps/pkg-plist
Normal file
@ -0,0 +1,25 @@
|
||||
include/cmumps_c.h
|
||||
include/cmumps_prec.h
|
||||
include/cmumps_root.h
|
||||
include/cmumps_struc.h
|
||||
include/dmumps_c.h
|
||||
include/dmumps_prec.h
|
||||
include/dmumps_root.h
|
||||
include/dmumps_struc.h
|
||||
include/smumps_c.h
|
||||
include/smumps_prec.h
|
||||
include/smumps_root.h
|
||||
include/smumps_struc.h
|
||||
include/zmumps_c.h
|
||||
include/zmumps_prec.h
|
||||
include/zmumps_root.h
|
||||
include/zmumps_struc.h
|
||||
lib/libcmumps.a
|
||||
lib/libdmumps.a
|
||||
lib/libsmumps.a
|
||||
lib/libzmumps.a
|
||||
lib/libpord.a
|
||||
%%WITH_LIBSEQ%%lib/libmpiseq.a
|
||||
%%PORTDOCS%%%%DOCSDIR%%/userguide_%%MUMPSVERSION%%.pdf
|
||||
%%PORTDOCS%%%%DOCSDIR%%/userguide_%%MUMPSVERSION%%.ps.gz
|
||||
%%PORTDOCS%%@dirrm %%DOCSDIR%%
|
Loading…
Reference in New Issue
Block a user