INTRODUCCION A LA COMPUTACION PARALELA. 2nd Workshop: New Frontiers of Bioinformatics in Latin America Gridding Biology. Dr.

Documentos relacionados
Lusitania. Pensando en Paralelo. César Gómez Martín

ARQUITECTURAS PARA PROCESAMIENTO PARALELO

07 y 08 Sistemas distribuidos y paralelos y tarea 02

SISTEMAS DE MULTIPROCESAMIENTO

UNIDAD II Metodología de programación paralela. Lic. Jesús Germán Andrés PAUTSCH - FCEQyN - UNaM

Threads, SMP y Microkernels. Proceso

Paradigma de paso de mensajes

MINUTA: Taller en UAEMEX, Toluca. Construcción de Tecnología HPC

Plataformas paralelas

Qué es un programa informático?

:Arquitecturas Paralela basada en clusters.

Introducción a las Arquitecturas Paralelas. Arquitectura de Computadoras II Fac. Cs. Exactas UNCPBA Prof. Marcelo Tosini 2015

Las optimizaciones pueden realizarse de diferentes formas. Las optimizaciones se realizan en base al alcance ofrecido por el compilador.

Diseño arquitectónico 1ª edición (2002)

Tema 2 Introducción a la Programación en C.

Curso-Taller Programación Paralela con lenguaje C bajo Linux. MCC. Salazar Martínez Hilario

La Máquina de Acceso Aleatorio (Random Access Machine)

Unidad II Arquitectura de Computadoras

EVOLUCIÓN DE LOS PROCESADORES

Fecha de entrega: Miércoles 4 de Septiembre. Campus: Villahermosa. Carrera : Ingeniería en Sistemas Compuacionales. Nombre del maestro: Carlos Castro

Modelado de los computadores paralelos

El Bueno, el Malo y el Feo

CLUSTER FING: PARALELISMO de MEMORIA DISTRIBUIDA

MICROCONTROLADORES PIC16F84 ING. RAÚL ROJAS REÁTEGUI

FUNCIONAMIENTO DEL ORDENADOR

Hilos y Procesamiento en paralelo

MULTIPROCESADORES (MIMD)

Sistemas Distribuidos. Bibliografía: Introducción a los Sistemas de Bases de Datos Date, C.J.

Objetivos. Objetivos. Arquitectura de Computadores. R.Mitnik

Herramientas para el estudio de prestaciones en clusters de computación científica, aplicación en el Laboratorio de Computación Paralela

4. Programación Paralela

FUNDAMENTOS DE COMPUTACIÓN PARA CIENTÍFICOS. CNCA Abril 2013

Conceptos generales de sistemas distribuidos

Herramientas Informáticas I Software: Sistemas Operativos

Area Académica: Sistemas Computacionales. Tema: Elementos de diseño de memoria caché

TEMA 5: PARALELISMO A NIVEL DE HILOS, TAREAS Y PETICIONES (TLP, RLP) (primera parte).

Tema 2. Arquitectura de CPU avanzadas 15/03/2011

Introducción HPC. Curso: Modelización y simulación matemática de sistemas. Esteban E. Mocskos (emocskos@dc.uba.ar) Escuela Complutense Latinoamericana

Introducción a Computación

IMPLEMENTACIÓN DE COMPUTACIÓN DE ALTO RENDIMIENTO Y PROGRAMACIÓN PARALELA EN CÓDIGOS COMPUTACIONALES CARLOS ANDRÉS ACOSTA BERLINGHIERI

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

Multiplicación de Matrices en Sistemas cc-numa Multicore. Autor: Jesús Cámara Moreno Director: Domingo Giménez Cánovas

Módulo: Modelos de programación para Big Data

Nociones básicas de computación paralela

Arquitecturas vectoriales, SIMD y extensiones multimedia

Computación Paralela Móvil

Introducción a la arquitectura de computadores

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Sistemas distribuidos

Procesador Concepto Tipos Velocidad de proceso Características funciones aritmético- lógicas y de control

Cuando el lenguaje si importa

Los valores obtenidos de speedup tienden a incrementarse hasta los ocho procesadores. al usar diez procesadores éste se mantiene igual o decrece. Esto

Tecnológico Nacional de México INSTITUTO TECNOLÓGICO DE SALINA CRUZ

ALGORITMOS PARALELOS Tema 1: Introducción a la Computación Paralela

Arquitectura de Computadores II Clase #7

Nicolás Zarco Arquitectura Avanzada 2 Cuatrimestre 2011

Programación concurrente

Una dirección IP es una secuencia de unos y ceros de 32 bits. La Figura muestra un número de 32 bits de muestra.

Lic. Saidys Jiménez Quiroz. Área de Tecnología e Informática. Grado 6 - Cescoj

Sist s em e a m s s O per e ativos o. s Unidad V Entrada Sali l d i a.

INDICE Control de dispositivos específicos Diseño asistido por computadora Simulación Cálculos científicos

Unidad I Marco teórico sobre redes de computadoras

Concurrencia y paralelismo

Sistema de archivos de Google. Mario Alonso Carmona Dinarte A71437

una red de equipos no puede funcionar sin un sistema operativo de red

Organización del Computador I. Introducción e Historia

SILABO DE SISTEMAS OPERATIVOS

Aplicaciones Concurrentes

El Modelo. Aplicación. Presentación. Sesión. Transporte. Red. Enlace. Físico

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Jorge De Nova Segundo

6. Entrada y Salida Explicación de la interfaz entre el computador y el mundo exterior.

ÍNDICE INTRODUCCIÓN AL PROCESAMIENTO PARALELO ARQUITECTURA E INGENIERÍA DE COMPUTADORES TEMA1

Usuario. Programas de Aplicación. Sistema Operativo. Hardware. Figura 1. Sistema de cómputo estructurado por capas.

de Gran Canaria Centro de Tecnología Médica Programación Concurrente

Estructuras de Control

Comunicación de Datos I Profesora: Anaylen López Sección IC631 MODELO OSI

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Algoritmos en paralelo para una variante del problema bin packing

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Aspectos Básicos de Networking

Elementos Diagramas de Clases Clase:

Javier Pérez Mato µp para Comunicaciones Curso 2008/09 ETSIT - ULPGC

TEMA 9: DIAGRAMA DE OBJETOS, SECUENCIA Y DESPLIEGUE EN UML

Manipulación de procesos

Bus I 2 C. Introducción

ESTRUCTURA BÁSICA DE UN ORDENADOR

UNIVERSIDAD DE GUADALAJARA

Tema: Microprocesadores

Computadora y Sistema Operativo

PROFInet. Índice. Tecnologías de Control

Introducción a los Sistemas Operativos

Arquitectura de Computadoras para Ingeniería

UNIDAD 1. COMPONENTES DEL COMPUTADOR

Procesadores superescalares. Introducción

Primeros pasos con CUDA. Clase 1

Usando el Sistema Operativo

Andres Felipe Rojas / Nancy Gelvez. UNESCO UNIR ICT & Education Latam Congress 2016

Intel lanza su procesador Caballero Medieval habilitado para Inteligencia Artificial

Transcripción:

INTRODUCCION A LA COMPUTACION PARALELA 2nd Workshop: New Frontiers of Bioinformatics in Latin America Gridding Biology Dr. Pablo Guillén Universidad de Los Andes 22-26 de Noviembre de 2004

Qué es el Paralelismo? Una estrategia para ejecutar grandes tareas complejas, de forma más rápida. Una tarea grande puede ser ejecutada serialmente (un paso seguido de otro) o puede descomponerse en tareas más pequeñas para ser ejecutadas simultáneamente, es decir, en paralelo. El paralelismo es hecho: Descomponiendo las tareas en tareas más pequeñas Asignando las tareas más pequeñas a múltiples trabajadores para trabajar simultáneamente Coordinando los trabajadores

Programación en secuencial Tradicionalmente, los programas han sido escritos para computadores seriales: Una instrucción es ejecutada a un tiempo Usando un solo procesador La velocidad de procesamiento depende en la rapidez que la data puede ser movida a través del Hardware

La necesidad de máquinas rápidas Existen diferentes clases de problemas que requieren un procesamiento más rápido: Problemas de simulación y modelaje: Basados en aproximaciones sucesivas Más cálculo, más precisión Problemas dependientes de los cálculos y manipulación de grandes cantidades de datos: Procesamiento de señal e imágenes Rendering de imágenes Base de datos

La necesidad de máquinas rápidas Problemas de cómputo intensivo: Modelaje de clima Dinámica de fluidos Dinámica de población Genoma Humano Simulación de yacimientos petrolíferos (Sísmica)

COMPUTO EN PARALELO Múltiples procesadores (Los trabajadores) Red (Enlace entre los trabajadores) Ambiente para crear y administrar el procesamiento en paralelo Sistema operativo Paradigma de la programación en paralelo Pase de mensajes: MPI Paralelismo de datos: Implantado en Bibliotecas Fortran 90 / High Performance Fortran OpenMP Un algoritmo paralelo y un programa paralelo

Programación en paralelo La programación en paralelo involucra: Descomponer un algoritmo o data en partes Distribuir las partes como tareas, las cuales son trabajadas en múltiples procesadores simultáneamente Coordinar el trabajo y la comunicación de estos procesadores Consideraciones de la programación en paralelo: El tipo de arquitectura paralela que está siendo usada El tipo de comunicación que está siendo usada

Taxonomia de la Arquitectura Todos los computadores paralelos usan múltiples procesadores Existen diferentes métodos usados para clasificar los computadores No existe una taxonomia que se ajuste a los diseños La taxonomia de Flynn's usa la relación de instrucciones del programa a datos del programa. Las cuatro categorías son: SISD Single Instruction, Single Data Stream SIMD Single Instruction, Multiple Data Stream MISD - Multiple Instruction, Single Data Stream MIMD Multiple Instruction, Multiple Data Stream

Modelo SISD: Single Instruction, Single Data Stream No es un computador paralelo Computador de von Neumann serial convencional Una única instrucción es emitida cada ciclo de reloj Cada instrucción opera sobre un único elemento de data (escalar) Está limitado por el número de instrucciones que pueden ser emitidas en una unidad de tiempo dada La ejecución es frecuentemente medida en MIPS (million of instructions per second) o frecuencia del reloj MHz (Megahertz)

Modelo SIMD: Single Instruction, Multiple Data Stream Es una arquitectura de von Neumann con un mayor poder en las instrucciones Cada instrucción puede operar en más de un elemento de datos La ejecución es medida en MFLOPS (millions of floating point operations per second) Existencia de dos tipos: Vectorial SIMD Paralelo SIMD

Modelo SIMD: Single Instruction, Multiple Data Stream

Modelo MIMD: Multiple Instructions, Multiple Data El paralelismo es alcanzado conectando juntos múltiples procesadores Incluye todas las formas de configuraciones de multiprocesadores Cada procesador ejecuta su propio flujo de instrucciones independientemente de los otros procesadores sobre un único flujo de data

Modelo MIMD: Multiple Instructions, Multiple Data Ventajas Los procesadores pueden ejecutar múltiples flujos de trabajos simultáneamente Cada procesador puede ejecutar cualquier operación sin considerar lo que otros procesadores están haciendo Desventajas Es necesario un balanceo de carga y sincronización para coordinar los procesadores al final de las estructuras paralelas en las aplicaciones Puede ser difícil de programar

Modelo MIMD: Multiple Instructions, Multiple Data

Memoria de las Arquitecturas La manera en que los procesadores se comunican es dependiente de la arquitectura de la memoria, la cual, a su vez, afectaría como escribir un programa en paralelo Los tipos de memoria son: Memoria Compartida Memoria Distribuida

Memoria Compartida Múltiples procesadores operan independientemente pero comparten los mismos recursos de memoria Solo un procesador puede acceder a una posición de la memoria compartida a un tiempo La sincronización es obtenida controlando la escritura y lectura a la memoria compartida Ventajas Fácil uso La data compartida es rápida a través de las tareas (velocidad de acceso a memoria)

Memoria Compartida Desventajas La memoria está limitada por el ancho de banda. Un aumento de procesadores sin un aumento del ancho banda puede causar un cuello de botella El usuario es el responsable para especificar la sincronización Ejemplos: Cray Y-MP, Convex C-2, Cray C-90

SUNE 450 4 Procesadores SUN 3500 4 Procesadores

Memoria Distribuida Múltiples procesadores operan independientemente pero cada uno tiene su propia memoria La data es compartida a través de una red de comunicación usando pases de mensajes El usuario es el responsable de la sincronización usando pase de mensajes Ventajas La memoria es escalable al número de procesadores. Cada procesador puede rápidamente acceder a su propia memoria sin interferencia

Memoria Distribuida Desventajas El usuario es el responsable para enviar y recibir data a través de los procesadores Ejemplos: ncube Hypercube, Intel Hypercube, IBM SP1, SP2

Cluster 4 Procesadores

Memoria Procesador (arreglo) Memoria Distribuida MPP - Massively Parallel Processor Memoria Compartida SMP - Symmetric Multiprocessor Procesadores idénticos Acceso igual a la memoria Algunas veces llamado UMA Uniform Memory Access, o CC-UMA - Cache Coherent UMA Cache coherente significa que si un procesador actualiza una posición en la memoria compartida, todos los otros procesadores conocen acerca de la actualización

Memoria Procesador (arreglo) NUMA - Non-Uniform Memory Access Algunas veces llamado CC-NUMA - Cache Coherent NUMA A menudo hecho enlazando dos o más SMPs Un SMP puede directamente acceder la memoria de otro SMP No todos los procesadores tienen igual tiempo de acceso a toda la memoria El acceso de memoria a través del enlace es lento

Memoria Procesador (arreglo) Combinaciones Múltiples SMPs son conectados por una red Los Procesadores dentro de un SMP se comunican vía memoria Requieren pase de mensajes entre SMPs Un SMP no puede directamente acceder a la memoria de otro SMP Múltiples procesadores de memoria distribuida conectados a una gran memoria compartida La transferencia de memoria local a memoria compartida es transparente al usuario

COMUNICACIÓN DE LOS PROCESADORES Red de comunicación De una manera de coordinar las tareas de múltiples nodos trabajando en el mismo problema, alguna forma de comunicación inter-procesadores es requerida para: Transmitir la información y data entre los procesadores Sincronizar las actividades de los nodos Memoria distribuida

COMUNICACIÓN DE LOS PROCESADORES Conectividad entre los nodos Los nodos son conectados unos a otros por un switch nativo Los nodos son conectados a la red (y por tanto, uno a otro) vía la ethernet Tipos de comunicación ip - Internet Protocol (TCP/IP) se ejecuta sobre la ethernet o se ejecuta sobre el switch us-userspace se ejecuta sobre el switch

Paradigmas de la Programación en Paralelo Existen muchos métodos de programación en computadores paralelos. Dos de los más usados son pase de mensajes y paralelismo de datos. Pase de mensajes: el usuario hace llamadas a bibliotecas para explícitamente compartir información entre los procesadores. Paralelismo de datos: un particionamiento de la data determina el paralelismo. Memoria compartida: múltiples procesos comparten un espacio de memoria común.

Paradigmas de la Programación en Paralelo Operación remota a memoria: un conjunto de procesos en la cual un proceso puede acceder la memoria de otro proceso sin su participación Threads (hebras, hilos): un proceso teniendo múltiples (concurrentes) trayectorias de ejecución Modelo combinado: compuesto de dos o más de los presentados anteriormente.

Pase de mensajes El modelo de pases de mensajes se define como: Un conjunto de procesos usando solo memoria local Los procesos se comunican enviando y recibiendo mensajes La transferencia de data requiere operaciones cooperativas para ser ejecutada por cada proceso (una operación de envío debe tener una operación de recepción) La programación con pases de mensajes es hecha enlazando y haciendo llamadas a bibliotecas las cuales administran el intercambio de data entre los procesadores

Paralelismo de datos El modelo de paralelismo de datos se define como: Cada proceso trabaja sobre una parte diferente de la misma estructura de datos. Usa un enfoque Single Program Multiple Data (SPMD). La data es distribuida a través de los procesadores. Todo el pase de mensajes es transparente al programador La programación con un modelo de paralelismo de datos se satisface escribiendo un programa con directivas de paralelismo de datos y compilando el programa con un compilador de paralelismo de datos. El compilador convierte el programa en código estándar y llama una biblioteca de pase de mensajes para distribuir la data a todos los procesos

Implantación Pase de mensajes: Message Passing Interface (MPI) Una biblioteca portable y estándar de pase de mensajes Disponible para programas en Fortran y C Disponible para diferentes máquinas paralelas La comunicación entre tareas es por pase de mensajes Todo el paralelismo es explícito: el programador es el responsable del paralelismo del programa y la implantación de las directivas MPI El modelo de programación es SPMD (Single Program Multiple Data)

Implantación F90 / High Performance Fortran (HPF) Fortran 90 (F90) - (ISO / ANSI extensión estándar a Fortran 77) High Performance Fortran (HPF) - extensiones a F90 para soportar programación de paralelismo de datos Directivas de compilación permiten al programador la distribución y asignación de la data

Pasos para crear un Programa en Paralelo 1. Si existe un código serial, depure (debug) el código completamente 2. Use opciones de optimización 3. Identifique las partes del código que pueden ser ejecutadas concurrentemente: Requiere un buen conocimiento del código Explote cualquier paralelismo inherente que pueda existir Puede requerir reestructurar el programa y/o algoritmo Puede requerir un nuevo algoritmo. Use técnicas de Profiling, Optimización y de Ejecución

Pasos para crear un Programa en Paralelo 4. Particionar el programa: Paralelismo funcional Paralelismo de datos Una combinación de ambos 5. Desarrolle el código: El código puede estar influenciado/determinado por la arquitectura de la máquina Escoja un paradigma de programación Determine la comunicación 6. Compile, pruebe y Depure

Descomponer el Programa Existen tres métodos para descomponer un problema en tareas más pequeñas para ser ejecutadas en paralelo: Descomposición Funcional, Descomposición de Dominio, o una combinación de ambos Descomposición Funcional (Paralelismo Funcional) Descomponer el problema en diferentes tareas las cuales pueden ser distribuidas a múltiples procesadores para su ejecución de manera simultánea Es bueno cuando no existe una estructura estática o fija del número de cálculos a ser ejecutados

Descomposición de Dominio (Paralelismo de Datos) Descomponer los datos del problema y distribuir porciones de datos a múltiples procesadores para su ejecución de manera simultánea Es bueno de usar en problemas donde: La data es estática (factorizar y resolver grandes matrices o esquema de diferencia finitas) El dominio es fijo pero los cálculos dentro de diferentes regiones del dominio son dinámicos (modelos de fluidos)

Comunicación Entender las comunicaciones entre los procesadores es esencial. La comunicación de pase de mensajes es programada explícitamente. El programador debe entender y codificar la comunicación Los compiladores de paralelismo de datos hacen toda la comunicación transparente. El programador no necesita entender las comunicaciones subyacentes La buena ejecución del código va a depender de la escritura del algoritmo con la mejor comunicación posible

Comunicación Los tipos de comunicaciones para pase de mensajes y paralelismo de datos son exactamente los mismos. Las comunicaciones en computadores de memoria distribuida: Punto a Punto De uno a todos De todos a todos Cómputo colectivo

Comunicación Punto a Punto El método más básico de comunicación entre dos procesadores es el mensaje punto a punto. El procesador origen envía el mensaje al procesador destino. El procesador destino recibe el mensaje. El mensaje comúnmente incluye la información, la longitud del mensaje, la dirección del destinatario y posiblemente una bandera. Típicamente las bibliotecas de pases de mensajes subdividen los envíos y recepciones básicos en dos tipos: Con bloqueo el proceso espera hasta que el mensaje sea transmitido Sin bloqueo el proceso continúa aún si el mensaje no ha sido transmitido

Comunicación Uno a todos Un proceso puede tener información la cual los otros procesos requieren. Un broadcast es un mensaje enviado a muchos otros procesos. Una comunicación uno a todos ocurre cuando un procesador envía la misma información a muchos otros procesos.

Comunicación Todos a todos Una comunicación de todos a todos cada proceso envía su única información a todos los otros procesos.

Ley de Amdahl's Diseño y consideraciones de ejecución Ley de Amdahl's postula que la aceleración del programa es definida por la fracción del código (P) la cual es paralelizada: 1 speedup = -------- 1 - P

Diseño y consideraciones de ejecución Si nada del código puede ser paralelizado, P = 0 y la aceleración = 1 (aceleración nula). Si todo el código paralelizado, P = 1 y la aceleración es infinita (en teoría). Si 50% del código puede ser paralelizado, la aceleración máxima = 2, lo cual significa que el código se ejecutará el doble de rápido.

Diseño y consideraciones de ejecución Introduciendo el número de procesadores ejecutando la fracción paralela de trabajo, la relación puede ser modelada por: 1 speedup = ------------ P + S --- N donde P = fracción paralela, N = número de procesadores y S = fracción serial.

Diseño y consideraciones de ejecución Existen límites a la escalabilidad del paralelismo. Por ejemplo, con P =.50,.90 y.99 (50%, 90% and 99% del código es paralelizable): speedup -------------------------------- N P =.50 P =.90 P =.99 ----- ------- ------- ------- 10 1.82 5.26 9.17 100 1.98 9.17 50.25 1000 1.99 9.91 90.99 10000 1.99 9.91 99.02

Balanceo de carga El balanceo de carga se refiere a la distribución de las tareas, de una manera tal, que se asegura más eficientemente la ejecución en paralelo Si las tareas no están distribuidas de una manera balanceada, se podría estar esperando por la culminación de una tarea, mientras las otras ya han finalizado El performance puede ser incrementado si el trabajo puede ser uniformemente distribuido

Granularidad De una manera de coordinar entre diferentes procesadores trabajando en el mismo problema, alguna forma de comunicación entre ellos es requerido La razón entre cómputo y comunicación es conocida como la granularidad Paralelismo de grano fino (Fine-grain parallelism)

Paralelismo de grano fino (Fine-grain parallelism) Todas las tareas ejecutan un pequeño número de instrucciones entre ciclos de comunicación Es baja la razón cómputo a comunicación Facilita el balanceo de carga Implica alta comunicación y menos oportunidad para una mejora de performance Si la granularidad es fina, es posible que el tiempo requerido para la comunicación y sincronización entre las tareas sea mayor que el tiempo de cómputo

Paralelismo de grano grueso (Coarse-grain parallelism) Definido por grandes cómputos los cuales consisten de un gran número de instrucciones entre puntos de comunicación Es alta la razón cómputo a comunicación Implica más oportunidad para una mejora de performance Es más díficil para balancear la carga eficientemente La granularidad más eficiente es dependiente del algoritmo y el hardware en el cual éste se ejecutará

Dependencia de data Una dependencia de data existe cuando ocurre múltiple uso de una misma posición de memoria Una dependencia de data: frecuentemente inhibe la ejecución en paralelo Ejemplo 1: DO J = START, END A(J) = A(J-1) * 2 ENDDO Se debe haber calculado el valor de A(J-1) antes de calcular el valor de A(J)

Dependencia de data Si la tarea 2 tiene A(J) y la tarea 1 tiene A(J-1), el valor de A(J) es dependiente en: Memoria distribuida La tarea 2 obteniendo el valor de A(J-1) de la tarea 1 Memoria compartida La tarea 2 lee A(J-1) antes o después que la tarea 1 actualiza ésta

Cálculo de PI Paralelismo trivial Computacionalmente intensivo Comunicación mínima Operaciones de I/O mínimas El valor de PI puede ser calculado de muchas maneras, las cuales pueden ser facilmente paralelizables

Cálculo de PI Descripción del problema serial Consideremos el siguiente método de aproximar PI 1. Inscriba un círculo en un cuadrado 2. Genere puntos aleatorios en el cuadrado 3. Determine el número de puntos en el cuadrado que están también en el círculo 4. Sea r el número de puntos en el círculo dividido por el número de puntos en el cuadrado 5. PI ~ 4 r 6 Observar que mientras más puntos son generados, mejor será la aproximación

Cálculo de PI Pseudo-código serial para este procedimiento: npoints = 10000 circle_count = 0 do j = 1,npoints generate 2 random numbers between 0 and 1 xcoordinate = random1; ycoordinate = random2 if (xcoordinate, ycoordinate) inside circle then circle_count = circle_count + 1 end do PI = 4.0*circle_count/npoints

Cálculo de PI Solución Paralela: Pase de mensajes Estrategia de paralelización: descomponer el lazo en porciones los cuales pueden ser ejecutados por los procesadores Para aproximar PI: Cada procesador ejecuta su porción del lazo un número de veces Cada procesador puede hacer su trabajo sin requerir alguna información de los otros procesadores (no existe dependencia de data) Esta situación es conocida como paralelismo trivial Un proceso actúa como maestro y colecciona los resultados (modelo SPMD)

Cálculo de PI Solución Paralela: Pase de mensajes Pseudo-código: La letras Rojas incluye pase de mensajes npoints = 10000 circle_count = 0 p = number of processors num = npoints/p do j = 1, num generate 2 random numbers between 0 and 1 xcoordinate = random1 ; ycoordinate = random2 if (xcoordinate, ycoordinate) inside circle then circle_count = circle_count + 1 end do

if I am MASTER endif Cálculo de PI Solución Paralela: Pase de mensajes receive from WORKER their circle_counts compute PI (use MASTER and WORKER calculations) else if I am WORKER send to MASTER circle_count

GRACIAS!