when multiple tasks are executed at the same time (or almost the same time). one or more cpus.
multiple work units executing at the same time, can be done with or without multiple processors
programming in a language that allows you to explicitly indicate how different portions of the computation may be executed concurrently by different processors