value::Matrix * runManagerThread(vpz::Vpz *vpz, utils::ModuleManager& modulemgr, uint32_t threads, uint32_t rank, uint32_t world, Error *error) { ExperimentGenerator expgen(*vpz, rank, world); std::string vpzname(vpz->project().experiment().name()); boost::thread_group gp; value::Matrix *result = new value::Matrix(expgen.size(), 1, expgen.size(), 1); for (uint32_t i = 0; i < threads; ++i) { gp.create_thread(worker(vpz, expgen, modulemgr, mLogOption, mSimulationOption, i, threads, result, error)); } gp.join_all(); delete vpz->project().model().model(); delete vpz; return result; }
void mvle_show(const std::string& vpz) { vle::manager::ExperimentGenerator expgen(vpz, 0, 1); if (expgen.size()) { vle::vpz::Conditions conds; vle::vpz::Conditions::iterator it; expgen.get(expgen.min(), &conds); mvle_print(";"); for (it = conds.begin(); it != conds.end(); ++it) { const vle::vpz::Condition& cond = it->second; vle::vpz::Condition::const_iterator jt; for (jt = cond.begin(); jt != cond.end(); ++jt) { mvle_print("%s.%s;", it->first.c_str(), jt->first.c_str()); } } mvle_print("\n"); for (uint32_t i = expgen.min(); i < expgen.max(); ++i) { expgen.get(i, &conds); mvle_print("%d;", i); for (it = conds.begin(); it != conds.end(); ++it) { const vle::vpz::Condition& cond = it->second; vle::vpz::Condition::const_iterator jt; for (jt = cond.begin(); jt != cond.end(); ++jt) { mvle_print("%s;", jt->second->get(0)->writeToFile().c_str()); } } mvle_print("\n"); } } }
value::Matrix * runManagerMono(vpz::Vpz *vpz, utils::ModuleManager &modulemgr, uint32_t rank, uint32_t world, Error *error) { Simulation sim(mLogOption, mSimulationOption, NULL); ExperimentGenerator expgen(*vpz, rank, world); std::string vpzname(vpz->project().experiment().name()); value::Matrix *result = 0; error->code = 0; error->message.clear(); if (mSimulationOption & manager::SIMULATION_NO_RETURN) { for (uint32_t i = expgen.min(); i <= expgen.max(); ++i) { Error err; vpz::Vpz *file = new vpz::Vpz(*vpz); setExperimentName(file, vpzname, i); expgen.get(i, &file->project().experiment().conditions()); sim.run(file, modulemgr, &err); if (err.code) { writeRunLog(err.message); if (not error->code) { error->code = -1; error->message = _("Manager failure."); } } } } else { result = new value::Matrix(expgen.size(), 1, expgen.size(), 1); for (uint32_t i = expgen.min(); i <= expgen.max(); ++i) { Error err; vpz::Vpz *file = new vpz::Vpz(*vpz); setExperimentName(file, vpzname, i); expgen.get(i, &file->project().experiment().conditions()); value::Map *simresult = sim.run(file, modulemgr, &err); if (err.code) { writeRunLog(err.message); if (not error->code) { error->code = -1; error->message = _("Manager failure."); } } else { result->add(i, 0, simresult); } } } delete vpz->project().model().model(); delete vpz; return result; }