|
| | 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) |
| | 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...
|
| |
| | 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.