OpenM++ runtime library (libopenm)
|
controller for "restart run": calculate outstanding sub-values for existing run More...
#include <runControllerImpl.h>
Public Member Functions | |
RestartController (const ArgReader &i_argStore, IDbExec *i_dbExec) | |
create new "restart run" controller | |
virtual | ~RestartController (void) noexcept |
last cleanup | |
virtual int | nextRun (void) override |
create new run and input parameters in database. More... | |
virtual void | readParameter (const char *i_name, int i_subId, const type_info &i_type, size_t i_size, void *io_valueArr) override |
read input parameter values. More... | |
virtual void | writeAccumulators (const RunOptions &i_runOpts, bool i_isLastTable, const char *i_name, size_t i_size, forward_list< unique_ptr< double[]> > &io_accValues) override |
write output table accumulators. More... | |
virtual void | shutdownRun (int i_runId) override |
model run shutdown: save results and update run status. More... | |
virtual void | shutdownWaitAll (void) override |
model process shutdown: cleanup resources. More... | |
virtual void | shutdownOnExit (ModelStatus i_status) override |
model process shutdown if exiting without completion (ie: exit on error). More... | |
virtual bool | childExchange (void) override |
communicate with between main therad and modeling threads to receive status update. More... | |
Public Member Functions inherited from openm::RunController | |
virtual | ~RunController (void) noexcept=0 |
last cleanup | |
int | parameterIdByName (const char *i_name) const override |
return index of parameter by name More... | |
int | parameterSubCount (int i_paramId) const override |
number of parameter sub-values for current model run More... | |
int | parameterSelfSubCount (int i_paramId) const override |
number of parameter sub-values for current process More... | |
int | parameterSubValueIndex (int i_paramId, int i_subId) const override |
return index of parameter sub-value in the storage array of sub-values More... | |
bool | isUseSubValue (int i_subId) const override |
return true if sub-value used by current process More... | |
RunStateHolder & | runStateStore (void) |
return holder of all sub-values modeling run states | |
virtual int | nextRun (void)=0 |
create new run and input parameters in database. More... | |
virtual void | shutdownRun (int i_runId)=0 |
model run shutdown: save results and update run status. More... | |
virtual void | shutdownWaitAll (void)=0 |
model process shutdown: cleanup resources. More... | |
virtual void | shutdownOnExit (ModelStatus i_status)=0 |
model process shutdown if exiting without completion (ie: exit on error). More... | |
virtual bool | childExchange (void)=0 |
exchange between root and child processes and threads. More... | |
virtual void | writeAccumulators (const RunOptions &i_runOpts, bool i_isLastTable, const char *i_name, size_t i_size, forward_list< unique_ptr< double[]> > &io_accValues)=0 |
write output table accumulators or send data to root process. More... | |
bool | isOptionExist (const char *i_key) const noexcept override |
return true if run option found by i_key in run_option table for the current run id. More... | |
string | strOption (const char *i_key, const string &i_default="") const noexcept override |
return string value of run option by i_key or default value if not found. | |
bool | boolOption (const char *i_key) const noexcept override |
return boolean value of run option by i_key or false if not found or value is not "yes", "1", "true" or empty "" string. More... | |
int | boolOptionToInt (const char *i_key) const noexcept override |
search for boolean value of run option by i_key and return one of: return 1 if key found and value is one of: "yes", "1", "true" or empty value, return 0 if key found and value is one of: "no", "0", "false", return -1 if key not found, return -2 otherwise. More... | |
int | intOption (const char *i_key, int i_default) const noexcept override |
return int value of run option by i_key or default if not found or can not be converted to int. More... | |
long long | longOption (const char *i_key, long long i_default) const noexcept override |
return long value of run option by i_key or default if not found or can not be converted to long. More... | |
double | doubleOption (const char *i_key, double i_default) const noexcept override |
return double value of run option by i_key or default if not found or can not be converted to double. More... | |
vector< pair< string, string > > | allOptions (void) const noexcept override |
return a copy of all run options as [key, value] pairs, ordered by key. More... | |
void | pushDbMicrodata (int i_runId, int i_entityKind, uint64_t i_microdataKey, const void *i_entityThis) |
push microdata database rows into the buffer. More... | |
void | writeCsvMicrodata (int i_entityKind, uint64_t i_microdataKey, int i_eventId, bool i_isSameEntity, const void *i_entityThis, string &io_line) |
write microdata into the CSV file. More... | |
const string | csvHeaderMicrodata (int i_entityKind) const |
return microdata entity csv file header | |
void | makeCsvLineMicrodata (const EntityItem &i_entityItem, uint64_t i_microdataKey, int i_eventId, bool i_isSameEntity, const void *i_entityThis, string &io_line) const |
make attributes csv line by converting attribute values into string | |
tuple< bool, const RunController::EntityItem & > | findEntityItem (int i_entityKind) const |
check if any microdata write required for this entity kind | |
bool | isEntityEventInFilter (int i_entityKind, uint64_t i_microdataKey, int i_eventId) const |
retrun true if entity event id is matching events filter or if there no filter and all events are allowed | |
Public Member Functions inherited from openm::MetaLoader | |
virtual | ~MetaLoader (void) noexcept=0 |
last cleanup | |
const ArgReader & | argOpts (void) const |
arguments from command line and ini-file | |
const MetaHolder * | meta (void) const |
model metadata tables | |
const RunOptions | modelRunOptions (int i_subCount, int i_subId) const |
return basic model run options | |
int | parameterSubCount (int i_paramId) const |
return sub-values count by parameter id | |
int | parameterIdByName (const char *i_name) const |
return index of parameter by name More... | |
int | tableIdByName (const char *i_name) const |
return id of output table by name | |
bool | isSuppressed (const char *i_name) const |
check by name if output table suppressed | |
bool | isSuppressed (int i_tableId) const |
check by id if output table suppressed | |
Public Member Functions inherited from openm::IRunBase | |
virtual int | parameterIdByName (const char *i_name) const =0 |
return id of parameter by name More... | |
virtual int | parameterSubCount (int i_paramId) const =0 |
number of parameter sub-values More... | |
virtual int | parameterSelfSubCount (int i_paramId) const =0 |
number of parameter sub-values for current process More... | |
virtual int | parameterSubValueIndex (int i_paramId, int i_subId) const =0 |
return index of parameter sub-value in the storage array of sub-values More... | |
virtual bool | isUseSubValue (int i_subId) const =0 |
return true if sub-value used by current process More... | |
virtual void | readParameter (const char *i_name, int i_subId, const std::type_info &i_type, size_t i_size, void *io_valueArr)=0 |
read model parameter | |
Public Member Functions inherited from openm::IRunOptions | |
virtual bool | isOptionExist (const char *i_key) const noexcept=0 |
return true if run option found by i_key in run_option table for the current run id. More... | |
virtual std::string | strOption (const char *i_key, const std::string &i_default="") const noexcept=0 |
return string value of run option by i_key or default value if not found. | |
virtual bool | boolOption (const char *i_key) const noexcept=0 |
return boolean value of run option by i_key or false if not found or value is not "yes", "1", "true" or empty "" string. More... | |
virtual int | boolOptionToInt (const char *i_key) const noexcept=0 |
search for boolean value of run option by i_key and return one of: return 1 if key found and value is one of: "yes", "1", "true" or empty value, return 0 if key found and value is one of: "no", "0", "false", return -1 if key not found, return -2 otherwise. More... | |
virtual int | intOption (const char *i_key, int i_default) const noexcept=0 |
return int value of run option by i_key or default if not found or can not be converted to int. More... | |
virtual long long | longOption (const char *i_key, long long i_default) const noexcept=0 |
return long value of run option by i_key or default if not found or can not be converted to long. More... | |
virtual double | doubleOption (const char *i_key, double i_default) const noexcept=0 |
return double value of run option by i_key or default if not found or can not be converted to double. More... | |
virtual std::vector< std::pair< std::string, std::string > > | allOptions (void) const noexcept=0 |
return a copy of all run options as [key, value] pairs, ordered by key. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from openm::RunController | |
static RunController * | create (const ArgReader &i_argOpts, bool i_isMpiUsed, IDbExec *i_dbExec, IMsgExec *i_msgExec) |
create run controller, load metadata tables and broadcast it to all modeling processes. | |
Static Public Member Functions inherited from openm::MetaLoader | |
static const ArgReader | getRunOptions (int argc, char **argv) |
initialize run options from command line and ini-file More... | |
Public Attributes inherited from openm::RunController | |
int | subFirstId |
sub-value staring index for current modeling process | |
int | selfSubCount |
number of sub-values for current process | |
int | processCount |
number of modeling processes: MPI world size | |
int | processRank |
modeling processes rank: MPI rank | |
Public Attributes inherited from openm::MetaLoader | |
int | subValueCount |
total number of sub-values | |
int | threadCount |
max number of modeling threads | |
Protected Types inherited from openm::MetaLoader | |
enum class | KindSubIds : int { none = 0 , single = 1 , defaultId = 2 , range =3 , list = 4 } |
enum class | FromSub : int { defaultValue = 0 , db = 1 , csv = 2 , iota = 3 } |
enum class | ImportKind : int { none = 0 , modelName = 1 , modelId = 2 , modelDigest = 3 , runName = 4 , runId = 5 , runDigest = 6 } |
Protected Member Functions inherited from openm::RunController | |
RunController (const ArgReader &i_argStore) | |
create run controller | |
virtual void | init (void)=0 |
get number of sub-values, read and broadcast metadata. More... | |
virtual int | currentRunId (void) const noexcept=0 |
get run id of the current model run. More... | |
int | createTaskRun (int i_taskId, IDbExec *i_dbExec) |
create task run entry in database | |
int | findTask (IDbExec *i_dbExec) |
find modeling task, if specified | |
tuple< int, int, ModelStatus > | createNewRun (int i_taskRunId, bool i_isWaitTaskRun, IDbExec *i_dbExec) |
create new run, create input parameters and run options for input working sets | |
void | doShutdownOnExit (ModelStatus i_status, int i_runId, int i_taskRunId, IDbExec *i_dbExec) |
impelementation of model process shutdown if exiting without completion. | |
void | doShutdownRun (int i_runId, int i_taskRunId, IDbExec *i_dbExec) |
implementation of model run shutdown. | |
void | doShutdownAll (int i_taskRunId, IDbExec *i_dbExec) |
implementation model process shutdown. More... | |
void | doWriteAccumulators (int i_runId, IDbExec *i_dbExec, const RunOptions &i_runOpts, const char *i_name, size_t i_size, forward_list< unique_ptr< double[]> > &io_accValues) const |
write output table accumulators if table is not suppressed. | |
void | updateRestartSubValueId (int i_runId, IDbExec *i_dbExec, int i_subRestart) const |
update sub-value index to restart the run | |
void | updateRunState (IDbExec *i_dbExec, const map< pair< int, int >, RunState > i_updated) const |
merge updated sub-values run statue into database | |
map< int, list< unique_ptr< uint8_t[]> > > | pullDbMicrodata (bool i_isNow=false) |
pull microdata database rows from the buffer. More... | |
size_t | doDbMicrodata (IDbExec *i_dbExec, int i_entityId, IRowsFirstNext &i_entityMdRows) |
write entity microdata rows into database and return inserted rows count More... | |
size_t | doDbMicrodataSql (IDbExec *i_dbExec, const map< int, list< unique_ptr< uint8_t[]> > > &i_entityMdRows) |
write microdata into database using sql insert literal and return inserted rows count More... | |
void | openCsvMicrodata (void) |
create microdata CSV files for new model run. | |
Protected Member Functions inherited from openm::MetaLoader | |
MetaLoader (const ArgReader &i_argStore) | |
create metadata loader. | |
const RunOptions & | modelRunOptions (void) const |
return basic model run options | |
void | setRunOptions (const RunOptions &i_opts) |
set basic model run options | |
void | loadMessages (IDbExec *i_dbExec) |
read model messages from database. More... | |
void | mergeOptions (IDbExec *i_dbExec) |
merge command line and ini-file arguments with profile_option table values. More... | |
Static Protected Member Functions inherited from openm::MetaLoader | |
static int | readMetaTables (IDbExec *i_dbExec, MetaHolder *io_metaStore, const char *i_name, const char *i_digest) |
Protected Attributes inherited from openm::RunController | |
map< int, EntityItem > | entityMap |
vector< int > | entityIds |
Protected Attributes inherited from openm::MetaLoader | |
int | modelId |
unique_ptr< MetaHolder > | metaStore |
vector< int > | paramIdSubArr |
vector< int > | tableIdSuppressArr |
vector< int > | entityIdxArr |
bool | isCsvEventColumn |
vector< bool > | entityUseEvents |
map< int, ParamSubOpts > | subOptsMap |
map< string, ImportOpts > | importOptsMap |
map< int, ParamImportOpts > | paramImportOptsMap |
map< int, pair< string, string > > | langOptsMap |
controller for "restart run": calculate outstanding sub-values for existing run
|
overridevirtual |
communicate with between main therad and modeling threads to receive status update.
Implements openm::RunController.
|
overridevirtual |
create new run and input parameters in database.
restart existing model run.
model run id supplied by command-line or ini-file argument and must exist in run_lst table.
sub-value to restart from is value of run_lst.sub_restart column.
number of outstanding sub-values = total number of sub-values - run_lst.sub_restart
if number of outstanding sub-values <= 0 and run_lst.status != success
then output tables aggregated values re-calculated
it creates a copy of input paramters from source working set under destination run_id
search for input parameter value in following order:
any scalar parameter value can be overriden by model run option with "Parameter" prefix
for example, command line:
model.exe -Parameter.Population 1234
means input parameter with name "Population" will be =1234
in that case working set value of "Population" input parameter ignored
because command line options have higher priority than database values.
Implements openm::RunController.
|
overridevirtual |
read input parameter values.
[in] | i_name | parameter name |
[in] | i_subId | parameter sub-value index |
[in] | i_type | parameter type |
[in] | i_size | parameter size (number of parameter values) |
[in,out] | io_valueArr | array to return parameter values, size must be =i_size |
|
inlineoverridevirtual |
model process shutdown if exiting without completion (ie: exit on error).
Implements openm::RunController.
|
inlineoverridevirtual |
model run shutdown: save results and update run status.
Implements openm::RunController.
|
inlineoverridevirtual |
model process shutdown: cleanup resources.
Implements openm::RunController.
|
overridevirtual |
write output table accumulators.
[in] | i_runOpts | model run options |
[in] | i_isLastTable | if true then it is last output table to write |
[in] | i_name | output table name |
[in] | i_size | number of cells for each accumulator |
[in,out] | io_accValues | accumulator values |
Implements openm::RunController.