Pregunta

Quiero comparar PPL frente a OpenMP con respecto a su desempeño, pero no puede encontrar una investigación detallada en la web.Creo que no hay muchas personas que tengan experiencia con PPL.

Estoy desarrollando mi software en Windows, usando Visual Studio 2010 y no quiere puertarlo a otro lugar en un corto plazo.

Si la portabilidad no es un problema, y solo la preocupación es el rendimiento, ¿qué piensa sobre estos dos métodos?

¿Fue útil?

Solución

Probablemente depende de su algoritmo, sin embargo, esta investigación indica que la PPL puede ser más rápida y luego OpenMP:

http:// www.codeproject.com/articles/373305/visual-cplusplus-11-beta-benchmark-of-parallel-loo

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

Otros consejos

en MSDN hay una gran comparación de las propiedades OpenMP y Concrt (núcleo de la PPL):

El modelo OpenMP es una coincidencia especialmente buena para la computación de alto rendimiento, donde se distribuyen problemas computacionales muy grandes a través de los recursos de procesamiento de una sola computadora. En este escenario, se conoce el entorno de hardware y el desarrollador puede esperar razonablemente tener acceso exclusivo a los recursos informáticos cuando se ejecuta el algoritmo.

Sin embargo, otros entornos de computación menos restringidos pueden no ser una buena coincidencia para OpenMP. Por ejemplo, los problemas recursivos (como el algoritmo de Quicksort o la búsqueda de un árbol de datos) son más difíciles de implementar utilizando OpenMP. El tiempo de ejecución de la concurrencia complementa las capacidades de OpenMP al proporcionar la biblioteca de patrones paralelos (PPL) y la biblioteca de agentes asíncronos. A diferencia de OpenMP, el tiempo de ejecución de la concurrencia proporciona un programador dinámico que se adapta a los recursos disponibles y ajusta el grado de paralelismo a medida que cambian las cargas de trabajo.

Entonces, mayúsculas desventajas de OpenMP:

  • Modelo de Sheduling estático.
  • no contiene mecanismo de cancelación (muy enorme desventaja, en muchos algoritmos de concurrencia se requiere una cancelación).
  • no contiene enfoque de agente de concurrencia.
  • problemas con excepciones en el código de paralel.

Si su única preocupación es el rendimiento, entonces lo que creo que sobre los dos enfoques es completamente irrelevante.Esta es una pregunta resoluble por un enfoque empírico, no por argumentación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top