[cig-commits] r15206 - in short/3D/PyLith/trunk/pylith: apps bc faults feassemble materials meshio perf problems topology utils
brad at geodynamics.org
brad at geodynamics.org
Thu Jun 11 23:23:17 PDT 2009
Author: brad
Date: 2009-06-11 23:23:15 -0700 (Thu, 11 Jun 2009)
New Revision: 15206
Modified:
short/3D/PyLith/trunk/pylith/apps/PyLithApp.py
short/3D/PyLith/trunk/pylith/bc/AbsorbingDampers.py
short/3D/PyLith/trunk/pylith/bc/DirichletBC.py
short/3D/PyLith/trunk/pylith/bc/DirichletBoundary.py
short/3D/PyLith/trunk/pylith/bc/Neumann.py
short/3D/PyLith/trunk/pylith/bc/PointForce.py
short/3D/PyLith/trunk/pylith/faults/EqKinSrc.py
short/3D/PyLith/trunk/pylith/faults/Fault.py
short/3D/PyLith/trunk/pylith/faults/FaultCohesiveKin.py
short/3D/PyLith/trunk/pylith/faults/SlipTimeFn.py
short/3D/PyLith/trunk/pylith/feassemble/Constraint.py
short/3D/PyLith/trunk/pylith/feassemble/ElasticityExplicit.py
short/3D/PyLith/trunk/pylith/feassemble/ElasticityImplicit.py
short/3D/PyLith/trunk/pylith/feassemble/Integrator.py
short/3D/PyLith/trunk/pylith/feassemble/IntegratorElasticity.py
short/3D/PyLith/trunk/pylith/materials/Material.py
short/3D/PyLith/trunk/pylith/meshio/OutputManager.py
short/3D/PyLith/trunk/pylith/meshio/OutputSoln.py
short/3D/PyLith/trunk/pylith/meshio/OutputSolnSubset.py
short/3D/PyLith/trunk/pylith/perf/Field.py
short/3D/PyLith/trunk/pylith/perf/GlobalOrder.py
short/3D/PyLith/trunk/pylith/perf/Jacobian.py
short/3D/PyLith/trunk/pylith/perf/Logger.py
short/3D/PyLith/trunk/pylith/perf/Material.py
short/3D/PyLith/trunk/pylith/perf/Memory.py
short/3D/PyLith/trunk/pylith/perf/MemoryLogger.py
short/3D/PyLith/trunk/pylith/problems/Explicit.py
short/3D/PyLith/trunk/pylith/problems/Formulation.py
short/3D/PyLith/trunk/pylith/problems/Implicit.py
short/3D/PyLith/trunk/pylith/problems/Problem.py
short/3D/PyLith/trunk/pylith/problems/TimeDependent.py
short/3D/PyLith/trunk/pylith/problems/TimeStep.py
short/3D/PyLith/trunk/pylith/problems/TimeStepAdapt.py
short/3D/PyLith/trunk/pylith/problems/TimeStepUser.py
short/3D/PyLith/trunk/pylith/topology/Distributor.py
short/3D/PyLith/trunk/pylith/topology/MeshGenerator.py
short/3D/PyLith/trunk/pylith/topology/MeshImporter.py
short/3D/PyLith/trunk/pylith/topology/MeshRefiner.py
short/3D/PyLith/trunk/pylith/topology/RefineUniform.py
short/3D/PyLith/trunk/pylith/utils/PetscComponent.py
Log:
Worked on memory logging. Added ability to recursively traverse facility arrays in PetscComponents. Renamed event logger to _eventLogger to prevent confusion.
Modified: short/3D/PyLith/trunk/pylith/apps/PyLithApp.py
===================================================================
--- short/3D/PyLith/trunk/pylith/apps/PyLithApp.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/apps/PyLithApp.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -80,7 +80,7 @@
self._setupLogging()
# Create mesh (adjust to account for interfaces (faults) if necessary)
- self._logger.stagePush("Meshing")
+ self._eventLogger.stagePush("Meshing")
interfaces = None
if "interfaces" in dir(self.problem):
interfaces = self.problem.interfaces.components()
@@ -89,10 +89,10 @@
del interfaces
del self.mesher
self._debug.log(resourceUsageString())
- self._logger.stagePop()
+ self._eventLogger.stagePop()
# Setup problem, verify configuration, and then initialize
- self._logger.stagePush("Setup")
+ self._eventLogger.stagePush("Setup")
self.problem.preinitialize(mesh)
self._debug.log(resourceUsageString())
@@ -101,16 +101,16 @@
self.problem.initialize()
self._debug.log(resourceUsageString())
- self._logger.stagePop()
+ self._eventLogger.stagePop()
# Run problem
self.problem.run(self)
self._debug.log(resourceUsageString())
# Cleanup
- self._logger.stagePush("Finalize")
+ self._eventLogger.stagePush("Finalize")
self.problem.finalize()
- self._logger.stagePop()
+ self._eventLogger.stagePop()
del mesh
del self.problem
@@ -144,7 +144,7 @@
logger.className("PyLith")
logger.initialize()
- self._logger = logger
+ self._eventLogger = logger
return
Modified: short/3D/PyLith/trunk/pylith/bc/AbsorbingDampers.py
===================================================================
--- short/3D/PyLith/trunk/pylith/bc/AbsorbingDampers.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/bc/AbsorbingDampers.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -89,7 +89,7 @@
Verify compatibility of configuration.
"""
logEvent = "%sverify" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
BoundaryCondition.verifyConfiguration(self, self.mesh)
Integrator.verifyConfiguration(self)
@@ -102,7 +102,7 @@
self.label, self.mesh.dimension()-1)
ModuleAbsorbingDampers.verifyConfiguration(self, self.mesh)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -111,12 +111,12 @@
Initialize AbsorbingDampers boundary condition.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
Integrator.initialize(self, totalTime, numTimeSteps, normalizer)
BoundaryCondition.initialize(self, totalTime, numTimeSteps, normalizer)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
Modified: short/3D/PyLith/trunk/pylith/bc/DirichletBC.py
===================================================================
--- short/3D/PyLith/trunk/pylith/bc/DirichletBC.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/bc/DirichletBC.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -45,7 +45,12 @@
family="spatial_database")
dbInitial.meta['tip'] = "Database of parameters for initial values."
+ from pylith.perf.MemoryLogger import MemoryLogger
+ perfLogger = pyre.inventory.facility("perf_logger", family="perf_logger",
+ factory=MemoryLogger)
+ perfLogger.meta['tip'] = "Performance and memory logging."
+
# PUBLIC METHODS /////////////////////////////////////////////////////
def __init__(self, name="dirichletbc"):
@@ -72,11 +77,11 @@
Verify compatibility of configuration.
"""
logEvent = "%sverify" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
BoundaryCondition.verifyConfiguration(self, self.mesh)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -85,12 +90,19 @@
Initialize DirichletBC boundary condition.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
+ from pylith.utils.petsc import MemoryLogger
+ #memoryLogger = MemoryLogger.singleton()
+ #memoryLogger.setDebug(0)
+ #memoryLogger.stagePush("BoundaryConditions")
+
self.normalizer(normalizer)
BoundaryCondition.initialize(self, totalTime, numTimeSteps, normalizer)
- self._logger.eventEnd(logEvent)
+ #memoryLogger.stagePop()
+ self._modelMemoryUse()
+ self._eventLogger.eventEnd(logEvent)
return
@@ -112,7 +124,15 @@
ModuleDirichletBC.__init__(self)
return
+
+ def _modelMemoryUse(self):
+ """
+ Model memory allocation.
+ """
+ #self.perfLogger.logFields("BoundaryConditions", self.parameterFields())
+ return
+
# FACTORIES ////////////////////////////////////////////////////////////
def boundary_condition():
Modified: short/3D/PyLith/trunk/pylith/bc/DirichletBoundary.py
===================================================================
--- short/3D/PyLith/trunk/pylith/bc/DirichletBoundary.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/bc/DirichletBoundary.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -90,12 +90,12 @@
Verify compatibility of configuration.
"""
logEvent = "%sverify" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
DirichletBC.verifyConfiguration(self)
self.output.verifyConfiguration(self.mesh)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -104,14 +104,14 @@
Initialize DirichletBoundary boundary condition.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
DirichletBC.initialize(self, totalTime, numTimeSteps, normalizer)
self.output.initialize(normalizer)
self.output.writeInfo()
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
Modified: short/3D/PyLith/trunk/pylith/bc/Neumann.py
===================================================================
--- short/3D/PyLith/trunk/pylith/bc/Neumann.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/bc/Neumann.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -101,7 +101,7 @@
Verify compatibility of configuration.
"""
logEvent = "%sverify" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
BoundaryCondition.verifyConfiguration(self, self.mesh)
Integrator.verifyConfiguration(self)
@@ -115,7 +115,7 @@
self.output.verifyConfiguration(self.mesh)
ModuleNeumann.verifyConfiguration(self, self.mesh)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -124,7 +124,7 @@
Initialize Neumann boundary condition.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
Integrator.initialize(self, totalTime, numTimeSteps, normalizer)
BoundaryCondition.initialize(self, totalTime, numTimeSteps, normalizer)
@@ -132,7 +132,7 @@
self.output.initialize(normalizer, self.bcQuadrature)
self.output.writeInfo()
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
Modified: short/3D/PyLith/trunk/pylith/bc/PointForce.py
===================================================================
--- short/3D/PyLith/trunk/pylith/bc/PointForce.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/bc/PointForce.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -59,11 +59,11 @@
Verify compatibility of configuration.
"""
logEvent = "%sverify" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
BoundaryCondition.verifyConfiguration(self, self.mesh)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -72,12 +72,12 @@
Initialize PointForce boundary condition.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
Integrator.initialize(self, totalTime, numTimeSteps, normalizer)
BoundaryCondition.initialize(self, totalTime, numTimeSteps, normalizer)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
Modified: short/3D/PyLith/trunk/pylith/faults/EqKinSrc.py
===================================================================
--- short/3D/PyLith/trunk/pylith/faults/EqKinSrc.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/faults/EqKinSrc.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -80,11 +80,11 @@
Verify compatibility of configuration.
"""
logEvent = "%sverify" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
self.slipfn.verifyConfiguration()
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -93,11 +93,11 @@
Initialize.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
self.slipfn.initialize()
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -138,7 +138,7 @@
for event in events:
logger.registerEvent("%s%s" % (self._loggingPrefix, event))
- self._logger = logger
+ self._eventLogger = logger
return
Modified: short/3D/PyLith/trunk/pylith/faults/Fault.py
===================================================================
--- short/3D/PyLith/trunk/pylith/faults/Fault.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/faults/Fault.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -127,7 +127,7 @@
Verify compatibility of configuration.
"""
logEvent = "%sverify" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
faultDim = self.mesh.dimension() - 1
if faultDim != self.faultQuadrature.cell.cellDim:
@@ -139,7 +139,7 @@
if None != self.output:
self.output.verifyConfiguration(self.mesh)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -148,7 +148,7 @@
Initialize fault.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
self.faultQuadrature.initialize()
ModuleFault.initialize(self,
@@ -159,7 +159,7 @@
self.output.writeInfo()
self.output.open(totalTime, numTimeSteps)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -168,12 +168,12 @@
Hook for doing stuff after advancing time step.
"""
logEvent = "%spoststep" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
self._info.log("Writing fault data.")
self.output.writeData(t+dt, fields)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
Modified: short/3D/PyLith/trunk/pylith/faults/FaultCohesiveKin.py
===================================================================
--- short/3D/PyLith/trunk/pylith/faults/FaultCohesiveKin.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/faults/FaultCohesiveKin.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -124,7 +124,7 @@
Verify compatibility of configuration.
"""
logEvent = "%sverify" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
FaultCohesive.verifyConfiguration(self)
Integrator.verifyConfiguration(self)
@@ -133,7 +133,7 @@
for eqsrc in self.eqsrcs.components():
eqsrc.verifyConfiguration()
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -142,7 +142,7 @@
Initialize cohesive elements.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
self._info.log("Initializing fault '%s'." % self.label())
Integrator.initialize(self, totalTime, numTimeSteps, normalizer)
@@ -151,7 +151,7 @@
eqsrc.initialize()
FaultCohesive.initialize(self, totalTime, numTimeSteps, normalizer)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -160,12 +160,12 @@
Hook for doing stuff after advancing time step.
"""
logEvent = "%spoststep" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
Integrator.poststep(self, t, dt, totalTime, fields)
FaultCohesive.poststep(self, t, dt, totalTime, fields)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
Modified: short/3D/PyLith/trunk/pylith/faults/SlipTimeFn.py
===================================================================
--- short/3D/PyLith/trunk/pylith/faults/SlipTimeFn.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/faults/SlipTimeFn.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -50,9 +50,9 @@
Verify compatibility of configuration.
"""
logEvent = "%sverify" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -61,9 +61,9 @@
Initialize.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -94,7 +94,7 @@
for event in events:
logger.registerEvent("%s%s" % (self._loggingPrefix, event))
- self._logger = logger
+ self._eventLogger = logger
return
Modified: short/3D/PyLith/trunk/pylith/feassemble/Constraint.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/Constraint.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/feassemble/Constraint.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -100,7 +100,7 @@
for event in events:
logger.registerEvent("%s%s" % (self._loggingPrefix, event))
- self._logger = logger
+ self._eventLogger = logger
return
Modified: short/3D/PyLith/trunk/pylith/feassemble/ElasticityExplicit.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/ElasticityExplicit.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/feassemble/ElasticityExplicit.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -44,13 +44,13 @@
Do initialization.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
IntegratorElasticity.initialize(self, totalTime, numTimeSteps, normalizer)
ModuleElasticityExplicit.initialize(self, self.mesh)
self._initializeOutput(totalTime, numTimeSteps, normalizer)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
Modified: short/3D/PyLith/trunk/pylith/feassemble/ElasticityImplicit.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/ElasticityImplicit.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/feassemble/ElasticityImplicit.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -44,13 +44,14 @@
Do initialization.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
IntegratorElasticity.initialize(self, totalTime, numTimeSteps, normalizer)
ModuleElasticityImplicit.initialize(self, self.mesh)
self._initializeOutput(totalTime, numTimeSteps, normalizer)
- self._logger.eventEnd(logEvent)
+ self._modelMemoryUse()
+ self._eventLogger.eventEnd(logEvent)
return
Modified: short/3D/PyLith/trunk/pylith/feassemble/Integrator.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/Integrator.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/feassemble/Integrator.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -82,13 +82,13 @@
Do initialization.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
self.normalizer(normalizer)
if None != self.gravityField:
self.gravityField(self.gravityField)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -97,11 +97,11 @@
Hook for doing stuff after advancing time step.
"""
logEvent = "%spoststep" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
self.updateStateVars(t, fields)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -133,7 +133,7 @@
for event in events:
logger.registerEvent("%s%s" % (self._loggingPrefix, event))
- self._logger = logger
+ self._eventLogger = logger
return
Modified: short/3D/PyLith/trunk/pylith/feassemble/IntegratorElasticity.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/IntegratorElasticity.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/feassemble/IntegratorElasticity.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -67,12 +67,12 @@
Verify compatibility of configuration.
"""
logEvent = "%sverify" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
Integrator.verifyConfiguration(self)
self.output.verifyConfiguration(self.mesh)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -81,14 +81,14 @@
Initialize material properties.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
self._info.log("Initializing integrator for material '%s'." % \
self.materialObj.label)
Integrator.initialize(self, totalTime, numTimeSteps, normalizer)
self.materialObj.normalizer(normalizer)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -97,14 +97,14 @@
Hook for doing stuff after advancing time step.
"""
logEvent = "%spoststep" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
Integrator.poststep(self, t, dt, totalTime, fields)
self._info.log("Writing material data.")
self.output.writeData(t+dt, fields)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -136,4 +136,12 @@
return
+ def _modelMemoryUse(self):
+ """
+ Model allocated memory.
+ """
+ self.materialObj.modelMemoryUse()
+ return
+
+
# End of file
Modified: short/3D/PyLith/trunk/pylith/materials/Material.py
===================================================================
--- short/3D/PyLith/trunk/pylith/materials/Material.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/materials/Material.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -82,6 +82,12 @@
quadrature.meta['tip'] = "Quadrature object for numerical integration."
+ from pylith.perf.MemoryLogger import MemoryLogger
+ perfLogger = pyre.inventory.facility("perf_logger", family="perf_logger",
+ factory=MemoryLogger)
+ perfLogger.meta['tip'] = "Performance and memory logging."
+
+
# PUBLIC METHODS /////////////////////////////////////////////////////
def __init__(self, name="material"):
@@ -111,7 +117,7 @@
Verify compatibility of configuration.
"""
logEvent = "%sverify" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
if self.quadrature.cellDim != self.mesh.dimension() or \
self.quadrature.spaceDim != self.mesh.coordsys.spaceDim():
@@ -125,7 +131,7 @@
self.quadrature.cellDim, self.quadrature.spaceDim,
self.mesh.dimension(), self.mesh.coordsys().spaceDim())
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -136,6 +142,14 @@
return (self.mesh, "material-id", self.id())
+ def modelMemoryUse(self):
+ """
+ Model allocated memory.
+ """
+ self.perfLogger.logMaterial('Materials', self)
+ return
+
+
# PRIVATE METHODS ////////////////////////////////////////////////////
def _configure(self):
@@ -151,6 +165,7 @@
self.dbInitialState(self.inventory.dbInitialState)
self.quadrature = self.inventory.quadrature
+ self.perfLogger = self.inventory.perfLogger
return
@@ -179,7 +194,7 @@
for event in events:
logger.registerEvent("%s%s" % (self._loggingPrefix, event))
- self._logger = logger
+ self._eventLogger = logger
return
Modified: short/3D/PyLith/trunk/pylith/meshio/OutputManager.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputManager.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputManager.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -127,7 +127,7 @@
Initialize output manager.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
# Nondimensionalize time step
self.normalizer = normalizer
@@ -143,7 +143,7 @@
self.cellFilter.initialize(quadrature)
self.writer.initialize(normalizer)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -152,14 +152,14 @@
Prepare for writing data.
"""
logEvent = "%sopen" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
nsteps = self._estimateNumSteps(totalTime, numTimeSteps)
(mesh, label, labelId) = self.dataProvider.getDataMesh()
self._open(mesh, nsteps, label, labelId)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -168,11 +168,11 @@
Perform post-write cleanup.
"""
logEvent = "%sclose" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
self._close()
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -181,7 +181,7 @@
Write information fields.
"""
logEvent = "%swriteInfo" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
if len(self.vertexInfoFields) > 0 or len(self.cellInfoFields) > 0:
t = 0.0
@@ -200,7 +200,7 @@
self._closeTimeStep()
self._close()
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -209,7 +209,7 @@
Write fields at current time step.
"""
logEvent = "%swriteData" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
if self._checkWrite(t) and \
( len(self.vertexDataFields) > 0 or \
@@ -228,7 +228,7 @@
self._closeTimeStep()
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -361,7 +361,7 @@
for event in events:
logger.registerEvent("%s%s" % (self._loggingPrefix, event))
- self._logger = logger
+ self._eventLogger = logger
return
Modified: short/3D/PyLith/trunk/pylith/meshio/OutputSoln.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputSoln.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputSoln.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -79,12 +79,12 @@
Initialize output manager.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
self.mesh = mesh
OutputManagerMesh.initialize(self, normalizer)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
Modified: short/3D/PyLith/trunk/pylith/meshio/OutputSolnSubset.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputSolnSubset.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputSolnSubset.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -95,12 +95,12 @@
Initialize output manager.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
self.submesh = self.subdomainMesh(mesh)
OutputManager.initialize(self, normalizer)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
Modified: short/3D/PyLith/trunk/pylith/perf/Field.py
===================================================================
--- short/3D/PyLith/trunk/pylith/perf/Field.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/perf/Field.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -29,6 +29,7 @@
self.chartSize = chartSize
return
+
def tabulate(self, memDict):
"""
Tabulate memory use.
@@ -36,9 +37,11 @@
# Here we have data + atlas + bc
if not self.label in memDict:
memDict[self.label] = 0
- memDict[self.label] += (self.sizeDouble * self.size) + (2 * self.sizeInt * self.chartSize) + (2 * self.sizeInt * self.chartSize)
+ memDict[self.label] += (self.sizeDouble * self.size) + \
+ (2 * self.sizeInt * self.chartSize) + (2 * self.sizeInt * self.chartSize)
return
+
if __name__ == '__main__':
print 'Memory:',Material('rock', 35).tabulate()
Modified: short/3D/PyLith/trunk/pylith/perf/GlobalOrder.py
===================================================================
--- short/3D/PyLith/trunk/pylith/perf/GlobalOrder.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/perf/GlobalOrder.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -28,6 +28,7 @@
self.chartSize = chartSize
return
+
def tabulate(self, memDict):
"""
Tabulate memory use.
@@ -35,7 +36,8 @@
# Here we have a map<int --> (int,int)> + set<int>
if not self.label in memDict:
memDict[self.label] = 0
- memDict[self.label] += self.chartSize*(3 * self.sizeInt + self.sizeMapEntry) + self.chartSize*(self.sizeSetEntry+self.sizeInt)
+ memDict[self.label] += self.chartSize*(3 * self.sizeInt + self.sizeMapEntry) + \
+ self.chartSize*(self.sizeSetEntry+self.sizeInt)
return
Modified: short/3D/PyLith/trunk/pylith/perf/Jacobian.py
===================================================================
--- short/3D/PyLith/trunk/pylith/perf/Jacobian.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/perf/Jacobian.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -27,6 +27,7 @@
self.label = label
return
+
def tabulate(self, memDict):
"""
Tabulate memory use.
Modified: short/3D/PyLith/trunk/pylith/perf/Logger.py
===================================================================
--- short/3D/PyLith/trunk/pylith/perf/Logger.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/perf/Logger.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -44,6 +44,7 @@
verbose = pyre.inventory.bool("verbose", default=False)
verbose.meta['tip'] = "Print information to the screen."
+
# PUBLIC METHODS /////////////////////////////////////////////////////
def __init__(self, name="perf_logger"):
@@ -53,6 +54,7 @@
PetscComponent.__init__(self, name, facility="perf_logger")
return
+
def join(self, logger):
"""
Incorporate information from another logger.
@@ -60,6 +62,7 @@
raise NotImplementedError, "join() not implemented."
return
+
def logMesh(self, stage, mesh):
"""
Read mesh parameters to determine memory from our model.
@@ -79,13 +82,6 @@
return
- def _setupLogging(self):
- """
- Setup event logging.
- """
- return
-
-
# FACTORIES ////////////////////////////////////////////////////////////
def perf_logger():
Modified: short/3D/PyLith/trunk/pylith/perf/Material.py
===================================================================
--- short/3D/PyLith/trunk/pylith/perf/Material.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/perf/Material.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -28,6 +28,7 @@
self.ncells = numCells
return
+
def tabulate(self, memDict):
"""
Tabulate memory use.
Modified: short/3D/PyLith/trunk/pylith/perf/Memory.py
===================================================================
--- short/3D/PyLith/trunk/pylith/perf/Memory.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/perf/Memory.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -14,25 +14,33 @@
##
## @brief Python object for calculating memory usage.
+import pylith.utils.petsc as petsc
+
class Memory(object):
sizeInt = 4
sizeDouble = 8
import distutils.sysconfig
pointerSize = distutils.sysconfig.get_config_var('SIZEOF_VOID_P')
+ if pointerSize is None:
+ # Get pointer using sizeof(void*) in PyLith C++ library.
+ pointerSize = petsc.sizeofVoidPtr()
+
if pointerSize == 4:
sizeSetEntry = 12
sizeMapEntry = 16
sizeArrow = 40 # 32 bit
+
elif pointerSize == 8:
sizeSetEntry = 24
sizeMapEntry = 32
sizeArrow = 56 # 64 bit
+
elif pointerSize is None:
sizeSetEntry = 0
sizeMapEntry = 0
sizeArrow = 0 # Use 0 if can't get estimate of pointer size.
else:
- raise RuntimeError('Could not determine the size of a pointer')
+ raise RuntimeError("Unknown pointer size '%s'.")
# End of file
Modified: short/3D/PyLith/trunk/pylith/perf/MemoryLogger.py
===================================================================
--- short/3D/PyLith/trunk/pylith/perf/MemoryLogger.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/perf/MemoryLogger.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -37,7 +37,7 @@
## Python object for managing Problem facilities and properties.
##
## \b Properties
- ## @li \b dummy Nothing.
+ ## @li \b include_dealloc Subtract deallocate memory when reporting.
import pyre.inventory
@@ -47,7 +47,7 @@
# PUBLIC METHODS /////////////////////////////////////////////////////
- def __init__(self, name="perf_logger"):
+ def __init__(self, name="memory_logger"):
"""
Constructor.
"""
@@ -113,7 +113,18 @@
##self.logField('Field', quadrature.basisDerivPrecomp())
return
+
+ def logFields(self, stage, fields):
+ """
+ Log fields to determine memory from our model.
+ """
+ names = fields.fieldNames()
+ for name in names:
+ field = fields.get(name)
+ self.logField(stage, field)
+ return
+
def logField(self, stage, field):
"""
Read field parameters to determine memory from our model.
@@ -183,6 +194,7 @@
return '%s%-30s %8d bytes (%.3f MB)' % \
(self.prefix(indent), name+' ('+source+'):', mem, mem / self.megabyte)
+
def processMemDict(self, memDict, indent = 0, namePrefix = '',
includeDealloc = True):
from pylith.utils.petsc import MemoryLogger
@@ -229,6 +241,7 @@
(self.prefix(indent), total))
return output, total, codeTotal
+
def show(self):
"""
Print memory usage.
@@ -247,6 +260,7 @@
print '\n'.join(output)
return
+
# PRIVATE METHODS ////////////////////////////////////////////////////
def _configure(self):
@@ -258,13 +272,6 @@
return
- def _setupLogging(self):
- """
- Setup event logging.
- """
- return
-
-
# FACTORIES ////////////////////////////////////////////////////////////
def perf_logger():
Modified: short/3D/PyLith/trunk/pylith/problems/Explicit.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Explicit.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/problems/Explicit.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -63,11 +63,17 @@
Initialize problem for explicit time integration.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
Formulation.initialize(self, dimension, normalizer)
- self._info.log("Creating other fields and matrices.")
+ from pylith.utils.petsc import MemoryLogger
+ logger = MemoryLogger.singleton()
+ logger.setDebug(0)
+ logger.stagePush("Problem")
+
+ # Allocate other fields, reusing layout from dispIncr
+ self._info.log("Creating other fields.")
self.fields.add("disp(t-dt)", "displacement")
self.fields.copyLayout("dispIncr(t->t+dt)")
self._debug.log(resourceUsageString())
@@ -81,6 +87,7 @@
residual.zero()
residual.createVector()
self._debug.log(resourceUsageString())
+ logger.stagePop()
self._info.log("Creating Jacobian matrix.")
from pylith.topology.Jacobian import Jacobian
@@ -88,6 +95,7 @@
self.jacobian.zero() # TEMPORARY, to get correct memory usage
self._debug.log(resourceUsageString())
+ logger.stagePush("Problem")
self._info.log("Initializing solver.")
self.solver.initialize(self.fields, self.jacobian, self)
self._debug.log(resourceUsageString())
@@ -98,7 +106,10 @@
for integrator in self.integratorsMesh + self.integratorsSubMesh:
integrator.useSolnIncr(True)
- self._logger.eventEnd(logEvent)
+ logger.stagePop()
+ logger.setDebug(0)
+ self._modelMemoryUse()
+ self._eventLogger.eventEnd(logEvent)
return
@@ -107,7 +118,7 @@
Hook for doing stuff before advancing time step.
"""
logEvent = "%sprestep" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
dispIncr = self.fields.get("dispIncr(t->t+dt)")
for constraint in self.constraints:
@@ -121,7 +132,7 @@
if needNewJacobian:
self._reformJacobian(t, dt)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -130,7 +141,7 @@
Advance to next time step.
"""
logEvent = "%sstep" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
self._reformResidual(t, dt)
@@ -139,7 +150,7 @@
dispIncr = self.fields.get("dispIncr(t->t+dt)")
self.solver.solve(dispIncr, self.jacobian, residual)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -148,7 +159,7 @@
Hook for doing stuff after advancing time step.
"""
logEvent = "%spoststep" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
dispIncr = self.fields.get("dispIncr(t->t+dt)")
dispT = self.fields.get("disp(t)")
@@ -160,7 +171,7 @@
Formulation.poststep(self, t, dt)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
Modified: short/3D/PyLith/trunk/pylith/problems/Formulation.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Formulation.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/problems/Formulation.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -107,6 +107,7 @@
factory=MemoryLogger)
perfLogger.meta['tip'] = "Performance and memory logging."
+
# PUBLIC METHODS /////////////////////////////////////////////////////
def __init__(self, name="formulation"):
@@ -131,7 +132,7 @@
"""
self._setupLogging()
logEvent = "%spreinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
self.timeStep.preinitialize()
@@ -149,7 +150,7 @@
for output in self.output.components():
output.preinitialize()
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -158,7 +159,7 @@
Verify compatibility of configuration.
"""
logEvent = "%sverify" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
self.timeStep.verifyConfiguration()
@@ -169,7 +170,7 @@
for output in self.output.components():
output.verifyConfiguration(self.mesh)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -178,7 +179,7 @@
Create integrators for each element family.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
self.timeStep.initialize(normalizer)
@@ -217,9 +218,9 @@
# Setup fields
self._info.log("Creating solution field.")
from pylith.utils.petsc import MemoryLogger
- logger = MemoryLogger.singleton()
- logger.setDebug(0)
- logger.stagePush("Problem")
+ memoryLogger = MemoryLogger.singleton()
+ memoryLogger.setDebug(0)
+ memoryLogger.stagePush("Problem")
self.fields.add("dispIncr(t->t+dt)", "displacement_increment")
self.fields.add("disp(t)", "displacement")
self.fields.add("residual", "residual")
@@ -239,13 +240,13 @@
solution.allocate()
for constraint in self.constraints:
constraint.setConstraints(solution)
- logger.stagePop()
+ memoryLogger.stagePop()
# This creates a global order
solution.createVector()
solution.createScatter()
- logger.stagePush("Problem")
+ memoryLogger.stagePush("Problem")
dispT = self.fields.get("disp(t)")
dispT.vectorFieldType(dispT.VECTOR)
dispT.scale(lengthScale.value)
@@ -254,11 +255,11 @@
residual.vectorFieldType(residual.VECTOR)
residual.scale(lengthScale.value)
- logger.stagePop()
- logger.setDebug(0)
+ memoryLogger.stagePop()
+ memoryLogger.setDebug(0)
self._debug.log(resourceUsageString())
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -281,12 +282,12 @@
Get stable time step for advancing forward in time.
"""
logEvent = "%stimestep" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
dt = self.timeStep.timeStep(self.mesh,
self.integratorsMesh + self.integratorsSubMesh)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return dt
@@ -295,9 +296,9 @@
Hook for doing stuff before advancing time step.
"""
logEvent = "%sprestep" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -306,9 +307,9 @@
Advance to next time step.
"""
logEvent = "%sstep" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -317,7 +318,7 @@
Hook for doing stuff after advancing time step.
"""
logEvent = "%spoststep" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
totalTime = self.timeStep.totalTime
@@ -329,7 +330,7 @@
for constraint in self.constraints:
constraint.poststep(t, dt, totalTime, self.fields)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -338,12 +339,13 @@
Cleanup after time stepping.
"""
logEvent = "%sfinalize" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
for name in self.fields.fieldNames():
field = self.fields.get(name)
self.perfLogger.logField('Problem', field)
- self.perfLogger.logGlobalOrder('GlobalOrder', 'VectorOrder', self.fields.get('residual'))
+ self.perfLogger.logGlobalOrder('GlobalOrder', 'VectorOrder',
+ self.fields.get('residual'))
for integrator in self.integratorsMesh + self.integratorsSubMesh:
self.perfLogger.logQuadrature('Quadrature', integrator.quadrature())
@@ -362,7 +364,7 @@
output.close()
self._debug.log(resourceUsageString())
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -475,12 +477,12 @@
"""
self._debug.log(resourceUsageString())
self._info.log("Integrating Jacobian operator.")
- self._logger.stagePush("Reform Jacobian")
+ self._eventLogger.stagePush("Reform Jacobian")
self.updateSettings(self.jacobian, self.fields, t, dt)
self.reformJacobian()
- self._logger.stagePop()
+ self._eventLogger.stagePop()
if self.viewJacobian:
self.jacobianViewer.write(self.jacobian, t)
@@ -494,12 +496,12 @@
Reform residual vector for operator.
"""
self._info.log("Integrating residual term in operator.")
- self._logger.stagePush("Reform Residual")
+ self._eventLogger.stagePush("Reform Residual")
self.updateSettings(self.jacobian, self.fields, t, dt)
self.reformResidual()
- self._logger.stagePop()
+ self._eventLogger.stagePop()
self._debug.log(resourceUsageString())
return
@@ -533,10 +535,23 @@
for stage in stages:
logger.registerStage(stage)
- self._logger = logger
+ self._eventLogger = logger
return
-
+
+ def _modelMemoryUse(self):
+ """
+ Model memory allocation.
+ """
+ self.perfLogger.logFields('Problem', self.fields)
+ self.perfLogger.logJacobian('Jacobian', 'dummy')
+ self.perfLogger.logGlobalOrder('GlobalOrder', 'VectorOrder',
+ self.fields.get('residual'))
+ for integrator in self.integratorsMesh + self.integratorsSubMesh:
+ self.perfLogger.logQuadrature('Quadrature', integrator.quadrature())
+ return
+
+
def _cleanup(self):
"""
Deallocate PETSc and local data structures.
Modified: short/3D/PyLith/trunk/pylith/problems/Implicit.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Implicit.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/problems/Implicit.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -88,13 +88,15 @@
"""
Formulation.initialize(self, dimension, normalizer)
+ logEvent = "%sinit" % self._loggingPrefix
+ self._eventLogger.eventBegin(logEvent)
+ from pylith.utils.petsc import MemoryLogger
+ memoryLogger = MemoryLogger.singleton()
+ memoryLogger.setDebug(0)
+ memoryLogger.stagePush("Problem")
+
# Allocate other fields, reusing layout from dispIncr
self._info.log("Creating other fields.")
- self._info.log("Creating solution field.")
- from pylith.utils.petsc import MemoryLogger
- logger = MemoryLogger.singleton()
- logger.setDebug(0)
- logger.stagePush("Problem")
self.fields.copyLayout("dispIncr(t->t+dt)")
# Setup fields and set to zero
@@ -104,7 +106,7 @@
residual.zero()
residual.createVector()
self._debug.log(resourceUsageString())
- logger.stagePop()
+ memoryLogger.stagePop()
# Allocates memory for nonzero pattern and Jacobian
self._info.log("Creating Jacobian matrix.")
@@ -113,7 +115,7 @@
self.jacobian.zero() # TEMPORARY, to get correct memory usage
self._debug.log(resourceUsageString())
- logger.stagePush("Problem")
+ memoryLogger.stagePush("Problem")
self._info.log("Initializing solver.")
self.solver.initialize(self.fields, self.jacobian, self)
self._debug.log(resourceUsageString())
@@ -125,8 +127,9 @@
for integrator in self.integratorsMesh + self.integratorsSubMesh:
integrator.useSolnIncr(False)
- logger.stagePop()
- logger.setDebug(0)
+ memoryLogger.stagePop()
+ memoryLogger.setDebug(0)
+ self._modelMemoryUse()
return
@@ -186,9 +189,9 @@
self._info.log("Solving equations.")
residual = self.fields.get("residual")
- self._logger.stagePush("Solve")
+ self._eventLogger.stagePush("Solve")
self.solver.solve(dispIncr, self.jacobian, residual)
- self._logger.stagePop()
+ self._eventLogger.stagePop()
return
@@ -214,7 +217,6 @@
Cleanup after time stepping.
"""
Formulation.finalize(self)
- self.perfLogger.logJacobian('Jacobian', 'dummy')
return
Modified: short/3D/PyLith/trunk/pylith/problems/Problem.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/Problem.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/problems/Problem.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -192,11 +192,6 @@
raise NotImplementedError, "initialize() not implemented."
return
- def logMaterials(self):
- for material in self.materials.components():
- self.perfLogger.logMaterial('Materials', material)
- return
-
def run(self, app):
"""
Solve the problem.
@@ -253,7 +248,7 @@
logger.className("Problem")
logger.initialize()
- self._logger = logger
+ self._eventLogger = logger
return
Modified: short/3D/PyLith/trunk/pylith/problems/TimeDependent.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/TimeDependent.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/problems/TimeDependent.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -108,14 +108,13 @@
"""
Solve time dependent problem.
"""
- self.logMaterials()
self._info.log("Solving problem.")
self.checkpointTimer.toplevel = app # Set handle for saving state
t = self.formulation.getStartTime()
timeScale = self.normalizer.timeScale()
while t < self.formulation.getTotalTime():
- self._logger.stagePush("Prestep")
+ self._eventLogger.stagePush("Prestep")
tsec = self.normalizer.dimensionalize(t, timeScale)
self._info.log("Main time loop, current time is t=%s" % tsec)
@@ -129,19 +128,19 @@
self._info.log("Preparing to advance solution from time t=%s to t=%s." %\
(tsec, tsec+dtsec))
self.formulation.prestep(t, dt)
- self._logger.stagePop()
+ self._eventLogger.stagePop()
self._info.log("Advancing solution from t=%s to t=%s." % \
(tsec, tsec+dtsec))
- self._logger.stagePush("Step")
+ self._eventLogger.stagePush("Step")
self.formulation.step(t, dt)
- self._logger.stagePop()
+ self._eventLogger.stagePop()
self._info.log("Finishing advancing solution from t=%s to t=%s." % \
(tsec, tsec+dtsec))
- self._logger.stagePush("Poststep")
+ self._eventLogger.stagePush("Poststep")
self.formulation.poststep(t, dt)
- self._logger.stagePop()
+ self._eventLogger.stagePop()
# Update time
t += dt
Modified: short/3D/PyLith/trunk/pylith/problems/TimeStep.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/TimeStep.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/problems/TimeStep.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -48,9 +48,9 @@
"""
self._setupLogging()
logEvent = "%spreinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -59,9 +59,9 @@
Verify compatibility of configuration.
"""
logEvent = "%sverify" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -70,14 +70,14 @@
Initialize time step algorithm.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
# Nondimensionalize time scales
timeScale = normalizer.timeScale()
self.totalTimeN = normalizer.nondimensionalize(self.totalTime, timeScale)
self.dtN = normalizer.nondimensionalize(self.dt, timeScale)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -132,7 +132,7 @@
for event in events:
logger.registerEvent("%s%s" % (self._loggingPrefix, event))
- self._logger = logger
+ self._eventLogger = logger
return
Modified: short/3D/PyLith/trunk/pylith/problems/TimeStepAdapt.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/TimeStepAdapt.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/problems/TimeStepAdapt.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -88,7 +88,7 @@
Initialize time step algorithm.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
TimeStep.initialize(self, normalizer)
@@ -96,7 +96,7 @@
timeScale = normalizer.timeScale()
self.maxDtN = normalizer.nondimensionalize(self.maxDt, timeScale)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
Modified: short/3D/PyLith/trunk/pylith/problems/TimeStepUser.py
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/TimeStepUser.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/problems/TimeStepUser.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -105,7 +105,7 @@
Initialize time step algorithm.
"""
logEvent = "%sinit" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
TimeStep.initialize(self, normalizer)
@@ -124,7 +124,7 @@
# Set current time step
self.dtN = self.steps[self.index]
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
Modified: short/3D/PyLith/trunk/pylith/topology/Distributor.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/Distributor.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/topology/Distributor.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -70,7 +70,7 @@
"""
self._setupLogging()
logEvent = "%sdistribute" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
from pylith.topology.Mesh import Mesh
newMesh = Mesh(mesh.dimension())
@@ -80,7 +80,7 @@
self.dataWriter.initialize(normalizer)
ModuleDistributor.write(self.dataWriter, newMesh)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return newMesh
@@ -110,7 +110,7 @@
for event in events:
logger.registerEvent("%s%s" % (self._loggingPrefix, event))
- self._logger = logger
+ self._eventLogger = logger
return
Modified: short/3D/PyLith/trunk/pylith/topology/MeshGenerator.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/MeshGenerator.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/topology/MeshGenerator.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -89,14 +89,14 @@
Adjust topology for interface implementation.
"""
logEvent = "%sadjTopo" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
if not interfaces is None:
for interface in interfaces:
self._info.log("Adjusting topology for fault '%s'." % interface.label)
interface.adjustTopology(mesh)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return
@@ -117,7 +117,7 @@
for event in events:
logger.registerEvent("%s%s" % (self._loggingPrefix, event))
- self._logger = logger
+ self._eventLogger = logger
return
Modified: short/3D/PyLith/trunk/pylith/topology/MeshImporter.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/MeshImporter.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/topology/MeshImporter.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -83,7 +83,7 @@
self._setupLogging()
logEvent = "%screate" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
mesh = self.reader.read(normalizer, self.debug, self.interpolate)
if self.debug:
@@ -105,7 +105,7 @@
# Nondimensionalize mesh (coordinates of vertices).
mesh.nondimensionalize(normalizer)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return mesh
Modified: short/3D/PyLith/trunk/pylith/topology/MeshRefiner.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/MeshRefiner.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/topology/MeshRefiner.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -101,7 +101,7 @@
for event in events:
logger.registerEvent("%s%s" % (self._loggingPrefix, event))
- self._logger = logger
+ self._eventLogger = logger
return
Modified: short/3D/PyLith/trunk/pylith/topology/RefineUniform.py
===================================================================
--- short/3D/PyLith/trunk/pylith/topology/RefineUniform.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/topology/RefineUniform.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -66,7 +66,7 @@
"""
self._setupLogging()
logEvent = "%srefine" % self._loggingPrefix
- self._logger.eventBegin(logEvent)
+ self._eventLogger.eventBegin(logEvent)
self._info.log("Refining mesh.")
self._createCppHandle()
@@ -83,7 +83,7 @@
self.cppHandle.write(self.dataWriter.cppHandle,
newMesh.cppHandle, newMesh.coordsys.cppHandle)
- self._logger.eventEnd(logEvent)
+ self._eventLogger.eventEnd(logEvent)
return newMesh
Modified: short/3D/PyLith/trunk/pylith/utils/PetscComponent.py
===================================================================
--- short/3D/PyLith/trunk/pylith/utils/PetscComponent.py 2009-06-12 03:19:41 UTC (rev 15205)
+++ short/3D/PyLith/trunk/pylith/utils/PetscComponent.py 2009-06-12 06:23:15 UTC (rev 15206)
@@ -43,6 +43,14 @@
component.compilePerformanceLog()
if hasattr(component, 'perfLogger'):
self.perfLogger.join(component.perfLogger)
+
+ # Facility arrays are not PetscComponents but have components().
+ elif hasattr(component, "components"):
+ for subcomponent in component.components():
+ if isinstance(subcomponent, PetscComponent):
+ subcomponent.compilePerformanceLog()
+ if hasattr(subcomponent, 'perfLogger'):
+ self.perfLogger.join(subcomponent.perfLogger)
return
@@ -53,6 +61,13 @@
for component in self.components():
if isinstance(component, PetscComponent):
component.cleanup()
+
+ # Facility arrays are not PetscComponents but have components().
+ elif hasattr(component, "components"):
+ for subcomponent in self.components():
+ if isinstance(subcomponent, PetscComponent):
+ subcomponent.cleanup()
+
self._cleanup()
return
More information about the CIG-COMMITS
mailing list