Parsl - Parallel Scripting Library¶
Parsl is a Python library for programming and executing data-oriented workflows (dataflows) in parallel. Parsl scripts allow selected Python functions and external applications (called apps) to be connected by shared input/output data objects into flexible parallel workflows. Rather than explicitly defining a dependency graph and/or modifying data structures, instead developers simply annotate Python functions and Parsl constructs a dynamic, parallel execution graph derived from the implicit linkage between apps based on shared input/output data objects. Parsl then executes apps when dependencies are met. Parsl is resource-independent, that is, the same Parsl script can be executed on a laptop, cluster, cloud, or supercomputer.
Parsl can be used to realize a variety of workflows:
- Parallel dataflow in which tasks are executed when their dependencies are met.
- Interactive and dynamic workflows in which the workflow is dynamically expanded during execution by users or the workflow itself.
- Procedural workflows in which serial execution of tasks are managed by Parsl.
- Quickstart
- Parsl tutorial
- User guide
- FAQ
- How can I debug a Parsl script?
- How can I view outputs and errors from apps?
- How can I make an App dependent on multiple inputs?
- Can I pass any Python object between apps?
- How do I specify where apps should be run?
- Workers do not connect back to Parsl
- parsl.dataflow.error.ConfigurationError
- Remote execution fails with SystemError(unknown opcode)
- Parsl complains about missing packages
- zmq.error.ZMQError: Invalid argument
- How do I run code that uses Python2.X?
- Parsl hangs
- How can I start a Jupyter notebook over SSH?
- How can I sync my conda environment and Jupyter environment?
- How do I cite Parsl?
- Reference guide
- parsl.set_stream_logger
- parsl.set_file_logger
- parsl.app.app.python_app
- parsl.app.app.bash_app
- parsl.app.futures.DataFuture
- parsl.config.Config
- parsl.dataflow.futures.AppFuture
- parsl.dataflow.dflow.DataFlowKernelLoader
- parsl.data_provider.data_manager.DataManager
- parsl.data_provider.data_manager.Staging
- parsl.data_provider.files.File
- parsl.executors.base.ParslExecutor
- parsl.executors.ThreadPoolExecutor
- parsl.executors.IPyParallelExecutor
- parsl.executors.ipp_controller.Controller
- parsl.executors.HighThroughputExecutor
- parsl.executors.WorkQueueExecutor
- parsl.executors.ExtremeScaleExecutor
- parsl.executors.swift_t.TurbineExecutor
- parsl.channels.LocalChannel
- parsl.channels.SSHChannel
- parsl.channels.OAuthSSHChannel
- parsl.channels.SSHInteractiveLoginChannel
- parsl.providers.AdHocProvider
- parsl.providers.AWSProvider
- parsl.providers.CobaltProvider
- parsl.providers.CondorProvider
- parsl.providers.GoogleCloudProvider
- parsl.providers.GridEngineProvider
- parsl.providers.JetstreamProvider
- parsl.providers.LocalProvider
- parsl.providers.LSFProvider
- parsl.providers.GridEngineProvider
- parsl.providers.SlurmProvider
- parsl.providers.TorqueProvider
- parsl.providers.KubernetesProvider
- parsl.providers.PBSProProvider
- parsl.launchers.SimpleLauncher
- parsl.launchers.SingleNodeLauncher
- parsl.launchers.SrunLauncher
- parsl.launchers.AprunLauncher
- parsl.launchers.SrunMPILauncher
- parsl.launchers.GnuParallelLauncher
- parsl.launchers.MpiExecLauncher
- parsl.launchers.JsrunLauncher
- parsl.monitoring.MonitoringHub
- parsl.app.errors.AppBadFormatting
- parsl.app.errors.AppException
- parsl.app.errors.AppFailure
- parsl.app.errors.AppTimeout
- parsl.app.errors.BadStdStreamFile
- parsl.app.errors.BashAppNoReturn
- parsl.app.errors.DependencyError
- parsl.app.errors.InvalidAppTypeError
- parsl.app.errors.MissingOutputs
- parsl.app.errors.NotFutureError
- parsl.app.errors.ParslError
- parsl.executors.errors.ControllerError
- parsl.executors.errors.ExecutorError
- parsl.executors.errors.ScalingFailed
- parsl.executors.errors.InsufficientMPIRanks
- parsl.executors.errors.DeserializationError
- parsl.executors.errors.BadMessage
- parsl.executors.exceptions.ExecutorException
- parsl.executors.exceptions.TaskExecException
- parsl.dataflow.error.DataFlowException
- parsl.dataflow.error.ConfigurationError
- parsl.dataflow.error.DuplicateTaskError
- parsl.dataflow.error.MissingFutError
- parsl.dataflow.error.BadCheckpoint
- parsl.dataflow.error.DependencyError
- parsl.launchers.error.BadLauncher
- parsl.providers.error.ExecutionProviderException
- parsl.providers.error.OptionalModuleMissing
- parsl.providers.error.ChannelRequired
- parsl.providers.error.ScaleOutFailed
- parsl.providers.error.SchedulerMissingArgs
- parsl.providers.error.ScriptPathError
- parsl.channels.errors.ChannelError
- parsl.channels.errors.BadHostKeyException
- parsl.channels.errors.BadScriptPath
- parsl.channels.errors.BadPermsScriptPath
- parsl.channels.errors.FileExists
- parsl.channels.errors.AuthException
- parsl.channels.errors.SSHException
- parsl.channels.errors.FileCopyException
- parsl.executors.high_throughput.errors.WorkerLost
- Developer documentation
- Contributing
- Changelog
- Libsubmit Changelog
- Swift vs Parsl
- Roadmap
- Developer Guide
- Packaging