Cuál es la mejor implementación de MPI [cerrado]


Tengo que implementar el sistema MPI en un clúster. Si alguien aquí tiene alguna experiencia con MPI (MPICH / OpenMPI), me gustaría saber cuál es mejor y cómo se puede mejorar el rendimiento en un clúster de cajas x86_64.

Author: prasanna, 2008-09-27

4 answers

MPICH ha existido mucho más tiempo. Es extremadamente portátil y encontrará años de consejos y trucos en línea. Es una apuesta segura y es probablemente compatible con más programas MPI por ahí.

OpenMPI es más reciente. Si bien no es tan portátil, es compatible con las plataformas más comunes realmente bien. La mayoría de la gente parece pensar que es mucho mejor en varios aspectos, especialmente para la tolerancia a fallos , pero para aprovechar esto puede que tenga que usar algunas de sus características especiales eso no es parte del estándar MPI.

En cuanto al rendimiento, depende mucho de la aplicación; es difícil dar consejos generales. Debe publicar una pregunta específica sobre el tipo de cálculo que desea ejecutar, el número de nodos y el tipo de hardware, incluido el tipo de hardware de red que está utilizando.

 18
Author: dmazzoni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-28 00:59:56

He escrito bastantes aplicaciones paralelas para clústeres de Windows y Linux, y puedo aconsejarle que en este momento MPICH2 es probablemente la opción más segura. Es, como menciona el otro respondedor, una biblioteca muy madura. Además, hay un amplio soporte de radiodifusión (a través de MPI_Bcast) ahora, y de hecho, MPICH2 tiene bastantes características realmente agradables como scatter-and-gather.

Sin embargo, OpenMPI está ganando terreno. Penguin computing (son un gran proveedor de clústeres, y les gusta Linux) en realidad tiene algunos puntos de referencia muy fuertes donde OpenMPI supera a MPICH2 sin duda en ciertas circunstancias.

Con respecto a su comentario sobre "aumentar el rendimiento", el mejor consejo que puedo dar es nunca enviar más datos de los absolutamente necesarios si está vinculado a E/S, y nunca hacer más trabajo del necesario si está vinculado a la CPU. He caído en la trampa de optimizar la pieza equivocada de código más de una vez:) Espero que no sigas en mi pasos!

Echa un vistazo a los foros de MPI - tienen un montón de buena información sobre las rutinas de MPI, y el Beowulf sitio tiene un montón de preguntas interesantes contestadas.

 9
Author: Mike,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-19 22:34:37

'Mejor' es difícil de definir... 'Más rápido' se puede responder comparándolo con su código y su hardware. Cosas como la optimización colectiva y de descarga dependerán de su hardware exacto y también es bastante variable con respecto a las versiones de la pila de controladores, Google debería poder encontrarle combinaciones de trabajo.

En cuanto al trabajo de optimización, eso depende un poco del código, y un poco del hardware.

¿Su código I/O está vinculado al almacenamiento? En qué caso la investigación algo mejor que NFS podría ayudar mucho, o usar E/S MPI en lugar de E/S paralelas ingenuas

Si está vinculado a la red, entonces mirar la localidad de comunicación y la superposición de comunicaciones/cómputo puede ayudar. La mayoría de las diversas implementaciones de MPI tienen opciones de ajuste para usar la memoria compartida local en lugar de la red para las comunicaciones intranódicas, lo que para algunos códigos puede reducir la carga de la red significativamente.

La segregación del tráfico de E/S y MPI puede hacer una gran diferencia en algunos clústeres, especialmente para clústeres gigabit ethernet.

 2
Author: Funcan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-18 16:15:19

Usamos mpich simplemente porque parecía más disponible y mejor documentado, no pusimos mucho esfuerzo en probar alternativas. MPICH tiene herramientas razonables para la implementación en Windows.
El principal problema de rendimiento que tuvimos fue que necesitábamos enviar los mismos datos de base a todos los nodos y MPICH no admite (o no admitía) la transmisión , por lo que la implementación de los datos iniciales fue O (n)

 -1
Author: Martin Beckett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-28 01:05:21