Programação Paralela em Arquiteturas Multi-Core/Ambientes de programação e bibliotecas: diferenças entre revisões

[edição verificada][revisão pendente]
Conteúdo apagado Conteúdo adicionado
He7d3r.bot (discussão | contribs)
Atualizando a categoria do livro, com AutoCat (detalhes). utilizando AWB
Moretti (discussão | contribs)
 
Linha 104:
# É conceitualmente simples.
# Tem garantia que os pedaços (chunks) não são maiores que grainsize iterações, dos quais deixam você assumir um tamanho para o intervalo máximo para o operator(). Isso garante que algumas vezes operator() será habilitado para usar um arranjo de tamanho fixo temporario no lugar de um arranjo temporario dinamico.
# Escolhe o melhor para uma máquina especificaespecífica.
 
O retorno de um simple_partitioner é que isso requer estimatizar o propriopróprio grainsize e um ótimo grainsize pode ser particular para uma máquina.
 
O auto_partitioner prover uma alternativa que heuristicamente escolhe o tamanho do pedaço(chunk) quando você não o definir. A heuristica se limita a overheads enquanto ainda prover uma ampla oportunidade de balanceamento de carga.
Linha 118:
}
 
Como com muitas [http://pt.wikipedia.org/wiki/Heuristica heuristicas], tem se situações onde auto_partitioner pode não encontrar o valor ótimo e o simple_partitioner deveria produzir o melhor desempenho. Nos recomendamosRecomendamos usar auto_partitioner ao menos que você tenha tempo para experimentar e melhor o ''grainsize'' para as maquinasmáquinas de interesse.
 
=== Desenvolvendo aplicações utilizando ''parallel_reduce'' ===
Linha 156:
 
 
'''Grafo da SeqüênciaSequência split-join'''
 
Um aro da figura indica a ordem no tempo. Note que o construtor splitting pode executar concorrentemente enquanto o objeto x estaestá sendo usado para a primeira metade da redução. Embora, todas as ações do construtor splitting, que cria y, devam ser feitas por uma thread segura (safe) ao seu respectivo x. Então, se o construtor splitting necessita aumentar a referencia do contador compartilhado, deverá ser usado um incrementador atômico.
 
float ParallelSumFoo( const float a[], size_t n ) {