From 0ca3b7409e1b98bb2ebeb65df9dbe316500302e9 Mon Sep 17 00:00:00 2001 From: Oszkar Semerath Date: Tue, 12 May 2020 03:19:32 +0200 Subject: logging detailed measurement data for the numerical solver --- .../inf/dslreasoner/viatra2logic/NumericTranslator.xtend | 16 ++++++++++++++++ .../viatrasolver/reasoner/ViatraReasoner.xtend | 11 ++++++++++- .../viatrasolver/reasoner/dse/NumericSolver.xtend | 3 +++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericTranslator.xtend b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericTranslator.xtend index 89719b91..81bc1796 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericTranslator.xtend +++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericTranslator.xtend @@ -19,6 +19,10 @@ class NumericTranslator { private XExpressionExtractor extractor = new XExpressionExtractor(); + long formingProblemTime=0; + long solvingProblemTime=0; + long formingSolutionTime=0; + val comparator = new Comparator(){ override compare(JvmIdentifiableElement o1, JvmIdentifiableElement o2) { //println('''«o1.simpleName» - «o2.simpleName»''') @@ -52,6 +56,7 @@ class NumericTranslator { val input = formNumericProblemInstance(matches) val solver = new NumericProblemSolver val satisfiability = solver.isSatisfiable(input) + solver.updateTimes return satisfiability } @@ -59,6 +64,17 @@ class NumericTranslator { val input = formNumericProblemInstance(matches) val solver = new NumericProblemSolver val solution = solver.getOneSolution(primitiveElements,input) + solver.updateTimes return solution } + + private def updateTimes(NumericProblemSolver s) { + this.formingProblemTime += s.getEndformingProblem + this.solvingProblemTime += s.getEndSolvingProblem + this.formingSolutionTime += s.getEndFormingSolution + } + + def getFormingProblemTime() {formingProblemTime} + def getSolvingProblemTime() {solvingProblemTime} + def getFormingSolutionTime() {formingSolutionTime} } \ No newline at end of file diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend index bafe78f6..293df935 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend @@ -159,7 +159,16 @@ class ViatraReasoner extends LogicReasoner{ it.name = "ActivationSelectionTime" it.value = (strategy.activationSelector.runtime/1000000) as int ] it.entries += createIntStatisticEntry => [ - it.name = "NumericalSolverTime" it.value = (strategy.numericSolver.runtime/1000000) as int + it.name = "NumericalSolverSumTime" it.value = (strategy.numericSolver.runtime/1000000) as int + ] + it.entries += createIntStatisticEntry => [ + it.name = "NumericalSolverProblemFormingTime" it.value = (strategy.numericSolver.solverFormingProblem/1000000) as int + ] + it.entries += createIntStatisticEntry => [ + it.name = "NumericalSolverSolvingTime" it.value = (strategy.numericSolver.solverSolvingProblem/1000000) as int + ] + it.entries += createIntStatisticEntry => [ + it.name = "NumericalSolverInterpretingSolution" it.value = (strategy.numericSolver.solverSolution/1000000) as int ] it.entries += createIntStatisticEntry => [ it.name = "NumericalSolverCachingTime" it.value = (strategy.numericSolver.cachingTime/1000000) as int diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend index 9da97d30..0fb5d702 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend @@ -56,6 +56,9 @@ class NumericSolver { def getCachingTime(){cachingTime} def getNumberOfSolverCalls(){numberOfSolverCalls} def getNumberOfCachedSolverCalls(){numberOfCachedSolverCalls} + def getSolverFormingProblem(){this.t.formingProblemTime} + def getSolverSolvingProblem(){this.t.solvingProblemTime} + def getSolverSolution(){this.t.formingSolutionTime} def boolean maySatisfiable() { isSatisfiable(this.constraint2MustUnitPropagationPrecondition) -- cgit v1.2.3-54-g00ecf