From c86aa375b9fe725d85d012dd1231727a03a16585 Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Mon, 20 Jun 2011 12:59:02 +0200 Subject: [PATCH] further cleanup of lpp code --- ir/lpp/lpp.c | 4 ---- ir/lpp/lpp_cmd.def | 9 --------- ir/lpp/lpp_comm.c | 14 +++++++++++--- ir/lpp/lpp_comm.h | 12 +++++++++--- ir/lpp/lpp_cplex.c | 32 +++++++++++--------------------- ir/lpp/lpp_gurobi.c | 13 +------------ ir/lpp/lpp_solvers.c | 38 -------------------------------------- ir/lpp/sp_matrix.c | 8 +------- 8 files changed, 33 insertions(+), 97 deletions(-) delete mode 100644 ir/lpp/lpp_cmd.def diff --git a/ir/lpp/lpp.c b/ir/lpp/lpp.c index 6f1f39d7d..82ea74cbb 100644 --- a/ir/lpp/lpp.c +++ b/ir/lpp/lpp.c @@ -8,10 +8,6 @@ #include "config.h" -#ifdef HAVE_IO_H -#include -#endif - #include #include #include diff --git a/ir/lpp/lpp_cmd.def b/ir/lpp/lpp_cmd.def deleted file mode 100644 index 513f54cc7..000000000 --- a/ir/lpp/lpp_cmd.def +++ /dev/null @@ -1,9 +0,0 @@ -LPP_CMD(BAD) -LPP_CMD(OK) -LPP_CMD(PROBLEM) -LPP_CMD(SOLUTION) -LPP_CMD(SOLVER) -LPP_CMD(BYE) -LPP_CMD(SOLVERS) -LPP_CMD(SET_DEBUG) -LPP_CMD(INFO) diff --git a/ir/lpp/lpp_comm.c b/ir/lpp/lpp_comm.c index d719c5d99..21ce2815b 100644 --- a/ir/lpp/lpp_comm.c +++ b/ir/lpp/lpp_comm.c @@ -400,9 +400,17 @@ void lpp_send_ack(lpp_comm_t *comm) const char *lpp_get_cmd_name(int cmd) { switch(cmd) { -#define LPP_CMD(x) case LPP_CMD_ ## x: return #x; -#include "lpp_cmd.def" -#undef LPP_CMD + case LPP_CMD_BAD: return "BAD"; + case LPP_CMD_OK: return "OK"; + case LPP_CMD_PROBLEM: return "PROBLEM"; + case LPP_CMD_SOLUTION: return "SOLUTION"; + case LPP_CMD_SOLVER: return "SOLVER"; + case LPP_CMD_BYE: return "BYE"; + case LPP_CMD_SOLVERS: return "SOLVERS"; + case LPP_CMD_SET_DEBUG: return "SET_DEBUG"; + case LPP_CMD_INFO: return "INFO"; + case LPP_CMD_LAST: + break; } return ""; diff --git a/ir/lpp/lpp_comm.h b/ir/lpp/lpp_comm.h index 870c031fd..4c425d7ad 100644 --- a/ir/lpp/lpp_comm.h +++ b/ir/lpp/lpp_comm.h @@ -18,9 +18,15 @@ #define LPP_BUFSIZE (1 << 20) enum { -#define LPP_CMD(x) LPP_CMD_ ## x, -#include "lpp_cmd.def" -#undef LPP_CMD + LPP_CMD_BAD, + LPP_CMD_OK, + LPP_CMD_PROBLEM, + LPP_CMD_SOLUTION, + LPP_CMD_SOLVER, + LPP_CMD_BYE, + LPP_CMD_SOLVERS, + LPP_CMD_SET_DEBUG, + LPP_CMD_INFO, LPP_CMD_LAST }; diff --git a/ir/lpp/lpp_cplex.c b/ir/lpp/lpp_cplex.c index 969defe7f..544e5f8a5 100644 --- a/ir/lpp/lpp_cplex.c +++ b/ir/lpp/lpp_cplex.c @@ -6,33 +6,22 @@ */ #include "config.h" +#ifdef WITH_CPLEX + #include "lpp_cplex.h" #include #include - -#ifdef WITH_CPLEX - -#include "obst.h" - +#include #include -#include "assert.h" +#include "obst.h" +#include "stat_timing.h" #include "sp_matrix.h" static char cpx_cst_encoding[4] = "?ELG"; static char cpx_var_encoding[4] = "??CB"; -#define my_timersub(tvp, uvp, vvp) \ - do { \ - (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \ - (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \ - if ((vvp)->tv_usec < 0) { \ - (vvp)->tv_sec--; \ - (vvp)->tv_usec += 1000000; \ - } \ - } while (0) - typedef struct _cpx_t { lpp_t *lpp; CPXENVptr env; @@ -171,7 +160,8 @@ static void cpx_solve(cpx_t *cpx) { int i, CPX_state, numcols; double *values; - struct timeval tvb, tva, tvdiff; + timing_ticks_t tvb; + timing_ticks_t tva; lpp_t *lpp = cpx->lpp; numcols = CPXgetnumcols(cpx->env, cpx->prob); @@ -214,9 +204,9 @@ static void cpx_solve(cpx_t *cpx) // CPXsetintparam (cpx->env, CPX_PARAM_SCRIND, CPX_ON); /* solve */ - gettimeofday(&tvb, NULL); + timing_ticks(&tvb); cpx->status = CPXmipopt(cpx->env, cpx->prob); - gettimeofday(&tva, NULL); + timing_ticks(&tva); chk_cpx_err(cpx); /* get solution status */ @@ -258,8 +248,8 @@ static void cpx_solve(cpx_t *cpx) CPXgetbestobjval(cpx->env, cpx->prob, &lpp->best_bound); /* get some statistics */ - my_timersub(&tva, &tvb, &tvdiff); - lpp->sol_time = tvdiff.tv_sec + tvdiff.tv_usec / 1e6; + timing_ticks_sub(tva, tvb); + lpp->sol_time = timing_ticks_dbl(tva); lpp->iterations = CPXgetmipitcnt(cpx->env, cpx->prob); } diff --git a/ir/lpp/lpp_gurobi.c b/ir/lpp/lpp_gurobi.c index ce20157bc..7ec41a02b 100644 --- a/ir/lpp/lpp_gurobi.c +++ b/ir/lpp/lpp_gurobi.c @@ -5,13 +5,12 @@ */ #include "config.h" +#ifdef WITH_GUROBI #include "lpp_gurobi.h" #include #include -#ifdef WITH_GUROBI - #include "obst.h" #include @@ -22,16 +21,6 @@ static char gurobi_cst_encoding[4] = { 0, GRB_EQUAL, GRB_LESS_EQUAL, GRB_GREATER_EQUAL }; static char gurobi_var_encoding[4] = { 0, 0, GRB_CONTINUOUS, GRB_BINARY }; -#define my_timersub(tvp, uvp, vvp) \ - do { \ - (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \ - (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \ - if ((vvp)->tv_usec < 0) { \ - (vvp)->tv_sec--; \ - (vvp)->tv_usec += 1000000; \ - } \ - } while (0) - typedef struct _gurobi_t { lpp_t *lpp; GRBenv *env; diff --git a/ir/lpp/lpp_solvers.c b/ir/lpp/lpp_solvers.c index ec61b19bb..1feb44bce 100644 --- a/ir/lpp/lpp_solvers.c +++ b/ir/lpp/lpp_solvers.c @@ -8,46 +8,10 @@ */ #include "config.h" -#include - #include "lpp_cplex.h" #include "lpp_solvers.h" #include "lpp_gurobi.h" -static void dummy_solver(lpp_t *lpp) -{ - int i; - - for(i = 0; i < lpp->var_next; ++i) { - lpp->vars[i]->value = i; - lpp->vars[i]->value_kind = lpp_value_solution; - } - - if(lpp->log) - fprintf(lpp->log, "dummy solver exiting now.\n"); - - sleep(1); - lpp->sol_time = 0.0; - lpp->iterations = 0; - lpp->sol_state = lpp_optimal; -} - -static void segv_solver(lpp_t *lpp) -{ - int i; - - for(i = 0; i < lpp->var_next; ++i) { - lpp->vars[i]->value = i; - lpp->vars[i]->value_kind = lpp_value_solution; - } - - if(lpp->log) - fprintf(lpp->log, "segv dummy solver exiting now.\n"); - - sleep(1); - *((int *) 0) = 1; -} - lpp_solver_t lpp_solvers[] = { #ifdef WITH_CPLEX { lpp_solve_cplex, "cplex", 1 }, @@ -55,8 +19,6 @@ lpp_solver_t lpp_solvers[] = { #ifdef WITH_GUROBI { lpp_solve_gurobi, "gurobi", 1 }, #endif - { dummy_solver, "dummy", 2 }, - { segv_solver, "segv", 2 }, { NULL, NULL, 0 } }; diff --git a/ir/lpp/sp_matrix.c b/ir/lpp/sp_matrix.c index 1059c0afa..7a598a176 100644 --- a/ir/lpp/sp_matrix.c +++ b/ir/lpp/sp_matrix.c @@ -10,13 +10,7 @@ * Complexity is O(1) then. * Random access or right-to-left and bottom-to-top is O(m*n). */ - -#ifdef _WIN32 -#include -#endif -#ifdef HAVE_ALLOCA_H -#include -#endif +#include "config.h" #include #include -- 2.20.1