The exact definition of a parallel program is still open for debate. Rougly speaking, parallel processing is using more than one computer at the same time to solve a problem, or using a computer that has more than one processor working simultaneously (a parallel computer).
SPMD (Single Program, Multiple Data) model is a loosely synchronous parallel programming model in which different nodes execute the same program on different data sets.
MPMD (Multiple Program, Multiple Data) model is an asynchronous parallel programming model in which different nodes execute different programs on different data sets.
Usually, some form of communication between these processes is required.