What is it?
OpenMP, which stands for Open Multi-Processing; is an Application Programming Interface (API) for writing multithreaded applications.
Why did we need OpenMP?
Multithreading has been long known, but it's not always easy to program. OpenMP proposes a different approach; decorating your code with directives. The advantage being you can write your code thinking serially, then parallelise it incrementally without having to rewrite your code or know about low-level parallelism concerns.
Having been a key player in HPC for the last 20 years and continuously improved in the meantime, no need to say that the performance of OpenMP is quite competitive.