Computacion Paralela
Computacion Paralela
Computacion Paralela
Introduccin
Definiciones
Conceptos y Terminologa
Ejemplo Paralelo
Introduccin
Esta presentacin cubre los aspectos bsicos de la computacin en paralelo. Se comienza con definiciones, conceptos y terminologas asociadas con la computacin en paralelo. Seguidamente los tpicos concernientes a tipos de arquitecturas y modelos de programacin son presentados. Estos tpicos son relacionados al diseo de programas paralelos y finalmente se examinan diferentes estrategias para paralelizar programas secuenciales.
Tradicionalmente, los programas han sido escritos para cmputo secuencial (serial): o Para ser ejecutados en un nico computador que posee un nico CPU. o Los problemas son resueltos por una serie de instrucciones ejecutada una despus de la otra por el CPU. Slo una instruccin puede ser ejecutada en un instante de tiempo. La computacin paralela es el uso simultneo de mltiples recursos computacionales para resolver un problema computacional. Los recursos computacionales pueden incluir: o Un nico computador con mltiples procesadores o Un nmero arbitrario de computadores conectados por una red o Una combinacin de ambos. El problema computacional posee caractersticas tales como: o Ser particionado en partes discretas de trabajo que pueden ser resultas simultneamente o Ejecutar mltiples instrucciones del programa en cualquier instante de tiempo o Ser resuelto en un menor tiempo con mltiples recursos computacionales que con un nico recurso computacional. Tradicionalmente, la computacin paralela ha sido motivada por simulaciones numricas de sistemas complejos, tales como: o Modelaje de clima o Reacciones qumicas y nucleares o Bioinformtica y genoma humano o Geologa y Ssmica o Petrleo o Biomedicina o Manufactura
En la actualidad, aplicaciones comerciales requieren el desarrollo de computadores ms rpidos. Estas aplicaciones requieren el procesamiento de grandes cantidades de datos de diferentes maneras. Ejemplos: o Base de datos paralelas, minera de datos o Exploracin de crudo o Servicios de negocios basados en la WEB o Diagnstico asistido por computador o Computacin grfica
Existen dos razones primarias para usar computacin paralela: o Ahorro en tiempo o Resolver problemas grandes Otras razones: o Tomar ventaja de recursos no locales usar recursos computacionales disponibles en una red. o Ahorro en costos el uso de mltiples recursos computacionales ms econmicos en vez de pagar tiempo en un supercomputador. o Limitacin en memoria un solo computador tiene recursos de memoria finita. Para problemas grandes, usar la memoria de mltiples computadores puede corregir este obstculo. El futuro sugiere que el paralelismo es el futuro del cmputo.
Un computador de Von Neumann usa el concepto de programa-almacenamiento. El CPU ejecuta un programa que especfica una secuencia de operaciones de lectura y escritura en la memoria.
Diseo Bsico: o Memoria es usada para almacenar el programa y las instrucciones sobre los datos o Instrucciones del Programa son datos codificados que le dice al computador que hacer o Los datos es simplemente informacin a ser usada por el programa o La unidad de procesamiento central (CPU) obtiene instrucciones y/o datos de la memoria, decodifica las instrucciones y secuencialmente ejecuta stas.
Existen diferentes maneras para clasificar los computadores paralelos. La clasificacin ms usada desde 1966 es llamada taxonoma de Flynn. La taxonoma de Flynn distingue la arquitectura computacional de los multiprocesadores de acuerdo a como stos pueden ser clasificados a travs de dimensiones independientes de Instrucciones y Datos. Cada una de estas dimensiones puede tener slo uno de dos posibles estados: Single o Multiple. La siguiente matriz define las cuatro posibles clasificaciones de acuerdo a Flynn. SISD Single Instruction, Single Data MISD SIMD Single Instruction, Multiple Data MIMD
Un computador serial (no-paralelo) Single instruction: Slo un flujo de instruccin est actuando en el CPU durante cualquier ciclo de reloj Single data: Slo un flujo de dato est siendo usado como entrada durante cualquier ciclo de reloj Ejecucin Determnistica Ejemplos: muchos PCs y workstations de un slo CPU
Un tipo de computador paralelo Single instruction: Todas las unidades de procesamiento ejecutan la misma instruccin en cualquier ciclo de reloj Multiple data: Cada unidad de procesamiento puede operar en datos diferentes Conveniente para problemas caracterizados por un alto grado de regularidad, tal como procesamiento de imgenes Dos variedades: Arreglo de Procesadores y Vectorial Ejemplos: o Arreglo de Procesadores: Connection Machine CM-2, Maspar MP-1, MP2 o Vectorial: IBM 9000, Cray C90, Fujitsu VP, NEC SX-2, Hitachi S820
Pocas clases de este tipo de computadores Algunos ejemplos: o Filtros de mltiple frecuencia operando en una nica seal o Mltiples algoritmos de criptografa actuando en un mensaje codificado.
Actualmente, el tipo ms comn de computador paralelo Multiple Instruction: cada procesador puede ejecutar un flujo de instruccin diferente Multiple Data: cada procesador puede estar trabajando con un flujo de datos diferentes Ejemplos: supercomputadores actuales, redes de computadoras "grids", multiprocesadores SMP - incluyendo algunos tipos de PCs.
Gruesa (Coarse): relativamente grandes cantidades de trabajo computacional son hechas entre eventos de comunicacin. Fina (Fine): relativamente pequeas cantidades de trabajo computacional son hechas entre eventos de comunicacin.
Carga Paralela (Parallel Overhead) La cantidad de tiempo requerido para coordinar las tareas paralelas. La carga puede incluir factores tales como:
Tiempo para arrancar las tareas Sincronizaciones Comunicacin de datos Compiladores paralelos, bibliotecas, SO, etc Tiempo de finalizacin de las tareas
Masivamente Paralelo (Massively Parallel) Hace referencia al hardware que compone un sistema paralelo dado el cual posee muchos procesadores (ms de 1000). Scalability Hace referencia a la capacidad de un sistema paralelo (hardware y/o software) el cual demuestra un aumento proporcionado en la eficiencia paralela con la inclusin de ms procesadores. Los factores que contribuyen a la escalabilidad:
Hardware particularmente ancho de banda y red de comunicacin El algoritmo de aplicacin La codificacin paralela Caractersticas de la aplicacin especfica
Computadores de memoria compartida tienen en comn la capacidad que todos los procesadores pueden acceder a la memoria como un espacio de direccionamiento global.
Mltiples procesadores operan independientemente pero comparten los mismos recursos de memoria. Cambios en una localizacin de memoria realizados por un procesador son visibles a todos los otros procesadores. La sincronizacin es obtenida controlando la escritura y lectura a la memoria. Las mquinas de memoria compartida pueden ser divididas en dos clases principales basadas en los tiempos de acceso a memoria: UMA y NUMA.
Representadas por multiprocesadores simtricos ( Symmetric Multiprocessor machines, SMP) Procesadores idnticos Tiempos de acceso igual a la memoria Algunas veces llamadas CC-UMA - Cache Coherent UMA. Coherencia de cache significa que si un procesador actualiza una posicin en la memoria compartida, todos los otros procesadores conocen acerca de la actualizacin. La coherencia de cache es a nivel de hardware.
Enlazando fsicamente dos o ms SMPs Un SMP puede directamente acceder a la memoria de otro SMP No todos los procesadores tienen igual tiempo de acceso a toda la memoria El acceso a la memoria es lento Si la coherencia de cache es mantenida, son llamados CC-NUMA - Cache Coherent NUMA
Ventajas:
El espacio de direccionamiento global provee una facilidad de programacin al usuario El intercambio de datos entre las tareas es rpido y uniforme debido a la proximidad de la memoria a los CPUs
Desventajas:
La desventaja primaria es la prdida de escalabilidad entre la memoria y CPUs. Agregar CPUs puede geomtricamente aumentar el trfico en la va memora compartida-CPU, y para sistemas con coherencia de cache, geomtricamente aumenta el trfico asociado con la administracin de cache/memoria. El programador es el responsable para construir la sincronizacin que asegura un correcto acceso a la memoria global. Es costoso disear y producir mquinas de memoria compartida con un gran nmero de procesadores.
Los sistemas de memoria distribuida requieren una red de comunicacin para conectar la memoria de los procesadores.
Mltiples procesadores operan independientemente pero cada uno tiene su propia memoria La data es compartida a travs de una red de comunicacin usando pases de mensajes El usuario es el responsable de la sincronizacin usando pase de mensajes Ventajas La memoria es escalable al nmero de procesadores. Un aumento de los procesadores, el tamao de la memoria y el ancho de banda aumenta Cada procesador puede rpidamente acceder a su propia memoria sin interferencia Desventajas Dificultad para asignar estructuras de datos existentes a esta organizacin de memoria El usuario es el responsable para enviar y recibir data a travs de los procesadores Ejemplos: nCUBE Hypercube Intel Hypercube TMC CM-5 IBM SP1, SP2 Intel Paragon
Memoria Distribuida MPP - Massively Parallel Processor Memoria Compartida SMP - Symmetric Multiprocessor Procesadores idnticos Acceso igual a la memoria Algunas veces llamado UMA - Uniform Memory Access o CC-UMA Coherencia de Cache UMA Coherencia de Cache significa que si un procesador actualiza una posicin en la memoria compartida, todos los otros procesadores conocen acerca de la actualizacin NUMA - Non-Uniform Memory Access Algunas veces llamado CC-NUMA - Coherencia de Cache NUMA A menudo hecho enlazando dos o ms 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 travs del enlace es lento Combinaciones Mltiples SMPs son conectados por una red Los Procesadores dentro de un SMP se comunican va memoria Requieren pase de mensajes entre SMPs Un SMP no puede directamente acceder a la memoria de otro SMP Mltiples procesadores de memoria distribuida conectados a una gran memoria compartida La transferencia de memoria local a memoria compartida es transparente al usuario Diseo del futuro: con diferentes procesadores y su memoria local alrededor de una gran memoria compartida en una simple tarjeta
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 operacin de envo debe tener una operacin de recepcin) La programacin con pases de mensajes es hecha enlazando y haciendo llamadas a bibliotecas las cuales administran el intercambio de data entre los procesadores.
En el modelo de programacin paralela mediante hebras, un nico proceso puede tener mltiples trayectorias de ejecucin concurrentes. La analoga ms simple que puede ser usada para describir las hebras es el concepto de un nico programa que incluye un nmero de subrutinas: o El programa a.out es despachado. o a.out ejecuta algn trabajo serial, y luego crea un nmero de tareas (hebras) que pueden ser despachadas y ejecutadas por el sistema operativo concurrentemente. o Cada hebra tiene datos locales pero comparte los recursos de a.out. o Una hebra puede ser descrita como una subrutina dentro del programa principal. Cualquier hebra puede ejecutar cualquier subrutina al mismo tiempo como las otras hebras. o Las hebras se comunican unas con las otras a travs de la memoria global (actualizando posiciones de direccionamiento). Las hebras estn asociadas con arquitectura de memoria compartida y sistemas operativos.
Implementaciones:
Implementaciones de hebras requieren: o Una biblioteca de subrutinas que son llamadas desde el cdigo fuente paralelo. o Un conjunto de directivas de compilacin dentro del cdigo fuente o Variables de ambiente. POSIX Threads y OpenMP. POSIX Threads o Slo para lenguaje C o Referenciado como Pthreads. OpenMP o Disponible para C/C++ y Fortran.
Descomposicin de Dominio:
La data asociada con un problema es descompuesta. Cada tarea paralela trabaja en una porcin de la data.
Descomposicin Funcional:
El problema es descompuesto de acuerdo al trabajo que debe ser hecho. Cada tarea ejecuta una porcin de trabajo.
Las comunicaciones en computadores de memoria distribuida: Punto a Punto De uno a todos De todos a todos Cmputo colectivo
Todas las tareas ejecutan un pequeo nmero de instrucciones entre ciclos de comunicacin Es baja la razn cmputo a comunicacin Facilita el balanceo de carga Implica alta comunicacin y menos oportunidad para una mejora de performance Si la granularidad es fina, es posible que el tiempo requerido para la comunicacin y sincronizacin entre las tareas sea mayor que el tiempo de cmputo
Definido por grandes cmputos los cuales consisten de un gran nmero de instrucciones entre puntos de comunicacin Es alta la razn cmputo a comunicacin Implica ms oportunidad para una mejora de performance Es ms difcil para balancear la carga eficientemente
Ley de Amdahl's postula que la aceleracin del programa es definida por la fraccin del cdigo (P) la cual es paralelizada:
speedup
1 -------1 - P
Si nada del cdigo puede ser paralelizado, f = 0 y la aceleracin = 1 (aceleracin nula). Si todo el cdigo es paralelizado, f = 1 y la aceleracin es infinita (en teora). Si 50% del cdigo puede ser paralelizado, la aceleracin mxima = 2, lo cual significa que el cdigo se ejecutar el doble de rpido. Introduciendo el nmero de procesadores ejecutando la fraccin paralela de trabajo, la relacin puede ser modelada por:
speedup
1 -----------P + S --N
Existen lmites a la escalabilidad del paralelismo. Por ejemplo, con P = .50, .90 y .99 (50%, 90% y 99% del cdigo es paralelizable):
speedup -------------------------------P = .50 P = .90 P = .99 ------------------1.82 5.26 9.17 1.98 9.17 50.25 1.99 9.91 90.99 1.99 9.91 99.02
Estrategia de paralelizacin: descomponer el lazo en porciones los cuales pueden ser ejecutados por los procesadores Cada procesador ejecuta su porcin del lazo un nmero de veces Cada procesador puede hacer su trabajo sin requerir alguna informacin de los otros procesadores (no existe dependencia de data). Esta situacin es conocida como paralelismo trivial. Un proceso acta como maestro y colecciona los resultados (modelo SPMD). Pseudo-cdigo: La letras Rojas incluye pase de mensajes
npoints = 10000 circle_count = 0 p = number of tasks num = npoints/p find out if I am MASTER or WORKER 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 receive from WORKERS their circle_counts compute PI (use MASTER and WORKER calculations) else if I am WORKER send to MASTER circle_count endif