Parallel computation will become the norm in the coming decades. Unfortunately, advances in parallel hardware have far outpaced parallel applications of software. There are currently two approaches to applying parallelism to applications. One is to write completely new applications in new languages. But abandoning applications that work is unacceptable to most nonacademic users of high-performance computers. The other approach is to convert existing applications to a parallel form. This can be done manually or automatically.