[PPL-devel] [GIT] ppl/ppl(master): Cut exponential execution paths by calls to maybe_abandon().
Enea Zaffanella
zaffanella at cs.unipr.it
Mon Mar 22 13:57:29 CET 2010
Module: ppl/ppl
Branch: master
Commit: cf4849fd4290f04510c33c0a0582dc537e808500
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=cf4849fd4290f04510c33c0a0582dc537e808500
Author: Enea Zaffanella <zaffanella at cs.unipr.it>
Date: Mon Mar 22 13:54:43 2010 +0100
Cut exponential execution paths by calls to maybe_abandon().
---
src/PIP_Tree.cc | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/src/PIP_Tree.cc b/src/PIP_Tree.cc
index 2dd7c79..9a6f489 100644
--- a/src/PIP_Tree.cc
+++ b/src/PIP_Tree.cc
@@ -1368,6 +1368,11 @@ PIP_Tree_Node::compatibility_check(Matrix& s) {
// Perform simplex pivots on the context
// until we find an empty solution or an optimum.
while (true) {
+ // Check if the client has requested abandoning all expensive
+ // computations. If so, the exception specified by the client
+ // is thrown now.
+ maybe_abandon();
+
dimension_type pi = num_rows; // pi is the pivot's row index.
dimension_type pj = 0; // pj is the pivot's column index.
@@ -1724,6 +1729,11 @@ PIP_Solution_Node::solve(const PIP_Problem& pip,
// Main loop of the simplex algorithm.
while (true) {
+ // Check if the client has requested abandoning all expensive
+ // computations. If so, the exception specified by the client
+ // is thrown now.
+ maybe_abandon();
+
PPL_ASSERT(OK());
const dimension_type num_rows = tableau.t.num_rows();
More information about the PPL-devel
mailing list