Rosetta 3.5
|
#include <JobDistributor.hh>
Public Member Functions | |
virtual | ~JobDistributor () |
virtual void | go (protocols::moves::MoverOP mover) |
This may be overridden by derived classes. Default implementation invokes go_main. More... | |
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... | |
Static Public Member Functions | |
static JobDistributor * | get_instance () |
Protected Member Functions | |
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 core::Size | get_new_job_id ()=0 |
Return 0 to signal that no available jobs remain. Otherwise return an index into the Jobs object. More... | |
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 &, bool) |
This function is called when we give 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 | mark_current_job_id_for_repetition ()=0 |
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 () |
this function is called inside go_main if a mover returns FAIL_BAD_INPUT. Its purpose is to remove other jobs with the same input (which will still be bad) from the available list of jobs. The default implementation is a no-op and not all distributors are expected/able to implement this functionality, only those that can guaruntee no other jobs of that input are currently running. 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 () |
virtual void | handle_interrupt ()=0 |
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... | |
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... | |
Static Protected Member Functions | |
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... | |
Private Member Functions | |
void | init_jd () |
void | populate_batch_list_from_cmd () |
read -run:batches More... | |
Private Attributes | |
JobInputterOP | job_inputter_ |
JobOutputterOP | job_outputter_ |
ParserOP | parser_ |
Jobs | jobs_ |
JobOP | current_job_ |
pointer to current job. Information is somewhat duplicated with current_job_id_. More... | |
core::Size | current_job_id_ |
access into jobs_ vector indicating current job. Contains more information than current_job_ in that it can be incremented... More... | |
core::Size | last_completed_job_ |
access into jobs_ bector indicating the previous job. Used with the -jd2:delete_old_poses option for deleting unnecessary poses More... | |
core::Size | current_batch_id_ |
current_batch or 0 More... | |
utility::vector1< std::string > | batches_ |
all batches if present More... | |
Static Private Attributes | |
static JobDistributor * | instance_ = 0 |
Friends | |
class | JobDistributorFactory |
Enforced JobDistributor destruction turned out to cause problems - calls to Tracers and/or the Options system during destruction caused crashes if those systems had been destructed first. So this is deprecated.
|
protected |
Singleton instantiation pattern; Derived classes will call default ctor, but their ctors, too must be protected (and the JDFactory must be their friend.)
References init_jd().
|
protected |
MPIArchiveJobDistributor starts with an empty job-list...
References protocols::jd2::JobDistributorFactory::create_parser(), init_jd(), job_inputter_, job_outputter_, and parser_.
|
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 |
add a new batch ( name will be interpreted as flag_file )
add new batch to end of batch list... this might be called asynchronous... ie. while we are still in the middle of a current batch, or while we are in non-batch mode
References batch(), batches_, and protocols::jd2::BatchJobInputter::BOGUS_BATCH_ID.
Referenced by protocols::jd2::archive::ArchiveManager::cancel_batch(), protocols::jd2::archive::ArchiveManager::queue_batch(), and protocols::jd2::archive::MPIArchiveJobDistributor::receive_batch().
|
inlineprotected |
give name of batch with given id
References batches_.
Referenced by add_batch(), and protocols::jd2::archive::MPIArchiveJobDistributor::sync_batches().
|
inlineprotectedvirtual |
if end of batches_ reached via next_batch or set_batch_id ...
Reimplemented in protocols::jd2::archive::MPIArchiveJobDistributor.
Referenced by next_batch(), and set_batch_id().
|
protected |
Referenced by go_main().
|
protected |
References current_job_, current_job_id_, and jobs_.
Referenced by protocols::jd2::FileSystemJobDistributor::mark_current_job_id_for_repetition(), protocols::jd2::MPIWorkPartitionJobDistributor::mark_current_job_id_for_repetition(), protocols::jd2::MPIFileBufJobDistributor::mark_current_job_id_for_repetition(), and protocols::jd2::MPIWorkPoolJobDistributor::mark_current_job_id_for_repetition().
|
inline |
what is the current batch number ? — refers to position in batches_
References current_batch_id_.
Referenced by protocols::jd2::archive::MPIArchiveJobDistributor::batch_underflow(), go_main(), protocols::jd2::archive::MPIArchiveJobDistributor::load_new_batch(), protocols::jd2::MPIFileBufJobDistributor::mark_job_as_bad(), protocols::jd2::MPIFileBufJobDistributor::mark_job_as_completed(), protocols::jd2::MPIFileBufJobDistributor::master_get_new_job_id(), protocols::jd2::archive::MPIArchiveJobDistributor::master_to_archive(), and protocols::jd2::MPIFileBufJobDistributor::send_job_to_slave().
JobOP protocols::jd2::JobDistributor::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.
References current_job_.
Referenced by protocols::loop_build::LoopBuildMover::apply(), protocols::protein_interface_design::movers::InterfaceRecapitulationMover::apply(), protocols::anchored_design::AnchoredDesignMover::apply(), protocols::analysis::LoopAnalyzerMover::apply(), protocols::ligand_docking::StartFrom::apply(), protocols::hotspot_hashing::movers::PlaceProbeMover::apply(), protocols::surface_docking::SurfaceDockingProtocol::apply(), protocols::surface_docking::FullatomRelaxMover::apply(), protocols::canonical_sampling::CanonicalSamplingMover::apply(), protocols::anchored_design::AnchoredDesignMover::calculate_rmsd(), protocols::jd2::current_output_filename(), protocols::jd2::current_output_name(), current_output_name(), protocols::hotspot_hashing::movers::PlaceProbeMover::execute_one_search(), protocols::rosetta_scripts::ParsedProtocol::finish_protocol(), protocols::jd2::get_current_job(), protocols::jd2::get_current_jobs_starting_pose(), protocols::jd2::JD2ResourceManager::get_resource(), protocols::jd2::jd2_used(), protocols::jd2::BOINCJobDistributor::job_failed(), protocols::jd2::FileSystemJobDistributor::job_failed(), protocols::canonical_sampling::mc_convergence_checks::Pool_ConvergenceCheck::operator()(), OPT_1GRP_KEY(), protocols::jd2::output_intermediate_pose(), protocols::jd2::MPIFileBufJobDistributor::process_message(), protocols::jd2::FileSystemJobDistributor::remove_bad_inputs_from_job_list(), protocols::jd2::MPIWorkPartitionJobDistributor::remove_bad_inputs_from_job_list(), protocols::simple_filters::ReportFilter::report(), protocols::rotamer_recovery::RRReporterSQLite::report_rotamer_recovery_full(), protocols::docking::DockingPrepackProtocol::score_and_output(), protocols::jd2::MPIFileBufJobDistributor::slave_job_succeeded(), and protocols::jd2::MPIWorkPoolJobDistributor::slave_job_succeeded().
|
protectedvirtual |
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.
Reimplemented in protocols::jd2::FileSystemJobDistributor.
Referenced by go_main().
core::Size protocols::jd2::JobDistributor::current_job_id | ( | ) | const |
integer access - which job are we on?
References current_job_id_.
Referenced by protocols::jd2::FileSystemJobDistributor::delete_in_progress_files(), protocols::jd2::FileSystemJobDistributor::get_new_job_id(), protocols::canonical_sampling::jobname_dirhash(), protocols::jd2::MPIWorkPartitionJobDistributor::mark_current_job_id_for_repetition(), protocols::jd2::MPIFileBufJobDistributor::master_get_new_job_id(), protocols::jd2::MPIFileBufJobDistributor::master_go(), protocols::jd2::archive::MPIArchiveJobDistributor::notify_archive(), OPT_1GRP_KEY(), protocols::jd2::MPIFileBufJobDistributor::process_message(), protocols::jd2::FileSystemJobDistributor::remove_bad_inputs_from_job_list(), protocols::jd2::MPIFileBufJobDistributor::send_job_to_slave(), and protocols::jd2::MPIFileBufJobDistributor::slave_mark_current_job_id_for_repetition().
std::string protocols::jd2::JobDistributor::current_output_name | ( | ) | const |
Movers may ask their controlling job distributor for the output name as defined by the Job and JobOutputter.
References current_job(), and job_outputter().
Referenced by protocols::features::FeaturesReporter::find_tag(), protocols::features::ReportToDB::initialize_pose(), and protocols::canonical_sampling::MetricRecorder::update_after_boltzmann().
|
protected |
Referenced by go_main().
std::string protocols::jd2::JobDistributor::get_current_batch | ( | ) | const |
what is the current batch ? — name refers to the flag-file used for this batch
BATCH interface:
the BATCH interface of the JobDistributor is used to allow consecutive execution of a set of jobs with different flags different batches behave like completely independent rosetta runs — but of course a number of processes can already work on a new batch, while others are still finishing the last jobs of the previous batch. run from command-line with -run:batches flag1 flag2 flag3 the flag1 flag2... point to files that are added to all other flags ( and removed at end of batch ) you can have all output in same output file or ( by redefining e.g. -out:file:silent in each batch-flag file ) in different output files
References batches_, protocols::jd2::BatchJobInputter::BOGUS_BATCH_ID, and current_batch_id_.
Referenced by protocols::jd2::BatchJobInputter::check_batch(), protocols::jd2::current_batch(), next_batch(), obtain_new_job(), protocols::jd2::archive::MPIArchiveJobDistributor::process_message(), and protocols::jd2::MPIFileBufJobDistributor::slave_get_new_job_id().
|
static |
References protocols::jd2::JobDistributorFactory::create_job_distributor(), and instance_.
Referenced by protocols::jd2::JobOutputter::affixed_numbered_name(), protocols::loop_build::LoopBuildMover::apply(), protocols::qsar::qsarMover::apply(), protocols::RotamerDump::RotamerDumpMover::apply(), protocols::frag_picker::nonlocal::NonlocalFrags::apply(), protocols::protein_interface_design::movers::InterfaceRecapitulationMover::apply(), protocols::protein_interface_design::filters::FilterScanFilter::apply(), protocols::anchored_design::AnchoredDesignMover::apply(), protocols::antibody2::GraftCDRLoopsProtocol::apply(), protocols::antibody2::AntibodyModelerProtocol::apply(), protocols::analysis::LoopAnalyzerMover::apply(), protocols::toolbox::task_operations::ReadResfileFromDB::apply(), protocols::ligand_docking::StartFrom::apply(), protocols::simple_moves::ddG::apply(), protocols::hotspot_hashing::movers::PlaceProbeMover::apply(), protocols::ligand_docking::InterfaceScoreCalculator::apply(), protocols::contact_map::ContactMap::apply(), protocols::surface_docking::SurfaceDockingProtocol::apply(), protocols::surface_docking::FullatomRelaxMover::apply(), protocols::protein_interface_design::movers::PlaceStubMover::apply(), protocols::canonical_sampling::CanonicalSamplingMover::apply(), protocols::ligand_docking::LigandDockMain::apply(), protocols::symmetric_docking::SymDockProtocol::apply(), protocols::docking::DockingProtocol::apply(), protocols::abinitio::Broker_main(), protocols::anchored_design::AnchoredDesignMover::calculate_rmsd(), protocols::jd2::archive::ArchiveManager::cancel_batch(), protocols::canonical_sampling::canonical_sampling_main(), protocols::hotspot_hashing::movers::PlaceProbeMover::check_and_initialize(), protocols::jd2::BatchJobInputter::check_batch(), protocols::comparative_modeling::cm_main(), protocols::jd2::current_batch(), protocols::jd2::current_output_filename(), protocols::jd2::current_output_name(), protocols::jd2::current_replica(), protocols::hotspot_hashing::movers::PlaceProbeMover::execute_one_search(), protocols::features::FeaturesReporter::find_tag(), protocols::rosetta_scripts::ParsedProtocol::finish_protocol(), protocols::jd2::get_current_job(), protocols::jd2::get_current_jobs_starting_pose(), protocols::mpi::ArchiveMasterBase::get_new_decoys(), protocols::jd2::JD2ResourceManager::get_option(), protocols::jd2::Job::get_pose(), protocols::jd2::JD2ResourceManager::get_resource(), protocols::features::get_write_delete_pair(), protocols::jd2::JD2ResourceManager::has_option(), protocols::jd2::JD2ResourceManager::has_resource_with_description(), protocols::features::ReportToDB::initialize_pose(), jd2_signal_handler(), protocols::jd2::jd2_used(), protocols::canonical_sampling::jobname_dirhash(), ligand_dock_main(), protocols::features::JobDataFeatures::load_string_data(), protocols::features::JobDataFeatures::load_string_real_data(), protocols::features::JobDataFeatures::load_string_string_data(), protocols::loop_build::LoopBuild_main(), protocols::loophash::loophash_main(), protocols::features::TopCountOfEachInput::operator()(), protocols::canonical_sampling::mc_convergence_checks::Pool_ConvergenceCheck::operator()(), OPT_1GRP_KEY(), protocols::jd2::output_intermediate_pose(), protocols::simple_moves::SequenceProfileMover::parse_my_tag(), protocols::protein_interface_design::movers::SubroutineMover::parse_my_tag(), protocols::canonical_sampling::MetropolisHastingsMover::prepare_simulation(), protocols::analysis::InterfaceAnalyzerMover::print_pymol_selection_of_hbond_unsat(), protocols::analysis::InterfaceAnalyzerMover::print_pymol_selection_of_interface_residues(), protocols::jd2::archive::ArchiveManager::queue_batch(), protocols::RBSegmentRelax_main(), protocols::relax::Relax_main(), protocols::simple_filters::ReportFilter::report(), protocols::analysis::InterfaceAnalyzerMover::report_data(), protocols::features::JobDataFeatures::report_features(), protocols::rotamer_recovery::RRReporterSQLite::report_rotamer_recovery_full(), protocols::simple_filters::ShapeComplementarityFilter::report_sm(), protocols::docking::DockingPrepackProtocol::score_and_output(), protocols::analysis::InterfaceAnalyzerMover::set_pose_info(), protocols::canonical_sampling::mc_convergence_checks::setup_convergence_checks_from_cmdline(), protocols::symmetric_docking::SymDock_main(), protocols::features::TopPercentOfAllInputs::TopPercentOfAllInputs(), protocols::canonical_sampling::MetricRecorder::update_after_boltzmann(), protocols::features::ProteinSilentReport::write_full_report(), protocols::jd2::write_score_tracer(), protocols::protein_interface_design::filters::SequenceRecoveryFilter::write_to_pdb(), and protocols::simple_filters::RotamerBoltzmannWeight::write_to_pdb().
|
protected |
Read access to private data for derived classes.
Jobs is the container of Job objects
References jobs_.
Referenced by protocols::jd2::FileSystemJobDistributor::delete_in_progress_files(), protocols::jd2::MPIWorkPartitionJobDistributor::determine_job_ids_to_run(), protocols::jd2::ShuffleFileSystemJobDistributor::get_new_job_id(), protocols::jd2::FileSystemJobDistributor::get_new_job_id(), protocols::jd2::MPIWorkPartitionJobDistributor::get_new_job_id(), protocols::jd2::BOINCJobDistributor::go(), protocols::jd2::archive::MPIArchiveJobDistributor::load_new_batch(), protocols::jd2::MPIFileBufJobDistributor::master_get_new_job_id(), protocols::jd2::MPIWorkPoolJobDistributor::master_get_new_job_id(), protocols::jd2::MPIFileBufJobDistributor::master_remove_bad_inputs_from_job_list(), protocols::jd2::MPIWorkPoolJobDistributor::master_remove_bad_inputs_from_job_list(), protocols::jd2::MPIWorkPartitionJobDistributor::MPIWorkPartitionJobDistributor(), protocols::jd2::archive::MPIArchiveJobDistributor::notify_archive(), and protocols::jd2::MPIWorkPartitionJobDistributor::remove_bad_inputs_from_job_list().
|
protectedpure virtual |
Return 0 to signal that no available jobs remain. Otherwise return an index into the Jobs object.
Implemented in protocols::jd2::MPIWorkPoolJobDistributor, protocols::jd2::MPIFileBufJobDistributor, protocols::jd2::MPIWorkPartitionJobDistributor, protocols::jd2::BOINCJobDistributor, protocols::jd2::MPIMultiCommJobDistributor, protocols::jd2::FileSystemJobDistributor, and protocols::jd2::ShuffleFileSystemJobDistributor.
Referenced by obtain_new_job().
|
virtual |
This may be overridden by derived classes. Default implementation invokes go_main.
Reimplemented in protocols::jd2::archive::MPIArchiveJobDistributor, protocols::jd2::MPIWorkPoolJobDistributor, protocols::jd2::MPIWorkPartitionJobDistributor, protocols::jd2::MPIFileBufJobDistributor, protocols::jd2::BOINCJobDistributor, protocols::jd2::FileSystemJobDistributor, and protocols::unfolded_state_energy_calculator::UnfoldedStateEnergyCalculatorJobDistributor.
References go_main().
Referenced by protocols::abinitio::Broker_main(), protocols::canonical_sampling::canonical_sampling_main(), protocols::comparative_modeling::cm_main(), go(), protocols::star::graphics_main(), protocols::medal::graphics_main(), ligand_dock_main(), protocols::loop_build::LoopBuild_main(), protocols::loophash::loophash_main(), protocols::RBSegmentRelax_main(), protocols::relax::Relax_main(), and protocols::symmetric_docking::SymDock_main().
void protocols::jd2::JobDistributor::go | ( | protocols::moves::MoverOP | mover, |
JobOutputterOP | jo | ||
) |
invokes go, after setting JobOutputter
References go(), and job_outputter_.
|
protected |
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!
References protocols::viewer::add_conformation_viewer(), protocols::moves::AddPyMolObserver(), batches_, begin_critical_section(), current_batch_id(), current_job_, current_job_finished(), current_job_id_, end_critical_section(), protocols::moves::FAIL_BAD_INPUT, protocols::moves::FAIL_DO_NOT_RETRY, protocols::moves::FAIL_RETRY, job_failed(), job_inputter_, job_outputter_, job_succeeded(), jobs_, last_completed_job_, mark_current_job_id_for_repetition(), protocols::moves::MS_SUCCESS, note_all_jobs_finished(), obtain_new_job(), parser_, remove_bad_inputs_from_job_list(), and protocols::jd2::tr().
Referenced by protocols::unfolded_state_energy_calculator::UnfoldedStateEnergyCalculatorJobDistributor::go(), protocols::jd2::FileSystemJobDistributor::go(), go(), protocols::jd2::MPIFileBufJobDistributor::go(), protocols::jd2::MPIWorkPartitionJobDistributor::go(), protocols::jd2::archive::MPIArchiveJobDistributor::go(), and protocols::jd2::MPIWorkPoolJobDistributor::slave_go().
|
protectedpure virtual |
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.
Implemented in protocols::jd2::archive::MPIArchiveJobDistributor, protocols::jd2::MPIWorkPoolJobDistributor, protocols::jd2::FileSystemJobDistributor, protocols::jd2::MPIWorkPartitionJobDistributor, protocols::jd2::MPIFileBufJobDistributor, protocols::jd2::MPIMultiCommJobDistributor, and protocols::jd2::ShuffleFileSystemJobDistributor.
Referenced by jd2_signal_handler().
|
private |
References batches_, protocols::jd2::JobDistributorFactory::create_job_inputter(), protocols::jd2::JobDistributorFactory::create_job_outputter(), protocols::jd2::JobDistributorFactory::create_parser(), current_batch_id_, instance_, job_inputter_, protocols::jd2::JobInputter::job_inputter_input_source_to_string(), job_outputter_, jobs_, parser_, populate_batch_list_from_cmd(), and protocols::jd2::tr().
Referenced by JobDistributor(), and restart().
|
staticprotected |
Default callback function for signal handling.
Default callback function for signal handling
References get_instance(), handle_interrupt(), and job_outputter_.
|
protectedvirtual |
This function is called when we give 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.
no-op implementation in the base class
Reimplemented in protocols::jd2::MPIFileBufJobDistributor, protocols::jd2::FileSystemJobDistributor, protocols::jd2::MPIMultiCommJobDistributor, and protocols::jd2::BOINCJobDistributor.
Referenced by go_main(), and protocols::jd2::FileSystemJobDistributor::job_failed().
JobInputterOP protocols::jd2::JobDistributor::job_inputter | ( | ) | const |
JobInputter access.
References job_inputter_.
Referenced by protocols::jd2::get_current_job(), protocols::jd2::get_current_jobs_starting_pose(), and protocols::jd2::Job::get_pose().
JobInputterInputSource::Enum protocols::jd2::JobDistributor::job_inputter_input_source | ( | ) | const |
The input source for the current JobInputter.
References job_inputter_.
JobOutputterOP protocols::jd2::JobDistributor::job_outputter | ( | ) | const |
Movers (or derived classes) may ask for the JobOutputter.
References job_outputter_.
Referenced by protocols::surface_docking::SurfaceDockingProtocol::apply(), protocols::surface_docking::FullatomRelaxMover::apply(), protocols::canonical_sampling::CanonicalSamplingMover::apply(), protocols::jd2::current_output_filename(), protocols::jd2::current_output_name(), current_output_name(), protocols::jd2::FileSystemJobDistributor::delete_in_progress_files(), protocols::jd2::get_current_jobs_starting_pose(), protocols::mpi::ArchiveMasterBase::get_new_decoys(), protocols::jd2::ShuffleFileSystemJobDistributor::get_new_job_id(), protocols::jd2::FileSystemJobDistributor::get_new_job_id(), protocols::jd2::MPIWorkPartitionJobDistributor::get_new_job_id(), protocols::jd2::BOINCJobDistributor::go(), protocols::jd2::jd2_used(), protocols::jd2::MPIFileBufJobDistributor::master_get_new_job_id(), protocols::jd2::MPIWorkPoolJobDistributor::master_get_new_job_id(), protocols::jd2::MPIFileBufJobDistributor::master_remove_bad_inputs_from_job_list(), protocols::jd2::MPIWorkPoolJobDistributor::master_remove_bad_inputs_from_job_list(), OPT_1GRP_KEY(), protocols::jd2::output_intermediate_pose(), protocols::jd2::FileSystemJobDistributor::remove_bad_inputs_from_job_list(), protocols::jd2::MPIWorkPartitionJobDistributor::remove_bad_inputs_from_job_list(), protocols::analysis::InterfaceAnalyzerMover::set_pose_info(), protocols::canonical_sampling::mc_convergence_checks::setup_convergence_checks_from_cmdline(), protocols::jd2::MPIFileBufJobDistributor::slave_job_succeeded(), protocols::jd2::MPIWorkPoolJobDistributor::slave_job_succeeded(), protocols::jd2::FileSystemJobDistributor::temporary_file_name(), and protocols::jd2::write_score_tracer().
|
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 in protocols::jd2::MPIWorkPoolJobDistributor, protocols::jd2::MPIFileBufJobDistributor, protocols::jd2::FileSystemJobDistributor, protocols::jd2::MPIMultiCommJobDistributor, and protocols::jd2::BOINCJobDistributor.
References current_job_, current_job_id_, job_outputter_, and mark_job_as_completed().
Referenced by go_main(), and protocols::jd2::FileSystemJobDistributor::job_succeeded().
|
protectedvirtual |
called by next_batch() or set_batch_id() to switch-over and restart JobDistributor on new batch
restart JobDistributor with a new batch the BatchJobInputter loads new flags and sets global options after this we reload Factory dependent Objects (e.g., JobInputter and JobOutputter )
Reimplemented in protocols::jd2::archive::MPIArchiveJobDistributor.
References batches_, protocols::jd2::JobDistributorFactory::create_job_outputter(), protocols::jd2::JobDistributorFactory::create_parser(), current_batch_id_, current_job_, current_job_id_, protocols::jd2::JD2_BOGUS_JOB, job_inputter_, job_outputter_, jobs_, parser_, and protocols::jd2::tr().
Referenced by protocols::jd2::archive::MPIArchiveJobDistributor::load_new_batch(), next_batch(), and set_batch_id().
|
protectedpure 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.
Implemented in protocols::jd2::MPIWorkPoolJobDistributor, protocols::jd2::MPIFileBufJobDistributor, protocols::jd2::MPIWorkPartitionJobDistributor, protocols::jd2::FileSystemJobDistributor, protocols::jd2::ShuffleFileSystemJobDistributor, and protocols::jd2::BOINCJobDistributor.
Referenced by go_main().
|
protected |
|
protected |
Jobs is the container of Job objects need non-const to mark Jobs as completed on Master in MPI-JobDistributor.
References job_outputter_, jobs_, and protocols::jd2::tr().
Referenced by job_succeeded(), and protocols::jd2::MPIFileBufJobDistributor::mark_job_as_completed().
|
virtual |
should the go() function call MPI_finalize()? It probably should, this is true by default.
Reimplemented in protocols::jd2::MPIWorkPoolJobDistributor.
|
protectedvirtual |
switch current_batch_id_ to next batch
Reimplemented in protocols::jd2::MPIFileBufJobDistributor.
References batch_underflow(), batches_, protocols::jd2::BatchJobInputter::BOGUS_BATCH_ID, current_batch_id_, get_current_batch(), load_new_batch(), and protocols::jd2::tr().
Referenced by protocols::jd2::MPIFileBufJobDistributor::next_batch(), and obtain_new_job().
|
protectedvirtual |
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.
Referenced by go_main().
|
inlineprotected |
how many batches are in our list ... this can change dynamically
References batches_.
Referenced by protocols::jd2::archive::MPIArchiveJobDistributor::notify_archive(), and protocols::jd2::archive::MPIArchiveJobDistributor::sync_batches().
|
protected |
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!)
References batches_, protocols::jd2::BatchJobInputter::BOGUS_BATCH_ID, current_job_, current_job_id_, get_current_batch(), get_new_job_id(), jobs_, and next_batch().
Referenced by go_main(), protocols::jd2::MPIFileBufJobDistributor::master_go(), protocols::jd2::MPIFileBufJobDistributor::master_remove_bad_inputs_from_job_list(), and protocols::jd2::MPIFileBufJobDistributor::process_message().
|
protected |
|
private |
|
protectedvirtual |
this function is called inside go_main if a mover returns FAIL_BAD_INPUT. Its purpose is to remove other jobs with the same input (which will still be bad) from the available list of jobs. The default implementation is a no-op and not all distributors are expected/able to implement this functionality, only those that can guaruntee no other jobs of that input are currently running.
Reimplemented in protocols::jd2::MPIWorkPoolJobDistributor, protocols::jd2::MPIFileBufJobDistributor, protocols::jd2::MPIWorkPartitionJobDistributor, and protocols::jd2::FileSystemJobDistributor.
Referenced by go_main().
|
staticprotected |
Set signal handler back to default state.
Referenced by protocols::jd2::FileSystemJobDistributor::go().
|
virtual |
restart job-distribution from beginning – useful if you need a second pass over decoys...
Reimplemented in protocols::jd2::FileSystemJobDistributor.
References current_batch_id_, current_job_, current_job_id_, init_jd(), protocols::jd2::JD2_BOGUS_JOB, jobs_, and last_completed_job_.
Referenced by protocols::jd2::FileSystemJobDistributor::restart().
|
protected |
set current_batch_id — eg for slave nodes in MPI framework
References batch_underflow(), batches_, current_batch_id_, load_new_batch(), and protocols::jd2::tr().
Referenced by protocols::jd2::MPIFileBufJobDistributor::slave_get_new_job_id().
void protocols::jd2::JobDistributor::set_job_outputter | ( | const JobOutputterOP & | new_job_outputter) |
Movers (or derived classes) may ask for the JobOutputter.
References job_outputter_.
|
staticprotected |
Setting up callback function that will be call when our process is about to terminate.
This will allow us to exit propely (clean up in_progress_files/tmp files if any).
Referenced by protocols::jd2::FileSystemJobDistributor::go().
|
inline |
References jobs_.
Referenced by protocols::features::TopPercentOfAllInputs::TopPercentOfAllInputs().
|
friend |
|
private |
all batches if present
Referenced by add_batch(), batch(), get_current_batch(), go_main(), init_jd(), load_new_batch(), next_batch(), nr_batches(), obtain_new_job(), populate_batch_list_from_cmd(), and set_batch_id().
|
private |
current_batch or 0
Referenced by current_batch_id(), get_current_batch(), init_jd(), load_new_batch(), next_batch(), restart(), and set_batch_id().
|
private |
pointer to current job. Information is somewhat duplicated with current_job_id_.
Referenced by clear_current_job_output(), current_job(), go_main(), job_succeeded(), load_new_batch(), obtain_new_job(), and restart().
|
private |
access into jobs_ vector indicating current job. Contains more information than current_job_ in that it can be incremented...
Referenced by clear_current_job_output(), current_job_id(), go_main(), job_succeeded(), load_new_batch(), obtain_new_job(), and restart().
|
staticprivate |
Referenced by get_instance(), and init_jd().
|
private |
Referenced by go_main(), init_jd(), job_inputter(), job_inputter_input_source(), JobDistributor(), and load_new_batch().
|
private |
Referenced by go(), go_main(), init_jd(), jd2_signal_handler(), job_outputter(), job_succeeded(), JobDistributor(), load_new_batch(), mark_job_as_completed(), and set_job_outputter().
|
private |
|
private |
|
private |
Referenced by go_main(), init_jd(), JobDistributor(), load_new_batch(), and parser().