OpenM++ runtime library (libopenm)
openm::RestartController Class Reference

controller for "restart run": calculate outstanding sub-values for existing run More...

#include <runControllerImpl.h>

Inheritance diagram for openm::RestartController:
Collaboration diagram for openm::RestartController:

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...
 
RunStateHolderrunStateStore (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 ArgReaderargOpts (void) const
 arguments from command line and ini-file
 
const MetaHoldermeta (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 RunControllercreate (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, ModelStatuscreateNewRun (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 RunOptionsmodelRunOptions (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, EntityItementityMap
 
vector< int > entityIds
 
- Protected Attributes inherited from openm::MetaLoader
int modelId
 
unique_ptr< MetaHoldermetaStore
 
vector< int > paramIdSubArr
 
vector< int > tableIdSuppressArr
 
vector< int > entityIdxArr
 
bool isCsvEventColumn
 
vector< bool > entityUseEvents
 
map< int, ParamSubOptssubOptsMap
 
map< string, ImportOptsimportOptsMap
 
map< int, ParamImportOptsparamImportOptsMap
 
map< int, pair< string, string > > langOptsMap
 

Detailed Description

controller for "restart run": calculate outstanding sub-values for existing run

Member Function Documentation

◆ childExchange()

bool RestartController::childExchange ( void  )
overridevirtual

communicate with between main therad and modeling threads to receive status update.

Implements openm::RunController.

◆ nextRun()

int RestartController::nextRun ( void  )
overridevirtual

create new run and input parameters in database.

restart existing model run.

  • (a) find model run and get number of outstanding sub-values
  • (b) delete any unfinished sub-value(s)
  • (c) prepare model input parameters (if required)

(a) find model run and get number of outstanding sub-values

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

(b) delete any unfinished sub-value(s)

  • delete from all accumulator tables where sub_id >= sub_restart
  • delete from output aggregated value tables where run_id = run id to restart

(c) prepare model input parameters

it creates a copy of input paramters from source working set under destination run_id

search for input parameter value in following order:

  • use value of parameter specified as command line or ini-file argument or from profile_option table
  • use parameter.csv file if parameters csv directory specified
  • use value of parameter from working set of model parameters
  • if working set based on model run then search by base run id to get parameter value
  • else raise an exception

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.

◆ readParameter()

void RestartController::readParameter ( const char *  i_name,
int  i_subId,
const type_info &  i_type,
size_t  i_size,
void *  io_valueArr 
)
overridevirtual

read input parameter values.

Parameters
[in]i_nameparameter name
[in]i_subIdparameter sub-value index
[in]i_typeparameter type
[in]i_sizeparameter size (number of parameter values)
[in,out]io_valueArrarray to return parameter values, size must be =i_size

◆ shutdownOnExit()

virtual void openm::RestartController::shutdownOnExit ( ModelStatus  i_status)
inlineoverridevirtual

model process shutdown if exiting without completion (ie: exit on error).

Implements openm::RunController.

◆ shutdownRun()

virtual void openm::RestartController::shutdownRun ( int  i_runId)
inlineoverridevirtual

model run shutdown: save results and update run status.

Implements openm::RunController.

◆ shutdownWaitAll()

virtual void openm::RestartController::shutdownWaitAll ( void  )
inlineoverridevirtual

model process shutdown: cleanup resources.

Implements openm::RunController.

◆ writeAccumulators()

void RestartController::writeAccumulators ( const RunOptions i_runOpts,
bool  i_isLastTable,
const char *  i_name,
size_t  i_size,
forward_list< unique_ptr< double[]> > &  io_accValues 
)
overridevirtual

write output table accumulators.

Parameters
[in]i_runOptsmodel run options
[in]i_isLastTableif true then it is last output table to write
[in]i_nameoutput table name
[in]i_sizenumber of cells for each accumulator
[in,out]io_accValuesaccumulator values

Implements openm::RunController.


The documentation for this class was generated from the following files: