divide a large task into parts by function or by data gain efficiency by using different processors to simultaneously execute parts of a task
a program which is intended to accomplish multiple tasks  at the same time  through the use of either multiple cores/processors on the same machine or multiple machines
multiple work units executing at the same time, can be done with or without multiple processors