Las operaciones colectivas son bloques de construcción para patrones de interacción, que a menudo se utilizan en algoritmos SPMD en el contexto de programación paralela . Por tanto, existe interés en la realización eficiente de estas operaciones.
En todas las funciones de tiempo de ejecución asintóticas, denotamos la latencia , el costo de comunicación por palabra , el número de unidades de procesamiento y el tamaño de entrada por nodo . En los casos en los que tenemos mensajes iniciales en más de un nodo, asumimos que todos los mensajes locales son del mismo tamaño. Para abordar las unidades de procesamiento individuales que utilizamos .
Si no tenemos una distribución igual, es decir, el nodo tiene un mensaje de tamaño , obtenemos un límite superior para el tiempo de ejecución mediante la configuración .
Se asume un modelo de memoria distribuida . Los conceptos son similares para el modelo de memoria compartida . Sin embargo, los sistemas de memoria compartida pueden proporcionar soporte de hardware para algunas operaciones como la transmisión ( § Transmisión ), por ejemplo, lo que permite una lectura concurrente conveniente. [2] Por lo tanto, pueden estar disponibles nuevas posibilidades algorítmicas.
El patrón de transmisión se utiliza para distribuir datos desde una unidad de procesamiento a todas las unidades de procesamiento, lo que a menudo se necesita en los programas paralelos de SPMD para dispensar valores de entrada o globales. La transmisión se puede interpretar como una versión inversa del patrón de reducción ( § Reducir ). Inicialmente solo root con mensaje de tiendas . Durante la difusión se envía al resto de unidades de procesamiento, de modo que eventualmente esté disponible para todas las unidades de procesamiento.