Usando o openMP para processamento multicore vs multithreading

A pergunta pode parecer básica, mas não consegui encontrar nenhuma resposta concreta para isso. Agora, digamos que temos um processador multicore como o corei5 680 (2 núcleos físicos e com HT habilitado para 4 núcleos utilizáveis no sistema operacional). Minha pergunta é onde o openMP se encaixa exatamente na imagem? 1 - Quando dizemos que o multithreading usando o openMP, ele usa automaticamente todos os núcleos disponíveis (neste caso, 4 núcleos virtuais) e executa o thread, dependendo dos ciclos de CPU disponíveis? 2 - O openmp fornece o controle sobre como usar os núcleos físicos / virtuais? ou é abstraído e fornece ao ambiente de leitura mútua como digamos um java?

Desculpe-me se isso soa básico, mas tentei encontrar a resposta on-line, mas não encontrei nada satisfatório.

obrigado

questionAnswers(1)

yourAnswerToTheQuestion