# parsl.providers.PBSProProvider

class parsl.providers.PBSProProvider(channel=LocalChannel(), account=None, queue=None, scheduler_options='', select_options='', worker_init='', nodes_per_block=1, cpus_per_node=1, init_blocks=1, min_blocks=0, max_blocks=1, parallelism=1, launcher=SingleNodeLauncher(), walltime='00:20:00', cmd_timeout=120)

  PBS Pro Execution Provider

  Parameters:

    - channel (Channel) – Channel for accessing this provider. Possible channels include `LocalChannel` (the default), `SSHChannel`, or `SSHInteractiveLoginChannel`.

    - account (str) – Account the job will be charged against.

    - queue (str) – Queue to request blocks from.

    - nodes_per_block (int) – Nodes to provision per block.

    - cpus_per_node (int) – CPUs to provision per node.

    - init_blocks (int) – Number of blocks to provision at the start of the run. Default is 1.

    - min_blocks (int) – Minimum number of blocks to maintain. Default is 0.

    - max_blocks (int) – Maximum number of blocks to maintain.

    - parallelism (float) – Ratio of provisioned task slots to active tasks. A parallelism value of 1 represents aggressive scaling where as many resources as possible are used; parallelism close to 0 represents the opposite situation in which as few resources as possible (i.e., min_blocks) are used.

    - walltime (str) – Walltime requested per block in HH:MM:SS.

    - scheduler_options (str) – String to prepend to the #PBS blocks in the submit script to the scheduler.

    - select_options (str) – String to append to the #PBS -l select block in the submit script to the scheduler. This can be used to specify ngpus.

    - worker_init (str) – Command to be run before starting a worker, such as ‘module load Anaconda; source activate env’.

    - launcher (Launcher) – Launcher for this provider. The default is `SingleNodeLauncher`.

  __init__(channel=LocalChannel(), account=None, queue=None, scheduler_options='', select_options='', worker_init='', nodes_per_block=1, cpus_per_node=1, init_blocks=1, min_blocks=0, max_blocks=1, parallelism=1, launcher=SingleNodeLauncher(), walltime='00:20:00', cmd_timeout=120)

  Methods

  `__init__`([channel, account, queue, ...]) |
  `cancel`(job_ids) | Cancels the jobs specified by a list of job ids
  `execute_wait`(cmd[, timeout]) |
  `status`(job_ids) | Get the status of a list of jobs identified by the job identifiers returned from the submit request.
  `submit`(command, tasks_per_node[, job_name]) | Submits the command job.

  Attributes

  `cores_per_node` | Number of cores to provision per node.
  `label` | Provides the label for this provider
  `mem_per_node` | Real memory to provision per node in GB.
  `status_polling_interval` | Returns the interval, in seconds, at which the status method should be called.

  property status_polling_interval

    Returns the interval, in seconds, at which the status method should be called.

    Returns:

      the number of seconds to wait between calls to status()

  submit(command, tasks_per_node, job_name='parsl')

    Submits the command job.

    Parameters:

      - command (str) – Command to be executed on the remote side.

      - tasks_per_node (int) – Command invocations to be launched per node.

      - job_name (str) – Identifier for job.

    Returns:

      - None – If at capacity and cannot provision more

      - job_id (str) – Identifier for the job