Usando openMP para el procesamiento multinúcleo vs multihilo

La pregunta puede sonar básica, pero no pude encontrar ninguna respuesta concreta a esto. Así que ahora digamos que tenemos un procesador multinúcleo como un corei5 680 (2 núcleos físicos y con HT habilitado 4 núcleos utilizables para el sistema operativo). Mi pregunta es ¿dónde encaja exactamente OpenMP en la imagen? 1 - Cuando decimos que los subprocesos múltiples utilizan openMP, ¿utiliza automáticamente todos los núcleos disponibles (4 núcleos virtuales en este caso) y ejecuta el subproceso en función de los ciclos de CPU disponibles? 2 - ¿Openmp da el control sobre cómo usar los núcleos físicos / virtuales? ¿O es abstraído y le da al entorno mutlithreading como digamos un java?

Disculpe si esto suena básico, pero he tratado de encontrar la respuesta en línea, pero no pude encontrar nada satisfactorio.

Gracias