- OpenMP provides compiler directives and library calls to incrementally parallelize applications for shared memory multiprocessor systems. It works by allowing the master thread to spawn worker threads to perform work concurrently using directives like parallel and parallel do.
- Variables in OpenMP can be shared, private, or reduction. Shared variables are accessible by all threads while private variables have a separate copy for each thread. Reduction variables are used to combine values across threads.
- Synchronization is needed to coordinate thread access and ensure correct results. The barrier directive synchronizes threads at the end of parallel regions.