Pregunta

He leído las definiciones de estos términos y mi interpretación es que hay una relación entre un grupo y un comunicador. Un grupo es un conjunto de procesos que desean comunicarse entre sí y un comunicador es una implementación para un grupo.

¿Es esto correcto? ¿Por qué tener dos términos diferentes si esto es así?

¿Fue útil?

Solución

A grupo es un conjunto ordenado de identificadores de proceso (MPI 2.2 Spec, Sec 6.2.1). El pedido se asocia asociando con cada identificador de proceso un único rango De 0 a grupos. TISE - 1.

A comunicador Encapsula toda la comunicación entre un conjunto de procesos. Un intracomunicador se asocia con un grupo y contextos de comunicación para la comunicación punto a punto y colectiva y posiblemente otra información de contexto, como topologías virtuales (especificaciones, 6.1.2). Un intercomunicador se asocia con dos grupos no superpuestos.

Yo (probablemente muy libremente) pienso en el grupo de un comunicador como su tabla de símbolos.

Un grupo puede contener identificadores de proceso de varios comunicadores.

Finalmente, la construcción y las operaciones en grupos son locales para el proceso, y no implican comunicación entre procesos. Esto no es, en general, cierto para los comunicadores (por su propia naturaleza).

Otros consejos

Hay muchas diferencias entre los comunicadores y los grupos, como descubrí después de leer la especificación MPI.

Editar: los grupos son objetos que representan grupos de procesos.

Communicator es un conjunto de procesos que pueden comunicarse entre sí y pueden consistir en procesos de un solo grupo o de múltiples grupos.

Por lo tanto, son entidades completamente diferentes. No deben confundirse entre sí.

Un comunicador contiene grupos, mientras que un grupo es solo una colección de procesos.

Si un comunicador contiene solo un grupo, se llama intracomunicador (el comunicador, mpi_comm_world es uno de los cuales se refiere a un grupo que incluye todos los rangos).

Si contiene dos grupos, se llama en intercomunicador (no hay ninguno creado de forma predeterminada para usted).

Echa un vistazo a https://computing.llnl.gov/tutorials/mpi_advanced/davidcronkslides.pdf Donde da una muy buena explicación pictórica de cómo un comunicador es un contenedor para uno o dos grupos.

Un grupo en MPI corresponde al concepto matemático "conjunto", que se introduce en MPI para facilitar la organización de procesos y la creación de nuevas comunicaciones. Por ejemplo, puede usar las operaciones de la Unión y la Intersección en conjuntos para crear nuevos conjuntos para que pueda usarlos para crear nuevos comunicadores.

Un grupo no tiene nada que ver con las comunicaciones, aunque se puede utilizar un grupo para crear un comunicador (un comunicador es un grupo más un contexto).

Un grupo también se puede utilizar como ID para distribuir tareas/datos entre diferentes procesos. Por ejemplo, podemos probar si un proceso está en un grupo para determinar si debería hacer algo.

A comunicador es un objeto que describe un grupo de procesos. En muchas aplicaciones, todos los procesos trabajan juntos de cerca, y el único comunicador que necesita es MPI_comm_World.

grupo describiendo todos los procesos con los que comienza su trabajo.

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