OPAL (Object Oriented Parallel Accelerator Library) 2024.2
OPAL
Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t > Class Template Reference

#include <Pilot.h>

Inheritance diagram for Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >:
Collaboration diagram for Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >:

Public Member Functions

 Pilot (CmdArguments_t args, std::shared_ptr< Comm_t > comm, const DVarContainer_t &dvar)
 Pilot (CmdArguments_t args, std::shared_ptr< Comm_t > comm, functionDictionary_t known_expr_funcs)
 Pilot (CmdArguments_t args, std::shared_ptr< Comm_t > comm, functionDictionary_t known_expr_funcs, const DVarContainer_t &dvar, const Expressions::Named_t &obj, const Expressions::Named_t &cons, std::vector< double > hypervolRef={}, bool isOptimizerRun=true, const std::map< std::string, std::string > &userVariables={})
virtual ~Pilot ()

Protected Types

typedef MasterNode< typename Opt_t::SolutionState_t, SolPropagationGraph_t > MasterNode_t
typedef std::map< size_t, std::pair< Param_t, reqVarContainer_t > > Jobs_t
 keep track of requests and running jobs
typedef Jobs_t::iterator JobIter_t

Protected Member Functions

void parseInputFile (functionDictionary_t, bool isOptimizationRun)
virtual void startOptimizer ()
virtual void startWorker (const std::map< std::string, std::string > &userVariables)
virtual void startPilot ()
virtual void setupPoll ()
 executed before starting polling loop
virtual void prePoll ()
 executed before checking for new request
virtual void onStop ()
 enable implementation to react to STOP tag
virtual void postPoll ()
 executed after handling (if any) new request
virtual void sendNewJobToWorker (int worker)
virtual bool onMessage (MPI_Status status, size_t recv_value)
bool stop (bool isOpt=true)
void run ()

Protected Attributes

MPI_Comm worker_comm_
 MPI communicator used for messages to/from worker.
MPI_Comm opt_comm_
 MPI communicator used for messages to/from optimizer.
MPI_Comm coworker_comm_
 MPI communicator used for messages between all pilots.
std::shared_ptr< Comm_t > comm_
CmdArguments_t cmd_args_
int global_rank_
int my_rank_in_worker_comm_
int my_rank_in_opt_comm_
int num_coworkers_
std::unique_ptr< MasterNode_tmaster_node_
std::string input_file_
 input file for simulation with embedded optimization problem
int total_available_workers_
bool has_opt_converged_
bool continue_polling_
Expressions::Named_t objectives_
 objectives
Expressions::Named_t constraints_
 constraints
DVarContainer_t dvars_
 design variables
std::vector< double > hypervolRef_
 hypervolume reference point
std::vector< bool > is_worker_idle_
Jobs_t running_job_list_
Jobs_t request_queue_
std::unique_ptr< Tracejob_trace_
MPI_Comm comm_m
 communicator the poller listens to requests
bool is_running_
double last_polled_
 time of last MPI_Test
double poll_delay_
 delay in seconds between polls

Private Member Functions

void setup (functionDictionary_t known_expr_funcs, const std::map< std::string, std::string > &userVariables)

Detailed Description

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
class Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >

Definition at line 99 of file Pilot.h.

Member Typedef Documentation

◆ JobIter_t

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
typedef Jobs_t::iterator Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::JobIter_t
protected

Definition at line 194 of file Pilot.h.

◆ Jobs_t

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
typedef std::map<size_t, std::pair<Param_t, reqVarContainer_t> > Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::Jobs_t
protected

keep track of requests and running jobs

Definition at line 193 of file Pilot.h.

◆ MasterNode_t

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
typedef MasterNode< typename Opt_t::SolutionState_t, SolPropagationGraph_t > Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::MasterNode_t
protected

Definition at line 173 of file Pilot.h.

Constructor & Destructor Documentation

◆ Pilot() [1/3]

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::Pilot ( CmdArguments_t args,
std::shared_ptr< Comm_t > comm,
const DVarContainer_t & dvar )
inline

Definition at line 105 of file Pilot.h.

References cmd_args_, comm_, dvars_, and Poller::Poller().

Referenced by SamplePilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::SamplePilot().

Here is the call graph for this function:

◆ Pilot() [2/3]

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::Pilot ( CmdArguments_t args,
std::shared_ptr< Comm_t > comm,
functionDictionary_t known_expr_funcs )
inline

Definition at line 115 of file Pilot.h.

References cmd_args_, comm_, Poller::Poller(), and setup().

Here is the call graph for this function:

◆ Pilot() [3/3]

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::Pilot ( CmdArguments_t args,
std::shared_ptr< Comm_t > comm,
functionDictionary_t known_expr_funcs,
const DVarContainer_t & dvar,
const Expressions::Named_t & obj,
const Expressions::Named_t & cons,
std::vector< double > hypervolRef = {},
bool isOptimizerRun = true,
const std::map< std::string, std::string > & userVariables = {} )
inline

Definition at line 124 of file Pilot.h.

◆ ~Pilot()

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
virtual Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::~Pilot ( )
inlinevirtual

Definition at line 144 of file Pilot.h.

References constraints_, and objectives_.

Member Function Documentation

◆ onMessage()

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
virtual bool Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::onMessage ( MPI_Status status,
size_t recv_value )
inlineprotectedvirtual

User specific behavior on receiving a message.

Returns
boolean indicating if Irecv has to be re-posted

Implements Poller.

Reimplemented in SamplePilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >.

Definition at line 434 of file Pilot.h.

References comm_, EXCHANGE_SOL_STATE_TAG, has_opt_converged_, is_worker_idle_, job_trace_, master_node_, MPI_EXCHANGE_SOL_STATE_DATA_TAG, MPI_EXCHANGE_SOL_STATE_RES_SIZE_TAG, MPI_EXCHANGE_SOL_STATE_RES_TAG, MPI_OPT_JOB_FINISHED_TAG, MPI_Recv_params(), MPI_Recv_reqvars(), MPI_Send_reqvars(), MPI_WORKER_FINISHED_ACK_TAG, num_coworkers_, opt_comm_, OPT_CONVERGED_TAG, OPT_NEW_JOB_TAG, request_queue_, running_job_list_, sendNewJobToWorker(), stop(), worker_comm_, WORKER_FINISHED_TAG, and WORKER_STATUSUPDATE_TAG.

Referenced by run().

Here is the call graph for this function:

◆ onStop()

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
virtual void Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::onStop ( )
inlineprotectedvirtual

enable implementation to react to STOP tag

Implements Poller.

Definition at line 369 of file Pilot.h.

◆ parseInputFile()

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
void Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::parseInputFile ( functionDictionary_t ,
bool isOptimizationRun )
inlineprotected

◆ postPoll()

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
virtual void Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::postPoll ( )
inlineprotectedvirtual

executed after handling (if any) new request

Implements Poller.

Reimplemented in SamplePilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >.

Definition at line 373 of file Pilot.h.

References continue_polling_, has_opt_converged_, is_worker_idle_, MPI_STOP_TAG, my_rank_in_worker_comm_, request_queue_, sendNewJobToWorker(), total_available_workers_, and worker_comm_.

Referenced by run().

Here is the call graph for this function:

◆ prePoll()

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
virtual void Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::prePoll ( )
inlineprotectedvirtual

executed before checking for new request

Implements Poller.

Definition at line 365 of file Pilot.h.

Referenced by run().

◆ run()

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
void Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::run ( )
inlineprotectedvirtual

The poll loop stops when receiving a 'MPI_STOP_TAG' otherwise passes message to user.

Reimplemented from Poller.

Definition at line 602 of file Pilot.h.

References cmd_args_, continue_polling_, coworker_comm_, MPI_STOP_TAG, onMessage(), opt_comm_, OPT_CONVERGED_TAG, postPoll(), prePoll(), setupPoll(), stop(), and worker_comm_.

Referenced by startPilot().

Here is the call graph for this function:

◆ sendNewJobToWorker()

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
virtual void Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::sendNewJobToWorker ( int worker)
inlineprotectedvirtual

Reimplemented in SamplePilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >.

Definition at line 405 of file Pilot.h.

References has_opt_converged_, is_worker_idle_, job_trace_, MPI_Send_params(), MPI_WORK_JOBID_TAG, request_queue_, running_job_list_, and worker_comm_.

Referenced by onMessage(), and postPoll().

Here is the call graph for this function:

◆ setup()

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
void Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::setup ( functionDictionary_t known_expr_funcs,
const std::map< std::string, std::string > & userVariables )
inlineprivate

Definition at line 202 of file Pilot.h.

References comm_, global_rank_, parseInputFile(), startOptimizer(), startPilot(), and startWorker().

Referenced by Pilot().

Here is the call graph for this function:

◆ setupPoll()

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
virtual void Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::setupPoll ( )
inlineprotectedvirtual

executed before starting polling loop

Implements Poller.

Definition at line 361 of file Pilot.h.

Referenced by run().

◆ startOptimizer()

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
virtual void Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::startOptimizer ( )
inlineprotectedvirtual

Definition at line 269 of file Pilot.h.

References cmd_args_, comm_, constraints_, dvars_, global_rank_, hypervolRef_, and objectives_.

Referenced by setup().

◆ startPilot()

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
virtual void Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::startPilot ( )
inlineprotectedvirtual

Definition at line 307 of file Pilot.h.

References cmd_args_, comm_, constraints_, continue_polling_, coworker_comm_, global_rank_, has_opt_converged_, is_worker_idle_, job_trace_, master_node_, my_rank_in_opt_comm_, my_rank_in_worker_comm_, num_coworkers_, objectives_, opt_comm_, run(), total_available_workers_, and worker_comm_.

Referenced by setup(), and SamplePilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::setup().

Here is the call graph for this function:

◆ startWorker()

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
virtual void Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::startWorker ( const std::map< std::string, std::string > & userVariables)
inlineprotectedvirtual

Definition at line 285 of file Pilot.h.

References cmd_args_, comm_, constraints_, global_rank_, input_file_, and objectives_.

Referenced by setup().

◆ stop()

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
bool Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::stop ( bool isOpt = true)
inlineprotected

Member Data Documentation

◆ cmd_args_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
CmdArguments_t Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::cmd_args_
protected

Definition at line 164 of file Pilot.h.

Referenced by parseInputFile(), Pilot(), Pilot(), run(), startOptimizer(), startPilot(), startWorker(), and stop().

◆ comm_

◆ comm_m

MPI_Comm Poller::comm_m
protectedinherited

◆ constraints_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
Expressions::Named_t Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::constraints_
protected

◆ continue_polling_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
bool Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::continue_polling_
protected

◆ coworker_comm_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
MPI_Comm Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::coworker_comm_
protected

MPI communicator used for messages between all pilots.

Definition at line 161 of file Pilot.h.

Referenced by run(), startPilot(), and stop().

◆ dvars_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
DVarContainer_t Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::dvars_
protected

◆ global_rank_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
int Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::global_rank_
protected

◆ has_opt_converged_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
bool Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::has_opt_converged_
protected

◆ hypervolRef_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
std::vector<double> Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::hypervolRef_
protected

hypervolume reference point

Definition at line 186 of file Pilot.h.

Referenced by startOptimizer().

◆ input_file_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
std::string Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::input_file_
protected

input file for simulation with embedded optimization problem

Definition at line 177 of file Pilot.h.

Referenced by parseInputFile(), startWorker(), and SamplePilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::startWorker().

◆ is_running_

bool Poller::is_running_
protectedinherited

◆ is_worker_idle_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
std::vector<bool> Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::is_worker_idle_
protected

◆ job_trace_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
std::unique_ptr<Trace> Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::job_trace_
protected

◆ last_polled_

double Poller::last_polled_
protectedinherited

time of last MPI_Test

Definition at line 57 of file Poller.h.

Referenced by Poller(), and run().

◆ master_node_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
std::unique_ptr< MasterNode_t > Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::master_node_
protected

Definition at line 174 of file Pilot.h.

Referenced by onMessage(), and startPilot().

◆ my_rank_in_opt_comm_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
int Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::my_rank_in_opt_comm_
protected

Definition at line 168 of file Pilot.h.

Referenced by startPilot().

◆ my_rank_in_worker_comm_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
int Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::my_rank_in_worker_comm_
protected

◆ num_coworkers_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
int Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::num_coworkers_
protected

Definition at line 170 of file Pilot.h.

Referenced by onMessage(), startPilot(), and stop().

◆ objectives_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
Expressions::Named_t Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::objectives_
protected

◆ opt_comm_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
MPI_Comm Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::opt_comm_
protected

MPI communicator used for messages to/from optimizer.

Definition at line 159 of file Pilot.h.

Referenced by onMessage(), SamplePilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::onMessage(), run(), startPilot(), and stop().

◆ poll_delay_

double Poller::poll_delay_
protectedinherited

delay in seconds between polls

Definition at line 59 of file Poller.h.

Referenced by Poller(), and run().

◆ request_queue_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
Jobs_t Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::request_queue_
protected

Definition at line 196 of file Pilot.h.

Referenced by onMessage(), postPoll(), sendNewJobToWorker(), and stop().

◆ running_job_list_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
Jobs_t Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::running_job_list_
protected

Definition at line 195 of file Pilot.h.

Referenced by onMessage(), and sendNewJobToWorker().

◆ total_available_workers_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
int Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::total_available_workers_
protected

◆ worker_comm_

template<class Opt_t, class Sim_t, class SolPropagationGraph_t, class Comm_t>
MPI_Comm Pilot< Opt_t, Sim_t, SolPropagationGraph_t, Comm_t >::worker_comm_
protected

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