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 24:
 
==== Construções Para Divisão de Trabalho ====
 
Uma das construções chave é o pragma "omp parallel", que declara uma seção paralela. Quando uma seção paralela é encontrada, ''threads'' são disparadas conforme necessário, e todas elas começam a executar o código dentro daquela seção paralela. As construções para divisão de trabalho citadas a seguir só funcionam dentro de uma seção paralela.
 
Na definição da seção paralela deve ser informado ao compilador várias coisas como quais variáveis serão privadas de cada thread e quais serão compartilhadas - isso é feita através das palavras "shared" e "private". Pode-se também determinar explicitamente quantos ''threads'' são desejados, através da palavra "num_threads".
 
A primeira construção importante a ser citada é o "omp for". Nesta construção, o intervalo de iteração do ''loop'' é divido entre as threads e essa divisão acontece de forma automática.
 
Outra construção de divisão de trabalho é o "omp sections". Ela define blocos independentes, que podem ser distribuídos entre as ''threads''. Cada ''section'' vai ser executada apenas por uma ''thread''. Trata-se de uma forma simples de paralelizar tarefas distintas que não tem (ou tem pouca) dependência de dados entre si.
 
==== Construções Para Sincronização ====