  We present KumQuat, a system for automatically generating data parallel
implementations of Unix shell commands and pipelines. The generated parallel
versions split input streams, execute multiple instantiations of the original
pipeline commands to process the splits in parallel, then combine the resulting
parallel outputs to produce the final output stream. KumQuat automatically
synthesizes the combine operators, with a domain-specific combiner language
acting as a strong regularizer that promotes efficient inference of correct
combiners.
  We evaluate KumQuat on 70 benchmark scripts that together have a total of 427
stages. KumQuat synthesizes a correct combiner for 113 of the 121 unique
commands that appear in these benchmark scripts. The synthesis times vary
between 39 seconds and 331 seconds with a median of 60 seconds. We present
experimental results that show that these combiners enable the effective
parallelization of our benchmark scripts.
