Class ParallelProcessor<T extends InputFromManager,S>
- Type Parameters:
T
- input-object typeS
- shared-state type
- All Implemented Interfaces:
ReplaceTask<T,
S>
Each input is processed in a separate thread on an available core.
- Author:
- Owen Feehan
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected TaskStatistics
execute
(Outputter rootOutputter, List<T> inputs, ParametersExperiment parametersExperiment) Executes the task on allinputs
.int
How many processors to avoid using for the tasks.int
Theoretical maximum number of (CPU) processors to use in parallel.int
How many GPU processors to use when this is possible as a substitute for a CPU processorint
When the number of ongoing jobs is less than this threshold, they are shown in event logs. 0 disables.void
setKeepProcessorsFree
(int keepProcessorsFree) How many processors to avoid using for the tasks.void
setMaxNumberProcessors
(int maxNumberProcessors) Theoretical maximum number of (CPU) processors to use in parallel.void
setNumberGPUProcessors
(int numberGPUProcessors) How many GPU processors to use when this is possible as a substitute for a CPU processorvoid
setShowOngoingJobsLessThan
(int showOngoingJobsLessThan) When the number of ongoing jobs is less than this threshold, they are shown in event logs. 0 disables.Methods inherited from class org.anchoranalysis.experiment.bean.processor.JobProcessor
executeLogStatistics, getTask, hasVeryQuickPerInputExecution, isInputCompatibleWith, isSuppressExceptions, replaceTask, setSuppressExceptions, setTask
Methods inherited from class org.anchoranalysis.bean.AnchorBean
checkMisconfigured, describeBean, describeChildren, duplicateBean, fields, findFieldsOfClass, getBeanName, getLocalPath, localise, toString
-
Constructor Details
-
ParallelProcessor
public ParallelProcessor()
-
-
Method Details
-
execute
protected TaskStatistics execute(Outputter rootOutputter, List<T> inputs, ParametersExperiment parametersExperiment) throws ExperimentExecutionException Description copied from class:JobProcessor
Executes the task on allinputs
.It is expected that elements are removed from
inputs
as they are consumed so as to allow garbage-collection of these items before all jobs are processed (as the list might be quite large).- Specified by:
execute
in classJobProcessor<T extends InputFromManager,
S> - Parameters:
rootOutputter
- an outputter, bound to the base (root) output directory into which outputted files are written.inputs
- the inputs to applytask
on.parametersExperiment
- parameters that exist pertaining to the experiment that is underway.- Returns:
- statistics about the success/failure/execution-time etc. of applying the task to inputs.
- Throws:
ExperimentExecutionException
- if anything goes wrong executing the experiment (but not necessarily if a processing a particular input fails whensuppressExceptions == true
.
-
getMaxNumberProcessors
public int getMaxNumberProcessors()Theoretical maximum number of (CPU) processors to use in parallel.In practice, the effective maximum is
min(maxNumberProcessors,numberAvailableProcessors)
, usually lower. -
setMaxNumberProcessors
public void setMaxNumberProcessors(int maxNumberProcessors) Theoretical maximum number of (CPU) processors to use in parallel.In practice, the effective maximum is
min(maxNumberProcessors,numberAvailableProcessors)
, usually lower. -
getShowOngoingJobsLessThan
public int getShowOngoingJobsLessThan()When the number of ongoing jobs is less than this threshold, they are shown in event logs. 0 disables. -
setShowOngoingJobsLessThan
public void setShowOngoingJobsLessThan(int showOngoingJobsLessThan) When the number of ongoing jobs is less than this threshold, they are shown in event logs. 0 disables. -
getKeepProcessorsFree
public int getKeepProcessorsFree()How many processors to avoid using for the tasks.When using the maximum available number of processors, a certain amount are deliberately not used, to save them for other tasks on the operating system. This is particularly valuable on a desktop PC where other tasks (e.g web browsing) may be ongoing during processing.
-
setKeepProcessorsFree
public void setKeepProcessorsFree(int keepProcessorsFree) How many processors to avoid using for the tasks.When using the maximum available number of processors, a certain amount are deliberately not used, to save them for other tasks on the operating system. This is particularly valuable on a desktop PC where other tasks (e.g web browsing) may be ongoing during processing.
-
getNumberGPUProcessors
public int getNumberGPUProcessors()How many GPU processors to use when this is possible as a substitute for a CPU processor -
setNumberGPUProcessors
public void setNumberGPUProcessors(int numberGPUProcessors) How many GPU processors to use when this is possible as a substitute for a CPU processor
-