Skip to content

Latest commit

 

History

History
442 lines (288 loc) · 10.9 KB

dev_docs.rst

File metadata and controls

442 lines (288 loc) · 10.9 KB

Developer Guide

parsl

set_stream_logger

set_file_logger

Apps

Apps are parallelized functions that execute independent of the control flow of the main python interpreter. We have two main types of Apps : PythonApps and BashApps. These are subclassed from AppBase.

AppBase

This is the base class that defines the two external facing functions that an App must define. The __init__ () which is called when the interpreter sees the definition of the decorated function, and the __call__ () which is invoked when a decorated function is called by the user.

parsl.app.app.AppBase

PythonApp

Concrete subclass of AppBase that implements the Python App functionality.

parsl.app.python_app.PythonApp

BashApp

Concrete subclass of AppBase that implements the Bash App functionality.

parsl.app.bash_app.BashApp

Futures

Futures are returned as proxies to a parallel execution initiated by a call to an App. We have two kinds of futures in Parsl: AppFutures and DataFutures.

AppFutures

parsl.dataflow.futures.AppFuture

DataFutures

parsl.app.futures.DataFuture

Exceptions

parsl.app.errors.ParslError

parsl.app.errors.NotFutureError

parsl.app.errors.InvalidAppTypeError

parsl.app.errors.AppException

parsl.app.errors.AppBadFormatting

parsl.app.errors.AppFailure

parsl.app.errors.MissingOutputs

parsl.app.errors.DependencyError

parsl.dataflow.error.DataFlowException

parsl.dataflow.error.DuplicateTaskError

parsl.dataflow.error.MissingFutError

DataFlowKernel

parsl.dataflow.dflow.DataFlowKernel

Executors

Executors are abstractions that represent available compute resources to which you could submit arbitrary App tasks. An executor initialized with an Execution Provider can dynamically scale with the resources requirements of the workflow.

We currently have thread pools for local execution, remote workers from ipyparallel for executing on high throughput systems such as campus clusters, and a Swift/T executor for HPC systems.

ParslExecutor (Abstract Base Class)

parsl.executors.base.ParslExecutor

ThreadPoolExecutor

parsl.executors.threads.ThreadPoolExecutor

IPyParallelExecutor

parsl.executors.ipp.IPyParallelExecutor

HighThroughputExecutor

parsl.executors.HighThroughputExecutor

ExtremeScaleExecutor

parsl.executors.HighThroughputExecutor

Swift/Turbine Executor

parsl.executors.swift_t.TurbineExecutor

parsl.executors.swift_t.runner

Execution Providers

Execution providers are responsible for managing execution resources that have a Local Resource Manager (LRM). For instance, campus clusters and supercomputers generally have LRMs (schedulers) such as Slurm, Torque/PBS, Condor and Cobalt. Clouds, on the other hand, have API interfaces that allow much more fine-grained composition of an execution environment. An execution provider abstracts these types of resources and provides a single uniform interface to them.

ExecutionProvider (Base)

parsl.providers.provider_base.ExecutionProvider

Local

parsl.providers.LocalProvider

Slurm

parsl.providers.SlurmProvider

Cobalt

parsl.providers.CobaltProvider

Condor

parsl.providers.CondorProvider

Torque

parsl.providers.TorqueProvider

GridEngine

parsl.providers.GridEngineProvider

Amazon Web Services

parsl.providers.AWSProvider

Google Cloud Platform

parsl.providers.GoogleCloudProvider

Kubernetes

parsl.providers.KubernetesProvider

Channels

For certain resources such as campus clusters or supercomputers at research laboratories, resource requirements may require authentication. For instance, some resources may allow access to their job schedulers from only their login-nodes, which require you to authenticate on through SSH, GSI-SSH and sometimes even require two-factor authentication. Channels are simple abstractions that enable the ExecutionProvider component to talk to the resource managers of compute facilities. The simplest Channel, LocalChannel, simply executes commands locally on a shell, while the SshChannel authenticates you to remote systems.

parsl.channels.channel_base.Channel

LocalChannel

parsl.channels.LocalChannel

SshChannel

parsl.channels.SSHChannel

SSH Interactive Login Channel

parsl.channels.SSHInteractiveLoginChannel

ExecutionProviders

An execution provider is basically an adapter to various types of execution resources. The providers abstract away the interfaces provided by various systems to request, monitor, and cancel computate resources.

parsl.execution_provider_base.ExecutionProvider

Slurm

parsl.providers.slurm.slurm.Slurm

Cobalt

parsl.providers.cobalt.cobalt.Cobalt

Condor

parsl.providers.condor.condor.Condor

Torque

parsl.providers.torque.torque.Torque

Local

parsl.providers.local.local.Local

AWS

parsl.providers.aws.aws.EC2Provider

Channels

For certain resources such as campus clusters or supercomputers at research laboratories, resource requirements may require authentication. For instance some resources may allow access to their job schedulers from only their login-nodes which require you to authenticate on through SSH, GSI-SSH and sometimes even require two factor authentication. Channels are simple abstractions that enable the ExecutionProvider component to talk to the resource managers of compute facilities. The simplest Channel, LocalChannel simply executes commands locally on a shell, while the SshChannel authenticates you to remote systems.

parsl.channels.channel_base.Channel

LocalChannel

parsl.channels.local.local.LocalChannel

SSHChannel

parsl.channels.ssh.ssh.SshChannel

SSHILChannel

parsl.channels.ssh_il.ssh_il.SshILChannel

Launchers

Launchers are basically wrappers for user submitted scripts as they are submitted to a specific execution resource.

SimpleLauncher

parsl.launchers.SimpleLauncher

SingleNodeLauncher

parsl.launchers.SingleNodeLauncher

AprunLauncher

parsl.launchers.AprunLauncher

SrunLauncher

parsl.launchers.SrunLauncher

SrunMPILauncher

parsl.launchers.SrunMPILauncher

Flow Control

This section deals with functionality related to controlling the flow of tasks to various executors.

FlowControl

parsl.dataflow.flow_control.FlowControl

FlowNoControl

parsl.dataflow.flow_control.FlowNoControl

Timer

parsl.dataflow.flow_control.Timer

Strategy

Strategies are responsible for tracking the compute requirements of a workflow as it is executed and scaling the resources to match it.

parsl.dataflow.strategy.Strategy

Memoization

parsl.dataflow.memoization.Memoizer