This paper presents {\scshape PaSh}, a system for parallelizing POSIX shell scripts. Given a script, {\scshape PaSh} converts it to a dataflow graph, performs a series of semantics-preserving program transformations that expose parallelism, and then converts the dataflow graph back into a script -- one that adds POSIX constructs to explicitly guide parallelism coupled with {\scshape PaSh}-provided {\scshape Unix}-aware runtime primitives for addressing performance- and correctness-related issues. A lightweight annotation language allows command developers to express key parallelizability properties about their commands. An accompanying parallelizability study of POSIX and GNU commands -- two large and commonly used groups -- guides the annotation language and optimized aggregator library that {\scshape PaSh} uses. Finally, {\scshape PaSh}'s {\scshape PaSh}'s extensive evaluation over 44 unmodified {\scshape Unix} scripts shows significant speedups ($0.89$--$61.1\times$, avg: $6.7\times$) stemming from the combination of its program transformations and runtime primitives.
翻译:本文展示了 pOSIX 外壳脚本平行化的系统 ; 这是 POSIX 外壳脚本平行化的系统 。 根据脚本, kscshape PaSh} 将其转换为数据流图, 执行一系列显示平行化的语义- 保存程序转换, 然后将数据流图转换为脚本 -- 将 POSIX 构造添加为明确指导平行化和提供 prscshape unix} 的 prscshape Unix} 运行时原始化, 以解决与性能和正确性有关的问题。 轻量级的批注语言允许命令开发者表达其命令的关键平行性属性 。 同时对 POSIX 和 GNU 命令的平行性研究 -- 两个大且常用的组 -- 指导批注语言和优化聚合库, 用于 spshape PaSh} 提供的 pressshape PaShe} 高级原始化评估 超过 44 $ (Schepeciate$) 和 Rium $. 1\\ pass shemealtime ax pass pass slages.