This document explains the concepts involved and how they are
applied within the GATK (and Queue where applicable). For
specific configuration recommendations, see the companion
document on parallelizing GATK tools. Parallelism is a way to
make a program finish faster by performing several operations in
parallel, rather than sequentially (i.e. waiting for each
operation to finish before starting the next one). Imagine you
need to cook rice for sixty-four people, but your rice cooker
can only make enough rice for four people at a time. If you have
to cook all the batches of rice sequentially, it's going to take
all night. But if you have eight rice cookers that you can use
in parallel, you can finish up to eight times faster. This is a
very simple idea but it has a key requirement: you have to be
able to break down the job into smaller tasks that can be done
independently. It's easy enough to divide portions of rice
because rice itself is a collection of discrete units. In
contrast, let's look at a case where