1
0
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:
Thierry Thomas 2006-06-03 12:34:09 +00:00
parent d48c67b141
commit 0a44455f19
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=164274
7 changed files with 309 additions and 0 deletions

View File

@ -137,6 +137,7 @@
SUBDIR += mprime
SUBDIR += mtl
SUBDIR += mtrxmath
SUBDIR += mumps
SUBDIR += mupad
SUBDIR += muparser
SUBDIR += naturalmath

108
math/mumps/Makefile Normal file
View 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
View 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

View 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.

View 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
View 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
View 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%%