Pergunta

Quero comparar PPL vs.OpenMP em relação ao seu desempenho, mas não consegue encontrar uma investigação detalhada na web.Acredito que não há muitas pessoas com experiência com PPL.

Estou desenvolvendo meu software no Windows, usando o Visual Studio 2010, e não quero portá-lo para outro lugar em curto prazo.

Se a portabilidade não é um problema e a única preocupação é o desempenho, o que você acha desses dois métodos?

Foi útil?

Solução

Provavelmente depende do seu algoritmo, porém esta pesquisa indica que o PPL pode ser mais rápido que o OpenMP:

http://www.codeproject.com/Articles/373305/Visual-Cplusplus-11-Beta-Benchmark-of-Parallel-Loo

Serial : 72ms
OpenMP : 16ms
PPL    : 12ms

Outras dicas

no MSDN há um grande comparação das propriedades OpenMP e concrt (núcleo de ppl):

O modelo OpenMP é uma correspondência especialmente boa para computação de alto desempenho, onde problemas computacionais muito grandes são distribuídos pelos recursos de processamento de um único computador. Nesse cenário, o ambiente de hardware é conhecido e o desenvolvedor pode razoavelmente esperar ter acesso exclusivo a recursos de computação quando o algoritmo é executado.

No entanto, outros ambientes de computação menos restritos podem não ser uma boa correspondência para OpenMP. Por exemplo, problemas recursivos (como o algoritmo QuickSort ou pesquisando uma árvore de dados) são mais difíceis de implementar usando o OpenMP. O tempo de execução de simultaneidade complementa as capacidades do OpenMP, fornecendo a biblioteca de padrões paralelos (PPL) e a biblioteca de agentes assíncronos. Ao contrário do OpenMP, o Runtime de Concorrência fornece um agendador dinâmico que se adapta aos recursos disponíveis e ajusta o grau de paralelismo como alterações de carga de trabalho.

Então, principais desvantagens do OpenMP:

  • modelo de sheduling estático.
  • não contém mecanismo de cancelamento (desavenção muito grande, em muitos cancelamento de algoritmo de concordância é necessário).
  • não contém abordagem de agente de concordância.
  • problemas com exceções no código do paralelo.

Se a sua única preocupação é o desempenho, então o que eu acho que sobre as duas abordagens é completamente irrelevante.Esta é uma questão resolvida por uma abordagem empírica, não por argumentação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top