Only after careful investigation and trial and error experimentation can the program be converted with good results. Concurrent portions of a program are those parts of a program that are independent. Parallel execution of a program are those concurrent parts of the program that execute on separate processors. The problem is whether a concurrent portion of the program should be executed on multiple processors. Parallel implies concurrent, but concurrent does not imply parallel.
Parallel execution is an efficiency issue, while concurrency is a property of the program.
The issue for programmers is the suitability of a particular application on a given machine. If we know the suitability of the hardware, then we can buy the right hardware. The communication speed and processing speed are matched. The processor does not have to wait for communication events. All concurrent parts of the program can be executed in parallel.