Rosetta 3.5
|
#include <FileSystemJobDistributor.hh>
Public Member Functions | |
virtual | ~FileSystemJobDistributor () |
virtual void | restart () |
virtual core::Size | get_new_job_id () |
Return 0 to signal that no available jobs remain. Otherwise return an index into the Jobs object. More... | |
virtual void | mark_current_job_id_for_repetition () |
this function is called whenever a job "soft-fails" and needs to be retried. Generally it should ensure that the subsequent call to obtain_new_job returns this job over again. More... | |
virtual void | remove_bad_inputs_from_job_list () |
virtual void | current_job_finished () |
virtual void | go (protocols::moves::MoverOP mover) |
This may be overridden by derived classes. Default implementation invokes go_main. More... | |
![]() | |
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... | |
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 | |
FileSystemJobDistributor () | |
virtual void | job_succeeded (core::pose::Pose &pose, core::Real run_time) |
This function is called upon a successful job completion; it has been virtualized so BOINC and MPI can delay/protect output base implementation is just a call to the job outputter. More... | |
virtual void | job_failed (core::pose::Pose &pose, bool will_retry) |
This function is called when we five up on the job; it has been virtualized so BOINC and MPI can delay/protect output base implementation is just a call to the job outputter. 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... | |
![]() | |
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 | 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 bool | next_batch () |
switch current_batch_id_ to next batch 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 Member Functions | |
void | delete_in_progress_files () |
delete all temporary files for this job More... | |
std::string const | temporary_file_name (JobCOP job) const |
tacks an extension (.in_progress) on to filename - for multiple process/one directory behaviour More... | |
Private Attributes | |
std::string | extension_ |
std::string | path_ |
core::Size | retry_count_ |
Friends | |
class | JobDistributorFactory |
Additional Inherited Members | |
![]() | |
static JobDistributor * | get_instance () |
![]() | |
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... | |
|
protected |
References path_.
|
virtual |
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
|
virtual |
when multiple processes are writing to the same directory, then after a job completes, the "in_progress" file for the job must be deleted.
Reimplemented from protocols::jd2::JobDistributor.
References delete_in_progress_files().
|
private |
delete all temporary files for this job
References protocols::jd2::JobDistributor::current_job_id(), protocols::jd2::JobDistributor::get_jobs(), protocols::jd2::JobDistributor::job_outputter(), and temporary_file_name().
Referenced by current_job_finished(), and handle_interrupt().
|
virtual |
Return 0 to signal that no available jobs remain. Otherwise return an index into the Jobs object.
Implements protocols::jd2::JobDistributor.
Reimplemented in protocols::jd2::BOINCJobDistributor, and protocols::jd2::ShuffleFileSystemJobDistributor.
References protocols::jd2::JobDistributor::current_job_id(), protocols::swa::rna::file_exists(), protocols::jd2::JobDistributor::get_jobs(), protocols::jd2::JobDistributor::job_outputter(), retry_count_, and temporary_file_name().
|
virtual |
This may be overridden by derived classes. Default implementation invokes go_main.
Reimplemented from protocols::jd2::JobDistributor.
Reimplemented in protocols::jd2::BOINCJobDistributor, and protocols::unfolded_state_energy_calculator::UnfoldedStateEnergyCalculatorJobDistributor.
References protocols::jd2::JobDistributor::go_main(), protocols::jd2::JobDistributor::remove_system_signal_handler(), and protocols::jd2::JobDistributor::setup_system_signal_handler().
Referenced by protocols::jd2::BOINCJobDistributor::go().
|
protectedvirtual |
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.
Implements protocols::jd2::JobDistributor.
Reimplemented in protocols::jd2::ShuffleFileSystemJobDistributor.
References delete_in_progress_files().
|
protectedvirtual |
This function is called when we five up on the job; it has been virtualized so BOINC and MPI can delay/protect output base implementation is just a call to the job outputter.
Reimplemented from protocols::jd2::JobDistributor.
Reimplemented in protocols::jd2::BOINCJobDistributor.
References protocols::jd2::JobDistributor::current_job(), protocols::jd2::JobDistributor::job_failed(), job_succeeded(), and retry_count_.
|
protectedvirtual |
This function is called upon a successful job completion; it has been virtualized so BOINC and MPI can delay/protect output base implementation is just a call to the job outputter.
Reimplemented from protocols::jd2::JobDistributor.
Reimplemented in protocols::jd2::BOINCJobDistributor.
References protocols::jd2::JobDistributor::job_succeeded(), and retry_count_.
Referenced by job_failed(), and protocols::jd2::BOINCJobDistributor::job_succeeded().
|
virtual |
this function is called whenever a job "soft-fails" and needs to be retried. Generally it should ensure that the subsequent call to obtain_new_job returns this job over again.
Implements protocols::jd2::JobDistributor.
Reimplemented in protocols::jd2::ShuffleFileSystemJobDistributor, and protocols::jd2::BOINCJobDistributor.
References protocols::jd2::JobDistributor::clear_current_job_output(), retry_count_, and protocols::jd2::TR().
|
virtual |
this function handles the FAIL_BAD_INPUT mover status by removing other jobs with the same input from consideration
Reimplemented from protocols::jd2::JobDistributor.
References protocols::jd2::JobDistributor::current_job(), protocols::jd2::JobDistributor::current_job_id(), protocols::jd2::JobDistributor::job_outputter(), protocols::jd2::JobDistributor::mark_job_as_bad(), and protocols::jd2::TR().
|
virtual |
restart job-distribution from beginning – useful if you need a second pass over decoys...
Reimplemented from protocols::jd2::JobDistributor.
References protocols::jd2::JobDistributor::restart(), and retry_count_.
|
private |
tacks an extension (.in_progress) on to filename - for multiple process/one directory behaviour
References extension_, protocols::jd2::JobDistributor::job_outputter(), and path_.
Referenced by delete_in_progress_files(), and get_new_job_id().
|
friend |
|
private |
Referenced by temporary_file_name().
|
private |
Referenced by FileSystemJobDistributor(), and temporary_file_name().
|
private |
Referenced by get_new_job_id(), job_failed(), job_succeeded(), mark_current_job_id_for_repetition(), and restart().