DaskLSFBackend

class openff.evaluator.backends.dask.DaskLSFBackend(minimum_number_of_workers=1, maximum_number_of_workers=1, resources_per_worker=QueueWorkerResources(), queue_name='default', setup_script_commands=None, extra_script_options=None, adaptive_interval='10000ms', disable_nanny_process=False, adaptive_class=None)[source]

An openff-evaluator backend which uses a dask_jobqueue.LSFCluster object to run calculations within an existing LSF queue.

__init__(minimum_number_of_workers=1, maximum_number_of_workers=1, resources_per_worker=QueueWorkerResources(), queue_name='default', setup_script_commands=None, extra_script_options=None, adaptive_interval='10000ms', disable_nanny_process=False, adaptive_class=None)[source]

Constructs a new DaskLSFBackend object

Examples

To create an LSF queueing compute backend which will attempt to spin up workers which have access to a single GPU.

>>> # Create a resource object which will request a worker with
>>> # one gpu which will stay alive for five hours.
>>> from openff.evaluator.backends import QueueWorkerResources
>>>
>>> resources = QueueWorkerResources(number_of_threads=1,
>>>                                  number_of_gpus=1,
>>>                                  preferred_gpu_toolkit=QueueWorkerResources.GPUToolkit.CUDA,
>>>                                  preferred_gpu_precision=QueueWorkerResources.GPUPrecision.mixed,
>>>                                  wallclock_time_limit='05:00')
>>>
>>> # Define the set of commands which will set up the correct environment
>>> # for each of the workers.
>>> setup_script_commands = [
>>>     'module load cuda/9.2',
>>> ]
>>>
>>> # Define extra options to only run on certain node groups
>>> extra_script_options = [
>>>     '-m "ls-gpu lt-gpu"'
>>> ]
>>>
>>>
>>> # Create the backend which will adaptively try to spin up between one and
>>> # ten workers with the requested resources depending on the calculation load.
>>> from openff.evaluator.backends.dask import DaskLSFBackend
>>>
>>> lsf_backend = DaskLSFBackend(minimum_number_of_workers=1,
>>>                              maximum_number_of_workers=10,
>>>                              resources_per_worker=resources,
>>>                              queue_name='gpuqueue',
>>>                              setup_script_commands=setup_script_commands,
>>>                              extra_script_options=extra_script_options)

Methods

__init__([minimum_number_of_workers, ...])

Constructs a new DaskLSFBackend object

job_script()

Returns the job script that dask will use to submit workers.

start()

Start the calculation backend.

stop()

Stop the calculation backend.

submit_task(function, *args, **kwargs)

Submit a task to the compute resources managed by this backend.

Attributes

started

Returns whether this backend has been started yet.

job_script()

Returns the job script that dask will use to submit workers. The backend must be started before calling this function.

Return type

str

start()

Start the calculation backend.

property started

Returns whether this backend has been started yet.

Type

bool

stop()

Stop the calculation backend.

submit_task(function, *args, **kwargs)

Submit a task to the compute resources managed by this backend.

Parameters

function (function) – The function to run.

Returns

Returns a future object which will eventually point to the results of the submitted task.

Return type

Future