Skip to content

Commit 0c038d8

Browse files
committed
removed is_max_bsp
1 parent f9ddfa7 commit 0c038d8

File tree

4 files changed

+48
-45
lines changed

4 files changed

+48
-45
lines changed

include/osp/bsp/model/BspScheduleCS.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -472,8 +472,6 @@ class BspScheduleCS : public BspSchedule<Graph_t> {
472472
}
473473
}
474474
}
475-
476-
virtual bool isMaxBsp() const { return false; }
477475
};
478476

479477
} // namespace osp

include/osp/bsp/model/MaxBspScheduleCS.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,6 @@ class MaxBspScheduleCS : public BspScheduleCS<Graph_t> {
117117
}
118118
return costs;
119119
}
120-
121-
virtual bool isMaxBsp() const override { return true; }
122120
};
123121

124122
} // namespace osp

include/osp/bsp/scheduler/IlpSchedulers/CoptFullScheduler.hpp

Lines changed: 46 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -782,6 +782,41 @@ class CoptFullScheduler : public Scheduler<Graph_t> {
782782
model.SetObjective(expr - instance.synchronisationCosts(), COPT_MINIMIZE);
783783
}
784784

785+
RETURN_STATUS run_scheduler(BspScheduleCS<Graph_t> &schedule) {
786+
auto &instance = schedule.getInstance();
787+
Envr env;
788+
Model model = env.CreateModel("bsp_schedule");
789+
790+
setupVariablesConstraintsObjective(instance, model);
791+
792+
if (use_initial_schedule) {
793+
loadInitialSchedule(model, instance);
794+
}
795+
796+
computeScheduleBase(schedule, model);
797+
798+
if (model.GetIntAttr(COPT_INTATTR_MIPSTATUS) == COPT_MIPSTATUS_OPTIMAL) {
799+
800+
constructBspScheduleFromSolution(schedule, true);
801+
return RETURN_STATUS::OSP_SUCCESS;
802+
803+
} else if (model.GetIntAttr(COPT_INTATTR_MIPSTATUS) == COPT_MIPSTATUS_INF_OR_UNB) {
804+
805+
return RETURN_STATUS::ERROR;
806+
807+
} else {
808+
809+
if (model.GetIntAttr(COPT_INTATTR_HASMIPSOL)) {
810+
811+
constructBspScheduleFromSolution(schedule, true);
812+
return RETURN_STATUS::BEST_FOUND;
813+
814+
} else {
815+
return RETURN_STATUS::TIMEOUT;
816+
}
817+
}
818+
}
819+
785820
public:
786821
CoptFullScheduler(unsigned steps = 5)
787822
: allow_recomputation(false), use_memory_constraint(false), use_initial_schedule(false), initial_schedule(0),
@@ -831,62 +866,34 @@ class CoptFullScheduler : public Scheduler<Graph_t> {
831866
return status;
832867
}
833868
}
834-
virtual RETURN_STATUS computeSchedule(MaxBspSchedule<Graph_t> &schedule) {
869+
virtual RETURN_STATUS computeMaxBspSchedule(MaxBspSchedule<Graph_t> &schedule) {
835870

836871
MaxBspScheduleCS<Graph_t> schedule_cs(schedule.getInstance());
837-
RETURN_STATUS status = computeScheduleCS(schedule_cs);
872+
RETURN_STATUS status = computeMaxBspScheduleCS(schedule_cs);
838873
if (status == RETURN_STATUS::OSP_SUCCESS || status == RETURN_STATUS::BEST_FOUND) {
839874
schedule = std::move(schedule_cs);
840875
return status;
841876
} else {
842877
return status;
843878
}
844879
}
845-
virtual RETURN_STATUS computeScheduleCS(BspScheduleCS<Graph_t> &schedule) override {
846-
847-
auto &instance = schedule.getInstance();
848-
880+
881+
virtual RETURN_STATUS computeMaxBspScheduleCS(MaxBspScheduleCS<Graph_t> &schedule) {
849882
allow_recomputation = false;
883+
is_max_bsp = true;
884+
return run_scheduler(schedule);
885+
}
850886

851-
is_max_bsp = schedule.isMaxBsp();
852-
853-
Envr env;
854-
Model model = env.CreateModel("bsp_schedule_cs");
855-
856-
setupVariablesConstraintsObjective(instance, model);
857-
858-
if (use_initial_schedule) {
859-
loadInitialSchedule(model, instance);
860-
}
861-
862-
computeScheduleBase(schedule, model);
863-
864-
if (model.GetIntAttr(COPT_INTATTR_MIPSTATUS) == COPT_MIPSTATUS_OPTIMAL) {
865-
866-
constructBspScheduleFromSolution(schedule, true);
867-
return RETURN_STATUS::OSP_SUCCESS;
868-
869-
} else if (model.GetIntAttr(COPT_INTATTR_MIPSTATUS) == COPT_MIPSTATUS_INF_OR_UNB) {
870-
871-
return RETURN_STATUS::ERROR;
872-
873-
} else {
874-
875-
if (model.GetIntAttr(COPT_INTATTR_HASMIPSOL)) {
876-
877-
constructBspScheduleFromSolution(schedule, true);
878-
return RETURN_STATUS::BEST_FOUND;
879887

880-
} else {
881-
return RETURN_STATUS::TIMEOUT;
882-
}
883-
}
888+
virtual RETURN_STATUS computeScheduleCS(BspScheduleCS<Graph_t> &schedule) override {
889+
allow_recomputation = false;
890+
is_max_bsp = false;
891+
return run_scheduler(schedule);
884892
}
885893

886894
virtual RETURN_STATUS computeScheduleRecomp(BspScheduleRecomp<Graph_t> &schedule) {
887895

888896
allow_recomputation = true;
889-
890897
is_max_bsp = false;
891898

892899
Envr env;

tests/ilp_bsp_scheduler.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,13 +173,13 @@ BOOST_AUTO_TEST_CASE(test_full) {
173173
CoptFullScheduler<graph> scheduler_max;
174174
MaxBspScheduleCS<graph> schedule_max(instance);
175175
scheduler_max.setTimeLimitSeconds(10);
176-
const auto result_max = scheduler_max.computeScheduleCS(schedule_max);
176+
const auto result_max = scheduler_max.computeMaxBspScheduleCS(schedule_max);
177177
BOOST_CHECK_EQUAL(RETURN_STATUS::BEST_FOUND, result_max);
178178
BOOST_CHECK(schedule_max.satisfiesPrecedenceConstraints());
179179
BOOST_CHECK(schedule_max.hasValidCommSchedule());
180180

181181
scheduler_max.setInitialSolutionFromBspSchedule(schedule_max);
182-
const auto result_max2 = scheduler_max.computeScheduleCS(schedule_max);
182+
const auto result_max2 = scheduler_max.computeMaxBspScheduleCS(schedule_max);
183183
BOOST_CHECK_EQUAL(RETURN_STATUS::BEST_FOUND, result_max2);
184184
BOOST_CHECK(schedule_max.satisfiesPrecedenceConstraints());
185185
BOOST_CHECK(schedule_max.hasValidCommSchedule());

0 commit comments

Comments
 (0)