|
Rosetta 3.5
|
#include <MPIMultiCommJobDistributor.hh>


Public Member Functions | |
| virtual core::Size | get_new_job_id () |
| dummy for master/slave version More... | |
| virtual void | job_succeeded (core::pose::Pose &pose, core::Real run_time) |
| overloaded to suppress message from higher-rank replicas More... | |
| virtual void | job_failed (core::pose::Pose &pose, bool) |
| overloaded to suppress message from higher-rank replicas More... | |
| core::Size | sub_rank () |
Public Member Functions inherited from protocols::jd2::MPIFileBufJobDistributor | |
| virtual | ~MPIFileBufJobDistributor () |
| dtor WARNING WARNING! SINGLETONS' DESTRUCTORS ARE NEVER CALLED IN MINI! DO NOT TRY TO PUT THINGS IN THIS FUNCTION! here's a nice link explaining why: http://www.research.ibm.com/designpatterns/pubs/ph-jun96.txt More... | |
| core::Size | increment_client_rank () |
| core::Size | min_client_rank () const |
| return rank of first worker process (there might be more dedicated processes, e.g., ArchiveManager...) More... | |
| virtual void | go (protocols::moves::MoverOP mover) |
| dummy for master/slave version More... | |
| virtual void | mark_current_job_id_for_repetition () |
| dummy for master/slave version More... | |
| virtual void | remove_bad_inputs_from_job_list () |
| dummy for master/slave version More... | |
Public Member Functions inherited from protocols::jd2::JobDistributor | |
| virtual | ~JobDistributor () |
| void | go (protocols::moves::MoverOP mover, JobOutputterOP jo) |
| invokes go, after setting JobOutputter More... | |
| JobOP | current_job () const |
| Movers may ask their controlling job distributor for information about the current job. They may also load information into this job for later output. More... | |
| std::string | current_output_name () const |
| Movers may ask their controlling job distributor for the output name as defined by the Job and JobOutputter. More... | |
| JobOutputterOP | job_outputter () const |
| Movers (or derived classes) may ask for the JobOutputter. More... | |
| void | set_job_outputter (const JobOutputterOP &new_job_outputter) |
| Movers (or derived classes) may ask for the JobOutputter. More... | |
| JobInputterOP | job_inputter () const |
| JobInputter access. More... | |
| virtual void | mpi_finalize (bool finalize) |
| should the go() function call MPI_finalize()? It probably should, this is true by default. More... | |
| JobInputterInputSource::Enum | job_inputter_input_source () const |
| The input source for the current JobInputter. More... | |
| virtual void | restart () |
| core::Size | total_nr_jobs () const |
| core::Size | current_job_id () const |
| integer access - which job are we on? More... | |
| std::string | get_current_batch () const |
| what is the current batch ? — name refers to the flag-file used for this batch More... | |
| virtual void | add_batch (std::string const &, core::Size id=0) |
| add a new batch ( name will be interpreted as flag_file ) More... | |
| core::Size | current_batch_id () const |
| what is the current batch number ? — refers to position in batches_ More... | |
Protected Member Functions | |
| 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... | |
Protected Member Functions inherited from protocols::jd2::MPIFileBufJobDistributor | |
| 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) |
| 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) |
| 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... | |
Protected Member Functions inherited from protocols::jd2::JobDistributor | |
| 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 | 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... | |
Private Types | |
| typedef MPIFileBufJobDistributor | Parent |
Private Member Functions | |
| void | setup_sub_communicators (core::Size sub_size) |
Private Attributes | |
| core::Size | n_comm_ |
| int | sub_rank_ |
| core::Size | communicator_handle_ |
Friends | |
| class | JobDistributorFactory |
Additional Inherited Members | |
Static Public Member Functions inherited from protocols::jd2::JobDistributor | |
| static JobDistributor * | get_instance () |
Static Protected Member Functions inherited from protocols::jd2::JobDistributor | |
| static void | setup_system_signal_handler (void(*prev_fn)(int)=jd2_signal_handler) |
| Setting up callback function that will be call when our process is about to terminate. More... | |
| static void | remove_system_signal_handler () |
| Set signal handler back to default state. More... | |
| static void | jd2_signal_handler (int Signal) |
| Default callback function for signal handling. 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.
Definition at line 49 of file MPIMultiCommJobDistributor.hh.
Definition at line 50 of file MPIMultiCommJobDistributor.hh.
|
protected |
ctor is protected; singleton pattern
constructor. Notice it calls the parent class! It also builds some internal variables for determining which processor it is in MPI land.
Definition at line 64 of file MPIMultiCommJobDistributor.cc.
|
virtual |
dummy for master/slave version
master-job distributes job-ids as usual. sub-masters obtain a new job from master all processes within a single communication context work on the same job-id. ( Bcast )
Reimplemented from protocols::jd2::MPIFileBufJobDistributor.
Definition at line 112 of file MPIMultiCommJobDistributor.cc.
|
inlineprotectedvirtual |
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.
Reimplemented from protocols::jd2::MPIFileBufJobDistributor.
Definition at line 55 of file MPIMultiCommJobDistributor.hh.
|
virtual |
overloaded to suppress message from higher-rank replicas
dummy for master/slave version
Reimplemented from protocols::jd2::MPIFileBufJobDistributor.
Definition at line 148 of file MPIMultiCommJobDistributor.cc.
|
virtual |
overloaded to suppress message from higher-rank replicas
dummy for master/slave version
Reimplemented from protocols::jd2::MPIFileBufJobDistributor.
Definition at line 140 of file MPIMultiCommJobDistributor.cc.
|
private |
Definition at line 68 of file MPIMultiCommJobDistributor.cc.
References protocols::jd2::tr().
|
inline |
Definition at line 77 of file MPIMultiCommJobDistributor.hh.
References sub_rank_.
Referenced by protocols::jd2::current_replica().
|
friend |
Definition at line 81 of file MPIMultiCommJobDistributor.hh.
|
private |
Definition at line 95 of file MPIMultiCommJobDistributor.hh.
|
private |
Definition at line 87 of file MPIMultiCommJobDistributor.hh.
|
private |
Definition at line 94 of file MPIMultiCommJobDistributor.hh.
Referenced by sub_rank().
1.8.4