Rosetta Protocols  2014.35
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
protocols::jd2::FileSystemJobDistributor Class Reference

#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...
 
- 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...
 
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, std::string const &tag)
 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...
 
- 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 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 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 Public Member Functions inherited from protocols::jd2::JobDistributor
static JobDistributorget_instance ()
 static function to get the instance of ( pointer to) this singleton class More...
 
- 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...
 

Constructor & Destructor Documentation

protocols::jd2::FileSystemJobDistributor::FileSystemJobDistributor ( )
protected
protocols::jd2::FileSystemJobDistributor::~FileSystemJobDistributor ( )
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

Member Function Documentation

void protocols::jd2::FileSystemJobDistributor::current_job_finished ( )
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 basic::options::OptionKeys::jd2::checkpoint_file, protocols::nonlocal::current_job(), option, user, and utility_exit_with_message.

void protocols::jd2::FileSystemJobDistributor::delete_in_progress_files ( )
private
core::Size protocols::jd2::FileSystemJobDistributor::get_new_job_id ( )
virtual
void protocols::jd2::FileSystemJobDistributor::go ( protocols::moves::MoverOP  mover)
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.

Referenced by protocols::jd2::BOINCJobDistributor::go().

void protocols::jd2::FileSystemJobDistributor::handle_interrupt ( )
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.

void protocols::jd2::FileSystemJobDistributor::job_failed ( core::pose::Pose pose,
bool  will_retry 
)
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::nonlocal::current_job(), protocols::jd2::JobDistributor::job_failed(), and option.

void protocols::jd2::FileSystemJobDistributor::job_succeeded ( core::pose::Pose pose,
core::Real  run_time,
std::string const &  tag 
)
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().

Referenced by protocols::jd2::BOINCJobDistributor::job_succeeded().

void protocols::jd2::FileSystemJobDistributor::mark_current_job_id_for_repetition ( )
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 basic::options::OptionKeys::run::max_retry_job, basic::options::option, option, and protocols::jd2::TR.

void protocols::jd2::FileSystemJobDistributor::remove_bad_inputs_from_job_list ( )
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::nonlocal::current_job(), protocols::jd2::TR, and Warning().

void protocols::jd2::FileSystemJobDistributor::restart ( )
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_.

std::string const protocols::jd2::FileSystemJobDistributor::temporary_file_name ( JobCOP  job) const
private

tacks an extension (.in_progress) on to filename - for multiple process/one directory behaviour

Friends And Related Function Documentation

friend class JobDistributorFactory
friend

Member Data Documentation

std::string protocols::jd2::FileSystemJobDistributor::extension_
private
std::string protocols::jd2::FileSystemJobDistributor::path_
private
core::Size protocols::jd2::FileSystemJobDistributor::retry_count_
private

Referenced by restart().


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