|
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.
Definition at line 57 of file JobDistributor.hh.
|
protected |
Singleton instantiation pattern; Derived classes will call default ctor, but their ctors, too must be protected (and the JDFactory must be their friend.)
Definition at line 134 of file JobDistributor.cc.
References init_jd().
|
protected |
MPIArchiveJobDistributor starts with an empty job-list...
Definition at line 146 of file JobDistributor.cc.
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
Definition at line 239 of file JobDistributor.cc.
|
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
Definition at line 785 of file JobDistributor.cc.
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
Definition at line 290 of file JobDistributor.hh.
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.
Definition at line 279 of file JobDistributor.hh.
Referenced by next_batch(), and set_batch_id().
|
protected |
Definition at line 685 of file JobDistributor.cc.
Referenced by go_main().
|
protected |
Definition at line 680 of file JobDistributor.cc.
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_
Definition at line 266 of file JobDistributor.hh.
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.
Definition at line 581 of file JobDistributor.cc.
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.
Definition at line 671 of file JobDistributor.cc.
Referenced by go_main().
| core::Size protocols::jd2::JobDistributor::current_job_id | ( | ) | const |
integer access - which job are we on?
Definition at line 694 of file JobDistributor.cc.
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.
Definition at line 586 of file JobDistributor.cc.
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 |
Definition at line 689 of file JobDistributor.cc.
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
Definition at line 724 of file JobDistributor.cc.
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 |
Definition at line 114 of file JobDistributor.cc.
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
Definition at line 700 of file JobDistributor.cc.
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.
Definition at line 243 of file JobDistributor.cc.
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
Definition at line 248 of file JobDistributor.cc.
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!
Definition at line 254 of file JobDistributor.cc.
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 |
Definition at line 167 of file JobDistributor.cc.
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
Definition at line 850 of file JobDistributor.cc.
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.
Definition at line 648 of file JobDistributor.cc.
Referenced by go_main(), and protocols::jd2::FileSystemJobDistributor::job_failed().
| JobInputterOP protocols::jd2::JobDistributor::job_inputter | ( | ) | const |
JobInputter access.
Definition at line 708 of file JobDistributor.cc.
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.
Definition at line 597 of file JobDistributor.cc.
References job_inputter_.
| JobOutputterOP protocols::jd2::JobDistributor::job_outputter | ( | ) | const |
Movers (or derived classes) may ask for the JobOutputter.
Definition at line 591 of file JobDistributor.cc.
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.
Definition at line 639 of file JobDistributor.cc.
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.
Definition at line 804 of file JobDistributor.cc.
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 |
Definition at line 662 of file JobDistributor.cc.
References jobs_.
Referenced by protocols::jd2::MPIFileBufJobDistributor::master_remove_bad_inputs_from_job_list(), and protocols::jd2::FileSystemJobDistributor::remove_bad_inputs_from_job_list().
|
protected |
Jobs is the container of Job objects need non-const to mark Jobs as completed on Master in MPI-JobDistributor.
Definition at line 653 of file JobDistributor.cc.
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.
Definition at line 713 of file JobDistributor.cc.
|
protectedvirtual |
switch current_batch_id_ to next batch
Reimplemented in protocols::jd2::MPIFileBufJobDistributor.
Definition at line 754 of file JobDistributor.cc.
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.
Definition at line 675 of file JobDistributor.cc.
Referenced by go_main().
|
inlineprotected |
how many batches are in our list ... this can change dynamically
Definition at line 285 of file JobDistributor.hh.
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!)
Definition at line 602 of file JobDistributor.cc.
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 |
read -run:batches
read -run:batches and put it into batches_ vector.
Definition at line 215 of file JobDistributor.cc.
References batches_.
Referenced by init_jd().
|
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.
Definition at line 667 of file JobDistributor.cc.
Referenced by go_main().
|
staticprotected |
Set signal handler back to default state.
Definition at line 891 of file JobDistributor.cc.
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.
Definition at line 227 of file JobDistributor.cc.
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
Definition at line 737 of file JobDistributor.cc.
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.
Definition at line 832 of file JobDistributor.cc.
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).
Definition at line 877 of file JobDistributor.cc.
Referenced by protocols::jd2::FileSystemJobDistributor::go().
|
inline |
Definition at line 126 of file JobDistributor.hh.
References jobs_.
Referenced by protocols::features::TopPercentOfAllInputs::TopPercentOfAllInputs().
|
friend |
Definition at line 122 of file JobDistributor.hh.
|
private |
all batches if present
Definition at line 316 of file JobDistributor.hh.
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
Definition at line 313 of file JobDistributor.hh.
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_.
Definition at line 231 of file JobDistributor.hh.
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...
Definition at line 234 of file JobDistributor.hh.
Referenced by clear_current_job_output(), current_job_id(), go_main(), job_succeeded(), load_new_batch(), obtain_new_job(), and restart().
|
staticprivate |
Definition at line 241 of file JobDistributor.hh.
Referenced by get_instance(), and init_jd().
|
private |
Definition at line 225 of file JobDistributor.hh.
Referenced by go_main(), init_jd(), job_inputter(), job_inputter_input_source(), JobDistributor(), and load_new_batch().
|
private |
Definition at line 226 of file JobDistributor.hh.
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 |
Definition at line 229 of file JobDistributor.hh.
Referenced by clear_current_job_output(), get_jobs(), go_main(), init_jd(), load_new_batch(), mark_job_as_bad(), mark_job_as_completed(), obtain_new_job(), restart(), and total_nr_jobs().
|
private |
access into jobs_ bector indicating the previous job. Used with the -jd2:delete_old_poses option for deleting unnecessary poses
Definition at line 237 of file JobDistributor.hh.
|
private |
Definition at line 227 of file JobDistributor.hh.
Referenced by go_main(), init_jd(), JobDistributor(), load_new_batch(), and parser().
1.8.4