Class OptimizationApplication

Class Documentation

class OptimizationApplication

The OptimizationApplication class parses command line arguments, initializes MPI if required, opens data and results files and starts an optimization.

Public Functions

OptimizationApplication() = default
virtual ~OptimizationApplication()
virtual void initProblem(std::string const &inFileArgument, std::string const &outFileArgument) = 0

User-provided problem initialization. Must set OptimizationApplication::problem, OptimizationApplication::multiStartOptimization and should set OptimizationApplication::resultWriter.

Parameters:
  • inFileArgument

  • outFileArgument

int run(int argc, char **argv)

Start the optimization run. Must only be called once. Initializes MPI if not already done. Must be called before any other functions.

Returns:

status code; 0 on success

virtual void runMaster()

This is run by the MPI rank 0 process when started with multiple processes.

virtual void runSingleProcess()

Code to be run if the application is running on only 1 process.

Protected Types

enum class OperationType

Values:

enumerator parameterEstimation
enumerator gradientCheck

Protected Functions

virtual void finalizeTiming(double wallTimeSeconds, double cpuTimeSeconds)

Receives and writes the total programm runtime.

Parameters:

begin

std::string processResultFilenameCommandLineArgument(const char *commandLineArg)

processResultFilenameCommandLineArgument

Parameters:

commandLineArg

Returns:

Result file name

bool isMaster()

Are we running with MPI and are we master process?

Returns:

bool isWorker()

Are we running with MPI and are we a worker?

Returns:

virtual int parseCliOptionsPreMpiInit(int argc, char **argv)

Parse command line options before MPI_INIT is potentially called.

Used e.g. to print usage information without first initialization MPI.

Argv may contain extra MPI arguments.

Parameters:
  • argc

  • argv

Returns:

virtual int parseCliOptionsPostMpiInit(int argc, char **argv)

Parse command line options after MPI_Init is called.

Any MPI-related CLI arguments will be removed here.

Parameters:
  • argc

  • argv

Returns:

virtual void printUsage(char *const argZero)

Print CLI usage.

Parameters:

argZero

virtual void logParPEVersion(const H5::H5File &file) const

Protected Attributes

const char *shortOptions = "dhvmt:o:s:"
struct option const longOptions[9] = {{"debug", no_argument, nullptr, 'd'}, {"print-worklist", no_argument, nullptr, 'p'}, {"help", no_argument, nullptr, 'h'}, {"version", no_argument, nullptr, 'v'}, {"mpi", no_argument, nullptr, 'm'}, {"task", required_argument, nullptr, 't'}, {"outfile-prefix", required_argument, nullptr, 'o'}, {"first-start-idx", required_argument, nullptr, 's'}, {nullptr, 0, nullptr, 0}}
std::string dataFileName
std::string resultFileName
int first_start_idx = {0}
std::unique_ptr<MultiStartOptimizationProblem> multiStartOptimizationProblem
std::unique_ptr<OptimizationProblem> problem
H5::H5File h5File = 0
OperationType operationType = OperationType::parameterEstimation
LoadBalancerMaster loadBalancer
bool withMPI = false

Protected Static Functions

static void initMPI(int *argc, char ***argv)

Initialize MPI.

Parameters:
  • argc

  • argv