Exemplo n.º 1
0
    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;
    }
Exemplo n.º 2
0
Arquivo: mvle.cpp Projeto: rousse/vle
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");
        }
    }
}
Exemplo n.º 3
0
    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;
    }