PaSh aims at the correct and automated parallelization of POSIX shell scripts. Broadly, PaSh includes three components: (1) a compiler that, given as input a POSIX shell script, emits a POSIX shell script that includes explicit data-parallel fragments for which PaSh has deemed such parallelization semantics-preserving, (2) a set of PaSh-related runtime primitives for supporting the execution of the parallel script fragments, available as in the
PATH as normal commands, and (3) a crowd-sourced library of annotations characterizing several properties of common Unix/Linux commands relevant to parallelization.
To parallelize, say,
./evaluation/intro/hello-world.sh with a parallelization width of
2, from the top-level directory of the repository run:
./pa.sh --help to get more information about the available commands. See docs/tutorial for a longer tutorial.
PaSh has been run on Ubuntu, Fedora, Debian, and Arch. Use one of the following ways to set it up:
curl up.binpa.sh | shfrom your terminal,
docker pull binpash/pash-18.04, or
More installation instructions in the tutorial.
PASH_TOP in your startup scripts!
Issues That Need Help