From 90b7d4226f5f73092b80f6ff69ea4cf78c7f2e53 Mon Sep 17 00:00:00 2001 From: Thomas Witkowski <thomas.witkowski@gmx.de> Date: Mon, 9 Jun 2008 14:17:55 +0000 Subject: [PATCH] * Add PardisoSolver files and updated Makefile-system --- AMDiS/Makefile.in | 2 + AMDiS/bin/Makefile.am | 74 ++++++++++++++++++---- AMDiS/bin/Makefile.in | 122 +++++++++++++++++++++++++++---------- AMDiS/configure | 92 +++++++++++++++++++--------- AMDiS/configure.ac | 9 +++ AMDiS/src/CreatorMap.cc | 6 ++ AMDiS/src/PardisoSolver.cc | 10 +++ AMDiS/src/PardisoSolver.h | 112 ++++++++++++++++++++++++++++++++++ AMDiS/src/PardisoSolver.hh | 15 +++++ 9 files changed, 370 insertions(+), 72 deletions(-) create mode 100644 AMDiS/src/PardisoSolver.cc create mode 100644 AMDiS/src/PardisoSolver.h create mode 100644 AMDiS/src/PardisoSolver.hh diff --git a/AMDiS/Makefile.in b/AMDiS/Makefile.in index a5db8186..3768bc98 100644 --- a/AMDiS/Makefile.in +++ b/AMDiS/Makefile.in @@ -102,6 +102,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_MKL_FALSE = @ENABLE_MKL_FALSE@ +ENABLE_MKL_TRUE = @ENABLE_MKL_TRUE@ ENABLE_UMFPACK_FALSE = @ENABLE_UMFPACK_FALSE@ ENABLE_UMFPACK_TRUE = @ENABLE_UMFPACK_TRUE@ EXEEXT = @EXEEXT@ diff --git a/AMDiS/bin/Makefile.am b/AMDiS/bin/Makefile.am index 800f1260..5fed9ecd 100644 --- a/AMDiS/bin/Makefile.am +++ b/AMDiS/bin/Makefile.am @@ -33,6 +33,10 @@ if ENABLE_UMFPACK -I$(LIB_DIR)/UMFPACK/Include endif +if ENABLE_MKL + libamdis_la_CXXFLAGS += -DHAVE_MKL=1 +endif + INCLUDES = $(AMDIS_INCLUDES) $(PARALLEL_INCLUDES) if AMDIS_DEBUG @@ -128,11 +132,12 @@ $(SOURCE_DIR)/FixVec.h $(SOURCE_DIR)/FixVec.hh \ $(SOURCE_DIR)/FixVecConvert.h \ $(SOURCE_DIR)/Flag.h \ $(SOURCE_DIR)/Global.h \ -$(SOURCE_DIR)/GMResSolver.h \ $(SOURCE_DIR)/GMResSolver.hh \ -$(SOURCE_DIR)/GMResSolver2.h \ $(SOURCE_DIR)/GMResSolver2.hh \ +$(SOURCE_DIR)/GMResSolver.h $(SOURCE_DIR)/GMResSolver.hh \ +$(SOURCE_DIR)/GMResSolver2.h $(SOURCE_DIR)/GMResSolver2.hh \ $(SOURCE_DIR)/TFQMR.h \ $(SOURCE_DIR)/TFQMR.hh \ -$(SOURCE_DIR)/VecSymSolver.h \ $(SOURCE_DIR)/VecSymSolver.hh \ -$(SOURCE_DIR)/UmfPackSolver.h \ $(SOURCE_DIR)/UmfPackSolver.hh \ +$(SOURCE_DIR)/VecSymSolver.h $(SOURCE_DIR)/VecSymSolver.hh \ +$(SOURCE_DIR)/UmfPackSolver.h $(SOURCE_DIR)/UmfPackSolver.hh \ +$(SOURCE_DIR)/PardisoSolver.h $(SOURCE_DIR)/PardisoSolver.hh $(SOURCE_DIR)/PardisoSolver.cc \ $(SOURCE_DIR)/Lagrange.h $(SOURCE_DIR)/Line.h \ $(SOURCE_DIR)/MacroElement.h $(SOURCE_DIR)/MacroWriter.h \ $(SOURCE_DIR)/Markings.h $(SOURCE_DIR)/Markings.hh \ @@ -145,17 +150,62 @@ $(SOURCE_DIR)/Parameters.h \ $(SOURCE_DIR)/Parametric.h \ $(SOURCE_DIR)/Preconditioner.h \ $(SOURCE_DIR)/Quadrature.h \ -$(SOURCE_DIR)/RCNeighbourList.h $(SOURCE_DIRe)/RefinementManager.h $(SOURCE_DIR)/RefinementManager1d.h $(SOURCE_DIR)/RefinementManager2d.h $(SOURCE_DIR)/RefinementManager3d.h $(SOURCE_DIR)/TecPlotWriter.h $(SOURCE_DIR)/TecPlotWriter.hh $(SOURCE_DIR)/Tetrahedron.h \ -$(SOURCE_DIR)/Traverse.h $(SOURCE_DIR)/Triangle.h $(SOURCE_DIR)/NonLinSolver.h $(SOURCE_DIR)/NonLinSolver.hh $(SOURCE_DIR)/ProblemInstat.h $(SOURCE_DIR)/ProblemInstat.cc $(SOURCE_DIR)/ProblemTimeInterface.h $(SOURCE_DIR)/ProblemNonLin.h $(SOURCE_DIR)/ProblemNonLin.cc \ +$(SOURCE_DIR)/RCNeighbourList.h \ +$(SOURCE_DIRe)/RefinementManager.h \ +$(SOURCE_DIR)/RefinementManager1d.h $(SOURCE_DIR)/RefinementManager2d.h $(SOURCE_DIR)/RefinementManager3d.h \ +$(SOURCE_DIR)/TecPlotWriter.h $(SOURCE_DIR)/TecPlotWriter.hh \ +$(SOURCE_DIR)/Tetrahedron.h \ +$(SOURCE_DIR)/Traverse.h \ +$(SOURCE_DIR)/Triangle.h \ +$(SOURCE_DIR)/NonLinSolver.h $(SOURCE_DIR)/NonLinSolver.hh \ +$(SOURCE_DIR)/ProblemInstat.h $(SOURCE_DIR)/ProblemInstat.cc \ +$(SOURCE_DIR)/ProblemTimeInterface.h \ +$(SOURCE_DIR)/ProblemNonLin.h $(SOURCE_DIR)/ProblemNonLin.cc \ $(SOURCE_DIR)/NonLinUpdater.h $(SOURCE_DIR)/NonLinUpdater.cc \ -$(SOURCE_DIR)/Newton.h $(SOURCE_DIR)/Newton.hh $(SOURCE_DIR)/NewtonFS.h $(SOURCE_DIR)/NewtonFS.hh $(SOURCE_DIR)/GridWriter.h $(SOURCE_DIR)/GridWriter.hh $(SOURCE_DIR)/ValueWriter.h $(SOURCE_DIR)/QPsiPhi.cc $(SOURCE_DIR)/BasisFunction.cc $(SOURCE_DIR)/Boundary.cc \ -$(SOURCE_DIR)/CoarseningManager.cc $(SOURCE_DIR)/CoarseningManager1d.cc $(SOURCE_DIR)/CoarseningManager2d.cc $(SOURCE_DIR)/CoarseningManager3d.cc $(SOURCE_DIR)/demangle.cc $(SOURCE_DIR)/DOFAdmin.cc $(SOURCE_DIR)/DOFMatrix.cc $(SOURCE_DIR)/Element.cc $(SOURCE_DIR)/ElInfo1d.cc \ -$(SOURCE_DIR)/ElInfo2d.cc $(SOURCE_DIR)/ElInfo3d.cc $(SOURCE_DIR)/FiniteElemSpace.cc $(SOURCE_DIR)/FixVec.cc $(SOURCE_DIR)/Flag.cc $(SOURCE_DIR)/Global.cc $(SOURCE_DIR)/Lagrange.cc $(SOURCE_DIR)/Line.cc $(SOURCE_DIR)/MacroElement.cc $(SOURCE_DIR)/MacroWriter.cc $(SOURCE_DIR)/Parameters.cc \ -$(SOURCE_DIR)/Parametric.cc $(SOURCE_DIR)/Quadrature.cc $(SOURCE_DIR)/RCNeighbourList.cc $(SOURCE_DIR)/RefinementManager.cc $(SOURCE_DIR)/RefinementManager1d.cc $(SOURCE_DIR)/RefinementManager2d.cc $(SOURCE_DIR)/RefinementManager3d.cc $(SOURCE_DIR)/Tetrahedron.cc $(SOURCE_DIR)/Traverse.cc \ -$(SOURCE_DIR)/Triangle.cc $(SOURCE_DIR)/TecPlotWriter.cc $(SOURCE_DIR)/ValueWriter.cc $(SOURCE_DIR)/MemoryPool.h $(SOURCE_DIR)/MemoryPool.cc $(SOURCE_DIR)/MemoryManager.cc \ +$(SOURCE_DIR)/Newton.h $(SOURCE_DIR)/Newton.hh \ +$(SOURCE_DIR)/NewtonFS.h $(SOURCE_DIR)/NewtonFS.hh \ +$(SOURCE_DIR)/GridWriter.h $(SOURCE_DIR)/GridWriter.hh \ +$(SOURCE_DIR)/ValueWriter.h \ +$(SOURCE_DIR)/QPsiPhi.cc \ +$(SOURCE_DIR)/BasisFunction.cc \ +$(SOURCE_DIR)/Boundary.cc \ +$(SOURCE_DIR)/CoarseningManager.cc \ +$(SOURCE_DIR)/CoarseningManager1d.cc \ +$(SOURCE_DIR)/CoarseningManager2d.cc \ +$(SOURCE_DIR)/CoarseningManager3d.cc \ +$(SOURCE_DIR)/demangle.cc \ +$(SOURCE_DIR)/DOFAdmin.cc \ +$(SOURCE_DIR)/DOFMatrix.cc \ +$(SOURCE_DIR)/Element.cc \ +$(SOURCE_DIR)/ElInfo1d.cc $(SOURCE_DIR)/ElInfo2d.cc $(SOURCE_DIR)/ElInfo3d.cc \ +$(SOURCE_DIR)/FiniteElemSpace.cc \ +$(SOURCE_DIR)/FixVec.cc \ +$(SOURCE_DIR)/Flag.cc \ +$(SOURCE_DIR)/Global.cc \ +$(SOURCE_DIR)/Lagrange.cc \ +$(SOURCE_DIR)/Line.cc \ +$(SOURCE_DIR)/MacroElement.cc \ +$(SOURCE_DIR)/MacroWriter.cc \ +$(SOURCE_DIR)/Parameters.cc \ +$(SOURCE_DIR)/Parametric.cc \ +$(SOURCE_DIR)/Quadrature.cc \ +$(SOURCE_DIR)/RCNeighbourList.cc \ +$(SOURCE_DIR)/RefinementManager.cc \ +$(SOURCE_DIR)/RefinementManager1d.cc \ +$(SOURCE_DIR)/RefinementManager2d.cc \ +$(SOURCE_DIR)/RefinementManager3d.cc \ +$(SOURCE_DIR)/Tetrahedron.cc \ +$(SOURCE_DIR)/Traverse.cc \ +$(SOURCE_DIR)/Triangle.cc \ +$(SOURCE_DIR)/TecPlotWriter.cc \ +$(SOURCE_DIR)/ValueWriter.cc \ +$(SOURCE_DIR)/MemoryPool.h $(SOURCE_DIR)/MemoryPool.cc \ +$(SOURCE_DIR)/MemoryManager.cc \ $(SOURCE_DIR)/VtkWriter.h $(SOURCE_DIR)/VtkWriter.cc \ $(SOURCE_DIR)/DataCollector.h $(SOURCE_DIR)/DataCollector.cc \ -$(SOURCE_DIR)/ElementInfo.h $(SOURCE_DIR)/VertexInfo.h $(SOURCE_DIR)/PeriodicInfo.h \ +$(SOURCE_DIR)/ElementInfo.h \ +$(SOURCE_DIR)/VertexInfo.h \ +$(SOURCE_DIR)/PeriodicInfo.h \ $(SOURCE_DIR)/OpenMP.h diff --git a/AMDiS/bin/Makefile.in b/AMDiS/bin/Makefile.in index aa26c1ca..0b37740b 100644 --- a/AMDiS/bin/Makefile.in +++ b/AMDiS/bin/Makefile.in @@ -41,8 +41,9 @@ host_triplet = @host@ @ENABLE_UMFPACK_TRUE@ -I$(LIB_DIR)/AMD/Include \ @ENABLE_UMFPACK_TRUE@ -I$(LIB_DIR)/UMFPACK/Include -@AMDIS_DEBUG_TRUE@am__append_3 = -g -O0 -Wall -DDEBUG=1 $(OPENMP_FLAG) -ftemplate-depth-30 $(INCLUDES) #-pedantic -@AMDIS_DEBUG_FALSE@am__append_4 = -O2 -Wall -DDEBUG=0 $(OPENMP_FLAG) -ftemplate-depth-30 $(INCLUDES) #-pedantic +@ENABLE_MKL_TRUE@am__append_3 = -DHAVE_MKL=1 +@AMDIS_DEBUG_TRUE@am__append_4 = -g -O0 -Wall -DDEBUG=1 $(OPENMP_FLAG) -ftemplate-depth-30 $(INCLUDES) #-pedantic +@AMDIS_DEBUG_FALSE@am__append_5 = -O2 -Wall -DDEBUG=0 $(OPENMP_FLAG) -ftemplate-depth-30 $(INCLUDES) #-pedantic subdir = bin DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -168,21 +169,23 @@ am__libamdis_la_SOURCES_DIST = $(PARALLEL_DIR)/ConditionalEstimator.h \ $(SOURCE_DIR)/Estimator.cc $(SOURCE_DIR)/FiniteElemSpace.h \ $(SOURCE_DIR)/FixVec.h $(SOURCE_DIR)/FixVec.hh \ $(SOURCE_DIR)/FixVecConvert.h $(SOURCE_DIR)/Flag.h \ - $(SOURCE_DIR)/Global.h $(SOURCE_DIR)/GMResSolver.h \ \ + $(SOURCE_DIR)/Global.h $(SOURCE_DIR)/GMResSolver.h \ $(SOURCE_DIR)/GMResSolver.hh $(SOURCE_DIR)/GMResSolver2.h \ - $(SOURCE_DIR)/GMResSolver2.hh $(SOURCE_DIR)/TFQMR.h \ + $(SOURCE_DIR)/GMResSolver2.hh $(SOURCE_DIR)/TFQMR.h \ \ $(SOURCE_DIR)/TFQMR.hh $(SOURCE_DIR)/VecSymSolver.h \ $(SOURCE_DIR)/VecSymSolver.hh $(SOURCE_DIR)/UmfPackSolver.h \ - $(SOURCE_DIR)/UmfPackSolver.hh $(SOURCE_DIR)/Lagrange.h \ - $(SOURCE_DIR)/Line.h $(SOURCE_DIR)/MacroElement.h \ - $(SOURCE_DIR)/MacroWriter.h $(SOURCE_DIR)/Markings.h \ - $(SOURCE_DIR)/Markings.hh $(SOURCE_DIR)/MemoryManager.h \ - $(SOURCE_DIR)/Mesh.h $(SOURCE_DIR)/ODirSolver.h \ - $(SOURCE_DIR)/ODirSolver.hh $(SOURCE_DIR)/OEMSolver.h \ - $(SOURCE_DIR)/OEMSolver.hh $(SOURCE_DIR)/OResSolver.h \ - $(SOURCE_DIR)/OResSolver.hh $(SOURCE_DIR)/Parameters.h \ - $(SOURCE_DIR)/Parametric.h $(SOURCE_DIR)/Preconditioner.h \ - $(SOURCE_DIR)/Quadrature.h $(SOURCE_DIR)/RCNeighbourList.h \ + $(SOURCE_DIR)/UmfPackSolver.hh $(SOURCE_DIR)/PardisoSolver.h \ + $(SOURCE_DIR)/PardisoSolver.hh $(SOURCE_DIR)/PardisoSolver.cc \ + $(SOURCE_DIR)/Lagrange.h $(SOURCE_DIR)/Line.h \ + $(SOURCE_DIR)/MacroElement.h $(SOURCE_DIR)/MacroWriter.h \ + $(SOURCE_DIR)/Markings.h $(SOURCE_DIR)/Markings.hh \ + $(SOURCE_DIR)/MemoryManager.h $(SOURCE_DIR)/Mesh.h \ + $(SOURCE_DIR)/ODirSolver.h $(SOURCE_DIR)/ODirSolver.hh \ + $(SOURCE_DIR)/OEMSolver.h $(SOURCE_DIR)/OEMSolver.hh \ + $(SOURCE_DIR)/OResSolver.h $(SOURCE_DIR)/OResSolver.hh \ + $(SOURCE_DIR)/Parameters.h $(SOURCE_DIR)/Parametric.h \ + $(SOURCE_DIR)/Preconditioner.h $(SOURCE_DIR)/Quadrature.h \ + $(SOURCE_DIR)/RCNeighbourList.h \ $(SOURCE_DIRe)/RefinementManager.h \ $(SOURCE_DIR)/RefinementManager1d.h \ $(SOURCE_DIR)/RefinementManager2d.h \ @@ -260,10 +263,10 @@ am_libamdis_la_OBJECTS = $(am__objects_1) \ libamdis_la-ILUPreconditioner.lo \ libamdis_la-ILUTPreconditioner.lo libamdis_la-BFGS_Precond.lo \ libamdis_la-DOFVector.lo libamdis_la-Estimator.lo \ - libamdis_la-ProblemInstat.lo libamdis_la-ProblemNonLin.lo \ - libamdis_la-NonLinUpdater.lo libamdis_la-QPsiPhi.lo \ - libamdis_la-BasisFunction.lo libamdis_la-Boundary.lo \ - libamdis_la-CoarseningManager.lo \ + libamdis_la-PardisoSolver.lo libamdis_la-ProblemInstat.lo \ + libamdis_la-ProblemNonLin.lo libamdis_la-NonLinUpdater.lo \ + libamdis_la-QPsiPhi.lo libamdis_la-BasisFunction.lo \ + libamdis_la-Boundary.lo libamdis_la-CoarseningManager.lo \ libamdis_la-CoarseningManager1d.lo \ libamdis_la-CoarseningManager2d.lo \ libamdis_la-CoarseningManager3d.lo libamdis_la-demangle.lo \ @@ -355,6 +358,8 @@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ +ENABLE_MKL_FALSE = @ENABLE_MKL_FALSE@ +ENABLE_MKL_TRUE = @ENABLE_MKL_TRUE@ ENABLE_UMFPACK_FALSE = @ENABLE_UMFPACK_FALSE@ ENABLE_UMFPACK_TRUE = @ENABLE_UMFPACK_TRUE@ EXEEXT = @EXEEXT@ @@ -454,7 +459,8 @@ AMDIS_INCLUDES = -I$(SOURCE_DIR) $(am__append_2) @USE_PARALLEL_AMDIS_FALSE@PARALLEL_INCLUDES = @USE_PARALLEL_AMDIS_TRUE@PARALLEL_INCLUDES = -I$(MPI_DIR)/include -I$(PARMETIS_DIR) -libamdis_la_CXXFLAGS = $(am__append_1) $(am__append_3) $(am__append_4) +libamdis_la_CXXFLAGS = $(am__append_1) $(am__append_3) $(am__append_4) \ + $(am__append_5) INCLUDES = $(AMDIS_INCLUDES) $(PARALLEL_INCLUDES) libamdis_la_SOURCES = \ $(PARALLEL_AMDIS_SOURCES) \ @@ -542,11 +548,12 @@ $(SOURCE_DIR)/FixVec.h $(SOURCE_DIR)/FixVec.hh \ $(SOURCE_DIR)/FixVecConvert.h \ $(SOURCE_DIR)/Flag.h \ $(SOURCE_DIR)/Global.h \ -$(SOURCE_DIR)/GMResSolver.h \ $(SOURCE_DIR)/GMResSolver.hh \ -$(SOURCE_DIR)/GMResSolver2.h \ $(SOURCE_DIR)/GMResSolver2.hh \ +$(SOURCE_DIR)/GMResSolver.h $(SOURCE_DIR)/GMResSolver.hh \ +$(SOURCE_DIR)/GMResSolver2.h $(SOURCE_DIR)/GMResSolver2.hh \ $(SOURCE_DIR)/TFQMR.h \ $(SOURCE_DIR)/TFQMR.hh \ -$(SOURCE_DIR)/VecSymSolver.h \ $(SOURCE_DIR)/VecSymSolver.hh \ -$(SOURCE_DIR)/UmfPackSolver.h \ $(SOURCE_DIR)/UmfPackSolver.hh \ +$(SOURCE_DIR)/VecSymSolver.h $(SOURCE_DIR)/VecSymSolver.hh \ +$(SOURCE_DIR)/UmfPackSolver.h $(SOURCE_DIR)/UmfPackSolver.hh \ +$(SOURCE_DIR)/PardisoSolver.h $(SOURCE_DIR)/PardisoSolver.hh $(SOURCE_DIR)/PardisoSolver.cc \ $(SOURCE_DIR)/Lagrange.h $(SOURCE_DIR)/Line.h \ $(SOURCE_DIR)/MacroElement.h $(SOURCE_DIR)/MacroWriter.h \ $(SOURCE_DIR)/Markings.h $(SOURCE_DIR)/Markings.hh \ @@ -559,17 +566,62 @@ $(SOURCE_DIR)/Parameters.h \ $(SOURCE_DIR)/Parametric.h \ $(SOURCE_DIR)/Preconditioner.h \ $(SOURCE_DIR)/Quadrature.h \ -$(SOURCE_DIR)/RCNeighbourList.h $(SOURCE_DIRe)/RefinementManager.h $(SOURCE_DIR)/RefinementManager1d.h $(SOURCE_DIR)/RefinementManager2d.h $(SOURCE_DIR)/RefinementManager3d.h $(SOURCE_DIR)/TecPlotWriter.h $(SOURCE_DIR)/TecPlotWriter.hh $(SOURCE_DIR)/Tetrahedron.h \ -$(SOURCE_DIR)/Traverse.h $(SOURCE_DIR)/Triangle.h $(SOURCE_DIR)/NonLinSolver.h $(SOURCE_DIR)/NonLinSolver.hh $(SOURCE_DIR)/ProblemInstat.h $(SOURCE_DIR)/ProblemInstat.cc $(SOURCE_DIR)/ProblemTimeInterface.h $(SOURCE_DIR)/ProblemNonLin.h $(SOURCE_DIR)/ProblemNonLin.cc \ +$(SOURCE_DIR)/RCNeighbourList.h \ +$(SOURCE_DIRe)/RefinementManager.h \ +$(SOURCE_DIR)/RefinementManager1d.h $(SOURCE_DIR)/RefinementManager2d.h $(SOURCE_DIR)/RefinementManager3d.h \ +$(SOURCE_DIR)/TecPlotWriter.h $(SOURCE_DIR)/TecPlotWriter.hh \ +$(SOURCE_DIR)/Tetrahedron.h \ +$(SOURCE_DIR)/Traverse.h \ +$(SOURCE_DIR)/Triangle.h \ +$(SOURCE_DIR)/NonLinSolver.h $(SOURCE_DIR)/NonLinSolver.hh \ +$(SOURCE_DIR)/ProblemInstat.h $(SOURCE_DIR)/ProblemInstat.cc \ +$(SOURCE_DIR)/ProblemTimeInterface.h \ +$(SOURCE_DIR)/ProblemNonLin.h $(SOURCE_DIR)/ProblemNonLin.cc \ $(SOURCE_DIR)/NonLinUpdater.h $(SOURCE_DIR)/NonLinUpdater.cc \ -$(SOURCE_DIR)/Newton.h $(SOURCE_DIR)/Newton.hh $(SOURCE_DIR)/NewtonFS.h $(SOURCE_DIR)/NewtonFS.hh $(SOURCE_DIR)/GridWriter.h $(SOURCE_DIR)/GridWriter.hh $(SOURCE_DIR)/ValueWriter.h $(SOURCE_DIR)/QPsiPhi.cc $(SOURCE_DIR)/BasisFunction.cc $(SOURCE_DIR)/Boundary.cc \ -$(SOURCE_DIR)/CoarseningManager.cc $(SOURCE_DIR)/CoarseningManager1d.cc $(SOURCE_DIR)/CoarseningManager2d.cc $(SOURCE_DIR)/CoarseningManager3d.cc $(SOURCE_DIR)/demangle.cc $(SOURCE_DIR)/DOFAdmin.cc $(SOURCE_DIR)/DOFMatrix.cc $(SOURCE_DIR)/Element.cc $(SOURCE_DIR)/ElInfo1d.cc \ -$(SOURCE_DIR)/ElInfo2d.cc $(SOURCE_DIR)/ElInfo3d.cc $(SOURCE_DIR)/FiniteElemSpace.cc $(SOURCE_DIR)/FixVec.cc $(SOURCE_DIR)/Flag.cc $(SOURCE_DIR)/Global.cc $(SOURCE_DIR)/Lagrange.cc $(SOURCE_DIR)/Line.cc $(SOURCE_DIR)/MacroElement.cc $(SOURCE_DIR)/MacroWriter.cc $(SOURCE_DIR)/Parameters.cc \ -$(SOURCE_DIR)/Parametric.cc $(SOURCE_DIR)/Quadrature.cc $(SOURCE_DIR)/RCNeighbourList.cc $(SOURCE_DIR)/RefinementManager.cc $(SOURCE_DIR)/RefinementManager1d.cc $(SOURCE_DIR)/RefinementManager2d.cc $(SOURCE_DIR)/RefinementManager3d.cc $(SOURCE_DIR)/Tetrahedron.cc $(SOURCE_DIR)/Traverse.cc \ -$(SOURCE_DIR)/Triangle.cc $(SOURCE_DIR)/TecPlotWriter.cc $(SOURCE_DIR)/ValueWriter.cc $(SOURCE_DIR)/MemoryPool.h $(SOURCE_DIR)/MemoryPool.cc $(SOURCE_DIR)/MemoryManager.cc \ +$(SOURCE_DIR)/Newton.h $(SOURCE_DIR)/Newton.hh \ +$(SOURCE_DIR)/NewtonFS.h $(SOURCE_DIR)/NewtonFS.hh \ +$(SOURCE_DIR)/GridWriter.h $(SOURCE_DIR)/GridWriter.hh \ +$(SOURCE_DIR)/ValueWriter.h \ +$(SOURCE_DIR)/QPsiPhi.cc \ +$(SOURCE_DIR)/BasisFunction.cc \ +$(SOURCE_DIR)/Boundary.cc \ +$(SOURCE_DIR)/CoarseningManager.cc \ +$(SOURCE_DIR)/CoarseningManager1d.cc \ +$(SOURCE_DIR)/CoarseningManager2d.cc \ +$(SOURCE_DIR)/CoarseningManager3d.cc \ +$(SOURCE_DIR)/demangle.cc \ +$(SOURCE_DIR)/DOFAdmin.cc \ +$(SOURCE_DIR)/DOFMatrix.cc \ +$(SOURCE_DIR)/Element.cc \ +$(SOURCE_DIR)/ElInfo1d.cc $(SOURCE_DIR)/ElInfo2d.cc $(SOURCE_DIR)/ElInfo3d.cc \ +$(SOURCE_DIR)/FiniteElemSpace.cc \ +$(SOURCE_DIR)/FixVec.cc \ +$(SOURCE_DIR)/Flag.cc \ +$(SOURCE_DIR)/Global.cc \ +$(SOURCE_DIR)/Lagrange.cc \ +$(SOURCE_DIR)/Line.cc \ +$(SOURCE_DIR)/MacroElement.cc \ +$(SOURCE_DIR)/MacroWriter.cc \ +$(SOURCE_DIR)/Parameters.cc \ +$(SOURCE_DIR)/Parametric.cc \ +$(SOURCE_DIR)/Quadrature.cc \ +$(SOURCE_DIR)/RCNeighbourList.cc \ +$(SOURCE_DIR)/RefinementManager.cc \ +$(SOURCE_DIR)/RefinementManager1d.cc \ +$(SOURCE_DIR)/RefinementManager2d.cc \ +$(SOURCE_DIR)/RefinementManager3d.cc \ +$(SOURCE_DIR)/Tetrahedron.cc \ +$(SOURCE_DIR)/Traverse.cc \ +$(SOURCE_DIR)/Triangle.cc \ +$(SOURCE_DIR)/TecPlotWriter.cc \ +$(SOURCE_DIR)/ValueWriter.cc \ +$(SOURCE_DIR)/MemoryPool.h $(SOURCE_DIR)/MemoryPool.cc \ +$(SOURCE_DIR)/MemoryManager.cc \ $(SOURCE_DIR)/VtkWriter.h $(SOURCE_DIR)/VtkWriter.cc \ $(SOURCE_DIR)/DataCollector.h $(SOURCE_DIR)/DataCollector.cc \ -$(SOURCE_DIR)/ElementInfo.h $(SOURCE_DIR)/VertexInfo.h $(SOURCE_DIR)/PeriodicInfo.h \ +$(SOURCE_DIR)/ElementInfo.h \ +$(SOURCE_DIR)/VertexInfo.h \ +$(SOURCE_DIR)/PeriodicInfo.h \ $(SOURCE_DIR)/OpenMP.h COMPOSITE_SOURCE_DIR = ../compositeFEM/src @@ -733,6 +785,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-ParallelProblem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-Parameters.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-Parametric.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-PardisoSolver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-PeriodicBC.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-ProblemInstat.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libamdis_la-ProblemInterpolScal.Plo@am__quote@ @@ -1183,6 +1236,13 @@ libamdis_la-Estimator.lo: $(SOURCE_DIR)/Estimator.cc @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libamdis_la_CXXFLAGS) $(CXXFLAGS) -c -o libamdis_la-Estimator.lo `test -f '$(SOURCE_DIR)/Estimator.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/Estimator.cc +libamdis_la-PardisoSolver.lo: $(SOURCE_DIR)/PardisoSolver.cc +@am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libamdis_la_CXXFLAGS) $(CXXFLAGS) -MT libamdis_la-PardisoSolver.lo -MD -MP -MF "$(DEPDIR)/libamdis_la-PardisoSolver.Tpo" -c -o libamdis_la-PardisoSolver.lo `test -f '$(SOURCE_DIR)/PardisoSolver.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/PardisoSolver.cc; \ +@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libamdis_la-PardisoSolver.Tpo" "$(DEPDIR)/libamdis_la-PardisoSolver.Plo"; else rm -f "$(DEPDIR)/libamdis_la-PardisoSolver.Tpo"; exit 1; fi +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(SOURCE_DIR)/PardisoSolver.cc' object='libamdis_la-PardisoSolver.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libamdis_la_CXXFLAGS) $(CXXFLAGS) -c -o libamdis_la-PardisoSolver.lo `test -f '$(SOURCE_DIR)/PardisoSolver.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/PardisoSolver.cc + libamdis_la-ProblemInstat.lo: $(SOURCE_DIR)/ProblemInstat.cc @am__fastdepCXX_TRUE@ if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libamdis_la_CXXFLAGS) $(CXXFLAGS) -MT libamdis_la-ProblemInstat.lo -MD -MP -MF "$(DEPDIR)/libamdis_la-ProblemInstat.Tpo" -c -o libamdis_la-ProblemInstat.lo `test -f '$(SOURCE_DIR)/ProblemInstat.cc' || echo '$(srcdir)/'`$(SOURCE_DIR)/ProblemInstat.cc; \ @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/libamdis_la-ProblemInstat.Tpo" "$(DEPDIR)/libamdis_la-ProblemInstat.Plo"; else rm -f "$(DEPDIR)/libamdis_la-ProblemInstat.Tpo"; exit 1; fi diff --git a/AMDiS/configure b/AMDiS/configure index d708ac39..f825ce09 100755 --- a/AMDiS/configure +++ b/AMDiS/configure @@ -462,7 +462,7 @@ ac_includes_default="\ # include <unistd.h> #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT AMDIS_DEBUG_TRUE AMDIS_DEBUG_FALSE CXX CC AMDIS_INTEL_TRUE AMDIS_INTEL_FALSE AMDIS_OPENMP_TRUE AMDIS_OPENMP_FALSE OPENMP_FLAG MPI_DIR USE_PARALLEL_AMDIS_TRUE USE_PARALLEL_AMDIS_FALSE ENABLE_UMFPACK_TRUE ENABLE_UMFPACK_FALSE CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os SED EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT AMDIS_DEBUG_TRUE AMDIS_DEBUG_FALSE CXX CC AMDIS_INTEL_TRUE AMDIS_INTEL_FALSE AMDIS_OPENMP_TRUE AMDIS_OPENMP_FALSE OPENMP_FLAG MPI_DIR USE_PARALLEL_AMDIS_TRUE USE_PARALLEL_AMDIS_FALSE ENABLE_UMFPACK_TRUE ENABLE_UMFPACK_FALSE ENABLE_MKL_TRUE ENABLE_MKL_FALSE CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE build build_cpu build_vendor build_os host host_cpu host_vendor host_os SED EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -1029,6 +1029,7 @@ Optional Features: --enable-openmp Turn on support for the Intel compiler --enable-parmetis Compile with the ParMetis library --enable-umfpack Compile with the UMFPACK direct solver library + --enable-mkl Compile with the Intel MKL library --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared[=PKGS] @@ -2122,6 +2123,30 @@ else fi +# Check whether --enable-mkl or --disable-mkl was given. +if test "${enable_mkl+set}" = set; then + enableval="$enable_mkl" + case "${enableval}" in + yes) mkl=true ;; + no) mkl=false ;; + *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-mkl" >&5 +echo "$as_me: error: bad value ${enableval} for --enable-mkl" >&2;} + { (exit 1); exit 1; }; } ;; + esac +else + mkl=false +fi; + + +if test $mkl = true; then + ENABLE_MKL_TRUE= + ENABLE_MKL_FALSE='#' +else + ENABLE_MKL_TRUE='#' + ENABLE_MKL_FALSE= +fi + + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -4312,7 +4337,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 4315 "configure"' > conftest.$ac_ext + echo '#line 4340 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -5447,7 +5472,7 @@ fi # Provide some information about the compiler. -echo "$as_me:5450:" \ +echo "$as_me:5475:" \ "checking for Fortran 77 compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 @@ -6510,11 +6535,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:6513: $lt_compile\"" >&5) + (eval echo "\"\$as_me:6538: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:6517: \$? = $ac_status" >&5 + echo "$as_me:6542: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -6778,11 +6803,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:6781: $lt_compile\"" >&5) + (eval echo "\"\$as_me:6806: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:6785: \$? = $ac_status" >&5 + echo "$as_me:6810: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -6882,11 +6907,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:6885: $lt_compile\"" >&5) + (eval echo "\"\$as_me:6910: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:6889: \$? = $ac_status" >&5 + echo "$as_me:6914: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -8351,7 +8376,7 @@ linux*) libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) - echo '#line 8354 "configure"' > conftest.$ac_ext + echo '#line 8379 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -9248,7 +9273,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 9251 "configure" +#line 9276 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -9348,7 +9373,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 9351 "configure" +#line 9376 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11691,11 +11716,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:11694: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11719: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:11698: \$? = $ac_status" >&5 + echo "$as_me:11723: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -11795,11 +11820,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:11798: $lt_compile\"" >&5) + (eval echo "\"\$as_me:11823: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:11802: \$? = $ac_status" >&5 + echo "$as_me:11827: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -12331,7 +12356,7 @@ linux*) libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) - echo '#line 12334 "configure"' > conftest.$ac_ext + echo '#line 12359 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -13389,11 +13414,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13392: $lt_compile\"" >&5) + (eval echo "\"\$as_me:13417: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:13396: \$? = $ac_status" >&5 + echo "$as_me:13421: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -13493,11 +13518,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13496: $lt_compile\"" >&5) + (eval echo "\"\$as_me:13521: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:13500: \$? = $ac_status" >&5 + echo "$as_me:13525: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -14942,7 +14967,7 @@ linux*) libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) - echo '#line 14945 "configure"' > conftest.$ac_ext + echo '#line 14970 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -15720,11 +15745,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15723: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15748: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15727: \$? = $ac_status" >&5 + echo "$as_me:15752: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -15988,11 +16013,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15991: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16016: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15995: \$? = $ac_status" >&5 + echo "$as_me:16020: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -16092,11 +16117,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16095: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16120: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:16099: \$? = $ac_status" >&5 + echo "$as_me:16124: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -17561,7 +17586,7 @@ linux*) libsuff= case "$host_cpu" in x86_64*|s390x*|powerpc64*) - echo '#line 17564 "configure"' > conftest.$ac_ext + echo '#line 17589 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -18952,6 +18977,13 @@ echo "$as_me: error: conditional \"ENABLE_UMFPACK\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi +if test -z "${ENABLE_MKL_TRUE}" && test -z "${ENABLE_MKL_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"ENABLE_MKL\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"ENABLE_MKL\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 @@ -19539,6 +19571,8 @@ s,@USE_PARALLEL_AMDIS_TRUE@,$USE_PARALLEL_AMDIS_TRUE,;t t s,@USE_PARALLEL_AMDIS_FALSE@,$USE_PARALLEL_AMDIS_FALSE,;t t s,@ENABLE_UMFPACK_TRUE@,$ENABLE_UMFPACK_TRUE,;t t s,@ENABLE_UMFPACK_FALSE@,$ENABLE_UMFPACK_FALSE,;t t +s,@ENABLE_MKL_TRUE@,$ENABLE_MKL_TRUE,;t t +s,@ENABLE_MKL_FALSE@,$ENABLE_MKL_FALSE,;t t s,@CFLAGS@,$CFLAGS,;t t s,@LDFLAGS@,$LDFLAGS,;t t s,@CPPFLAGS@,$CPPFLAGS,;t t diff --git a/AMDiS/configure.ac b/AMDiS/configure.ac index de4166ec..f05d120a 100644 --- a/AMDiS/configure.ac +++ b/AMDiS/configure.ac @@ -72,6 +72,15 @@ AC_ARG_ENABLE(umfpack, esac],[umfpack=false]) AM_CONDITIONAL(ENABLE_UMFPACK, test $umfpack = true) +AC_ARG_ENABLE(mkl, + [ --enable-mkl Compile with the Intel MKL library], + [case "${enableval}" in + yes) mkl=true ;; + no) mkl=false ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-mkl) ;; + esac],[mkl=false]) +AM_CONDITIONAL(ENABLE_MKL, test $mkl = true) + AC_PROG_CC AC_PROG_CXX AC_PROG_LIBTOOL diff --git a/AMDiS/src/CreatorMap.cc b/AMDiS/src/CreatorMap.cc index 1d662299..e74bdefd 100644 --- a/AMDiS/src/CreatorMap.cc +++ b/AMDiS/src/CreatorMap.cc @@ -26,6 +26,7 @@ #include "TFQMR.h" #include "VecSymSolver.h" #include "UmfPackSolver.h" +#include "PardisoSolver.h" namespace AMDiS { @@ -158,6 +159,11 @@ namespace AMDiS { creator = NEW UmfPackSolver<SystemVector>::Creator; addCreator("umfpack", creator); #endif + +#ifdef HAVE_MKL + creator = NEW PardisoSolver<SystemVector>::Creator; + addCreator("pardiso", creator); +#endif } diff --git a/AMDiS/src/PardisoSolver.cc b/AMDiS/src/PardisoSolver.cc new file mode 100644 index 00000000..a6a79b22 --- /dev/null +++ b/AMDiS/src/PardisoSolver.cc @@ -0,0 +1,10 @@ +#include "PardisoSolver.h" + +namespace AMDiS { + + int UmfPackSolver<SystemVector>::solveSystem(MatVecMultiplier<SystemVector> *matVec, + SystemVector *x, SystemVector *b) + { + return(1); + } +} diff --git a/AMDiS/src/PardisoSolver.h b/AMDiS/src/PardisoSolver.h new file mode 100644 index 00000000..f23673fa --- /dev/null +++ b/AMDiS/src/PardisoSolver.h @@ -0,0 +1,112 @@ +// ============================================================================ +// == == +// == AMDiS - Adaptive multidimensional simulations == +// == == +// ============================================================================ +// == == +// == crystal growth group == +// == == +// == Stiftung caesar == +// == Ludwig-Erhard-Allee 2 == +// == 53175 Bonn == +// == germany == +// == == +// ============================================================================ +// == == +// == http://www.caesar.de/cg/AMDiS == +// == == +// ============================================================================ + +/** \file PardisoSolver.h */ + +#ifndef AMDIS_PARDISOSOLVER_H +#define AMDIS_PARDISOSOLVER_H + +#ifdef HAVE_MKL + +#include "OEMSolver.h" +#include "MemoryManager.h" + +namespace AMDiS { + + // ============================================================================ + // ===== class PardisoSolver ================================================== + // ============================================================================ + + /** + * \ingroup Solver + * + * \brief + * Wrapper for the external Intel MKL Pardiso solver + * + * This is a direct solver for large sparse matrices. + */ + template<typename VectorType> + class PardisoSolver : public OEMSolver<VectorType> + { + public: + MEMORY_MANAGED(PardisoSolver<VectorType>); + + /** \brief + * Creator class used in the OEMSolverMap. + */ + class Creator : public OEMSolverCreator<VectorType> + { + public: + MEMORY_MANAGED(Creator); + + virtual ~Creator() {}; + + /** \brief + * Returns a new UmfPackSolver object. + */ + OEMSolver<VectorType>* create() { + return NEW PardisoSolver<VectorType>(this->name); + }; + }; + + /** \brief + * constructor + */ + PardisoSolver(::std::string name); + + /** \brief + * destructor + */ + ~PardisoSolver(); + protected: + /** \brief + * Implements OEMSolver<VectorType>::init(). + */ + void init() { + p = this->vectorCreator->create(); + r = this->vectorCreator->create(); + }; + + /** \brief + * Implements OEMSolver<VectorType>::exit(). + */ + void exit() { + this->vectorCreator->free(p); + this->vectorCreator->free(r); + }; + + /** \brief + * Implements OEMSolver<VectorType>::solve(). + */ + int solveSystem(MatVecMultiplier<VectorType> *mv, VectorType *x, VectorType *b); + + private: + /** \brief + * These vectors are justed to calculate the final residual of the solution. + */ + VectorType *r, *p; + }; + +} + +#include "PardisoSolver.hh" + +#endif // HAVE_MKL + +#endif // AMDIS_PARDISOSOLVER_H diff --git a/AMDiS/src/PardisoSolver.hh b/AMDiS/src/PardisoSolver.hh new file mode 100644 index 00000000..3baad421 --- /dev/null +++ b/AMDiS/src/PardisoSolver.hh @@ -0,0 +1,15 @@ +#include "PardisoSolver.h" + +namespace AMDiS { + + template<typename VectorType> + PardisoSolver<VectorType>::PardisoSolver(::std::string name) + : OEMSolver<VectorType>(name) + {} + + template<typename VectorType> + PardisoSolver<VectorType>::~PardisoSolver() + {} + +} + -- GitLab