# User guide

Parsl applications are composed of Apps that define tasks to be executed, Configuration objects which define resources available for executing tasks, and Workflow scripts that weave tasks together into parallel workflows.

Start with an overview of Parsl before learning about each component.

- Overview
  - Parsl and Concurrency
  - Parsl and Execution
  - Parsl and Communication
  - The Parsl Environment
- Writing Parsl Apps
  - Python Apps
  - Bash Apps
  - MPI and Multi-node Apps
  - Join Apps
- Configuring Parsl
  - Config Objects
  - Executors
  - Providers
  - Example configurations
- Running Workflows
  - Futures
  - Example parallel patterns
  - Error handling
  - Lifted operators
  - Memoization and checkpointing
  - ParslPoolExecutor Interface
- Advanced Topics
  - Structuring Parsl programs
  - Usage Statistics Collection
  - Monitoring
  - Staging data files
  - Measuring performance with parsl-perf
  - Plugins