OpenMP provides a powerful, portable, and simple means of threading applications. In some cases, however, developers should choose the flexibility of native threading APIs. The guidelines in this article help to identify whether OpenMP is an appropriate choice for a given situation.
With automatic parallelization, the compiler detects loops that can be safely and efficiently executed in parallel and generates multithreaded code.
How to configure OpenMP in the Intel IPP library to maximize multi-threaded performance of the Intel IPP primitives.
Tasks are a lightweight alternative to threads that provide faster startup and shutdown times, better load balancing, an efficient use of available resources, and a higher level of abstraction.
Application programmers sometimes write hand-coded synchronization routines rather than using constructs provided by a threading API in order to reduce synchronization overhead or provide different functionality than existing constructs offer.
set the threading affinity with ippSetAffinity
The Intel C++ and Fortran compilers for Windows* and Linux* provide 'legacy' and 'compatibility' implementations of the OpenMP THREADPRIVATE directive. The 'compatibility' option should not be used when everything is compiled by Intel compilers.
Intel MKL in Microsoft Visual Studio
(This work was done by Vivek Lingegowda during his internship at Intel.)