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
Tawhaki (discussão | contribs)
Sem resumo de edição
Tawhaki (discussão | contribs)
Linha 230:
 
Esse exemplo não é exatamente útil, mas ilustra bem vários aspectos da API OpenMP.
 
==== Exemplo 2: "omp for": Mesmo código, dados diferentes ====
<pre>
int sample(int **input_array)
{
int i, j, k, result;
result = 0;
#pragma omp parallel shared(i, result) private(j,k) // As variáveis "result" e "i" são comuns a todas as threads, as variáveis j e k são diferentes para cada thread
{
#pragma omp for
for(i = 0; i < 18000; ++i)
{
k = 0;
for(j = 0; j < 42000; ++j)
{
k += input_array[i][j] - 1;
}
#pragma omp atomic
{
result += k;
}
}
}
return k;
}
</pre>
 
Esse exemplo mostra o funcionamento da construção "omp for", que divide as iterações de um dado loop "for" entre as threads, bem como a especificação de escopo para variáveis.
 
=== Vantagens e desvantagens ===