|
| MPIMultiCommJobDistributor (core::Size sub_size) |
| ctor is protected; singleton pattern More...
|
|
virtual void | handle_interrupt () |
| This function got called when job is not yet finished and got termitated abnormaly (ctrl-c, kill etc). when implimenting it in subclasses make sure to delete all in-progress-data that your job spawn. More...
|
|
| MPIFileBufJobDistributor () |
| ctor is protected; singleton pattern More...
|
|
| MPIFileBufJobDistributor (core::Size master_rank, core::Size file_buf_rank, core::Size min_client_rank, bool start_empty=false) |
| protected ctor for child-classes More...
|
|
virtual bool | process_message (core::Size msg_tag, core::Size slave_rank, core::Size slave_job_id, core::Size slave_batch_id, core::Real runtime) |
|
virtual bool | next_batch () |
| switch current_batch_id_ to next batch More...
|
|
void | master_go (protocols::moves::MoverOP mover) |
| Handles the receiving of job requests and the sending of job ids to and from slaves. More...
|
|
core::Size | master_get_new_job_id () |
| Always returns zero, simply increments next_job_to_assign_ to the next job that should be run based on what has been completeted and the overwrite flags. More...
|
|
core::Size | slave_get_new_job_id () |
| requests, receives, and returns a new job id from the master node or returns the current job id if the repeat_job_ flag is set to true More...
|
|
void | master_mark_current_job_id_for_repetition () |
| This should never be called as this is handled internally by the slave nodes, it utility_exits. More...
|
|
void | slave_mark_current_job_id_for_repetition () |
| Sets the repeat_job_ flag to true. More...
|
|
void | master_remove_bad_inputs_from_job_list () |
| Simply increments next_job_to_assign_ to the next job that should be run based on what has been completed and if the input job tag of the job marked as having bad input. More...
|
|
void | slave_remove_bad_inputs_from_job_list () |
| Sends a message to the head node that contains the id of a job that had bad input. More...
|
|
void | master_job_succeeded (core::pose::Pose &pose, std::string const &tag) |
| This should never be called as this is handled internally by the slave nodes, it utility_exits. More...
|
|
void | slave_job_succeeded (core::pose::Pose &pose, std::string const &tag) |
| Sends a message to the head node upon successful job completion to avoid output interleaving. More...
|
|
void | slave_to_master (core::Size tag) |
| send a message to master More...
|
|
void | send_job_to_slave (core::Size slave_rank) |
| called by master to send and by slave to receive job More...
|
|
core::Size | rank () const |
| return rank of this process More...
|
|
core::Size | master_rank () const |
| return rank of master process ( where JobDistributor is running ) More...
|
|
core::Size | file_buf_rank () const |
| return rank of file-buffer process ( where output data (via ozstream )is handled ) More...
|
|
core::Size | number_of_processors () |
| how many processes — this includes dedicated processes More...
|
|
core::Size | n_rank () |
| how many processes — this includes dedicated processes More...
|
|
core::Size | n_worker () |
| how many workers — important to keep track during spin-down process More...
|
|
void | set_n_worker (core::Size setting) |
| how many workers — important to keep track during spin-down process More...
|
|
virtual void | mark_job_as_completed (core::Size job_id, core::Size batch_id, core::Real runtime) |
| marks job as completed in joblist More...
|
|
virtual void | mark_job_as_bad (core::Size job_id, core::Size batch_id) |
| marks job as bad in joblist More...
|
|
void | eat_signal (core::Size signal, int source) |
| receive a certain signal and ignore it.... this is needed, for instance, when MPIArchiveJobDistributor triggers an ADD_BATCH signal by sending QUEUE_EMPTY to the ArchiveManager... More...
|
|
| JobDistributor () |
| Singleton instantiation pattern; Derived classes will call default ctor, but their ctors, too must be protected (and the JDFactory must be their friend.) More...
|
|
| JobDistributor (bool empty) |
| MPIArchiveJobDistributor starts with an empty job-list... More...
|
|
void | go_main (protocols::moves::MoverOP mover) |
| Non-virtual get-job, run it, & output loop. This function is pretty generic and your subclass may be able to use it. It is NOT virtual - this implementation can be shared by (at least) the simple FileSystemJobDistributor, the MPIWorkPoolJobDistributor, and the MPIWorkPartitionJobDistributor. Do not feel that you need to use it as-is in your class - but DO plan on implementing all its functionality! More...
|
|
Jobs const & | get_jobs () const |
| Read access to private data for derived classes. More...
|
|
void | mark_job_as_completed (core::Size job_id, core::Real run_time) |
| Jobs is the container of Job objects need non-const to mark Jobs as completed on Master in MPI-JobDistributor. More...
|
|
void | mark_job_as_bad (core::Size job_id) |
|
ParserOP | parser () const |
| Parser access. More...
|
|
void | begin_critical_section () |
|
void | end_critical_section () |
|
bool | obtain_new_job (bool re_consider_current_job=false) |
| this function updates the current_job_id_ and current_job_ fields. The boolean return states whether or not a new job was obtained (if false, quit distributing!) More...
|
|
virtual void | job_succeeded_additional_output (core::pose::Pose &pose, std::string const &tag) |
| This function is called upon a successful job completion if there are additional poses generated by the mover base implementation is just a call to the job outputter. More...
|
|
virtual void | current_job_finished () |
| Derived classes are allowed to clean up any temporary files or data relating to the current job after the current job has completed. Called inside go_main loop. Default implementation is a no-op. More...
|
|
virtual void | note_all_jobs_finished () |
| Derived classes are allowed to perform some kind of action when the job distributor runs out of jobs to execute. Called inside go_main. Default implementation is a no-op. More...
|
|
void | clear_current_job_output () |
|
void | set_batch_id (core::Size setting) |
| set current_batch_id — eg for slave nodes in MPI framework More...
|
|
virtual void | batch_underflow () |
| if end of batches_ reached via next_batch or set_batch_id ... More...
|
|
virtual void | load_new_batch () |
| called by next_batch() or set_batch_id() to switch-over and restart JobDistributor on new batch More...
|
|
core::Size | nr_batches () const |
| how many batches are in our list ... this can change dynamically More...
|
|
std::string const & | batch (core::Size batch_id) |
| give name of batch with given id More...
|
|
This JobDistributor is intended for JD2 controlled runs of multiple parallel simulations that use multiple replicas: e.g., N trajectories of M replicas on N*M+2 processes. (2 processes for central JD2 and MPIFileBuf ) derived from MPIFileBufJobDistributor: two dedicated processes are used to handle JobDistribution and File-IO. all other processes (higher rank ) are used for computation.