Programação Paralela em Arquiteturas Multi-Core/Programação em OpenMP: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Linha 10:
 
=== Modelo de Programação ===
 
O OpenMP usa um modelo ''fork''/''join'' (que é como um mestre/escravo). Há um fluxo de execução principal (a master thread) e quando necessário (e.g., em uma seção paralela), novas threads são disparadas para dividir o trabalho. Por fim, ao fim de uma seção paralela, é feito um ''join''.
 
Uma recurso interessante do OpenMP é que a sincronização entre os threads quase sempre ocorre de maneira implícita, de maneira automática. Isso faz com que sua utilização seja algo muito simples. Inclusive, é possível fazer com que os programas compilem com ou sem OpenMP. Caso a biblioteca seja utilizada eles serão paralelos, caso contrário, seriais.
 
É importante citar algumas características que diferenciam o OpenMP de outras alternativas. No OpenMP não é possível ver como cada ''thread'' é criada e inicializada. Também não é visível uma função separada contendo o código que cada ''thread'' executa. A divisão de trabalho realizado sobre um arranjo também não é visível explicitamente. Enfim, quase tudo acontece "por trás das cortinas" de modo que a utilização seja o mais transparente possível.
 
O modelo OpenMP é fortemente baseado em memória compartilhada, mas existem implementações para outras arquiteturas (tipo message-passing). Essas implementações não costumam ser tão eficientes quanto a implementação tradicional.
 
=== Visão Geral ===