INSTITUTO TECNOLÓ TECNOLÓGICO DE CULIACÁ CULIACÁN ALUMNO: GONZÁ GONZÁLEZ VEGA EDITH MATERIA: ARQUITECTURA DE CÓ CÓMPUTO TRABAJO: UNIDAD 4: PROCESAMIENTO PARALELO HORARIO: 14:00-15:00 PM
Culiacá Culiacán, Sinaloa. 14 Noviembre 2013 Índice UNIDAD 4 4 Procesamiento paralelo 4.1 Aspectos bá básicos de la computació computaci ón paralela 4.2 Tipos de computació computaci ón paralela 4.2.1 Taxonomí Taxonomí a de las arquitecturas paralelas 4.2.2 Arquitectura de los computadores secuenciales 4.2.2.1 Taxonomí Taxonom í a de Flynn 4.2.2.2 Organizació Organización del espacio de direcciones de memoria 4.3 Sistemas de memoria compartida: Multiprocesadores 4.3.1 Redes de interconexió interconexión diná dinámicas o indirectas 4.3.1.1 Redes de medio compartido 4.3.1.2 Redes conmutadas 4.3.2 Coherencia de cache 4.4 Sistemas de memoria distribuida. Multicomputadores: Multicomputadores: Cl úster 4.4.1 Redes de interconexió interconexión está estáticas 4.4.2 Clú Clúster 4.4.3 Programació Programación de clú clúster 4.4.4 Consideraciones sobre el rendimiento de los clú cl úster 4.5 Casos de estudio
Introducció Introducción En esta investigació investigaci ón se hablara sobre el desarrollo que lleva a cabo el procesamiento paralelo que trata de un proceso empleado para acelerar el tiempo de ejecuci ón de un programa diviendolo en mú m últiples trozos que se ejecutaran al mismo tiempo, cada uno en su propio procesador. En principio, un programa dividido en trozos de esta forma, podr í a ejecutarse a veces má m ás rá rápido, que su equivalente en un solo procesador, pero aú a ún así así queda queda claro que éste es su lí l í mite mite teó teórico (es decir el má m áximo que podremos alcanzar) pudiendo conseguir en el mejor de los casos un valor aproximado con un buen paralelismo.
El procesamiento en paralelo es una forma eficaz de procesamiento de informaci ón quefavorece la explotación de los sucesos concurrentes en el proceso de computaci ón. La concurrencia implica paralelismo, simultaneidad y pipeline. Hay tres tipos de sucesos: Sucesos Paralelos: ocurren en m últiples recursos durante el mismo intervalo de tiempo. Sucesos Simultáneos: ocurren en el mismo instante. Sucesos Pipeline: ocurren en lapsos superpuestos.
Se puede hablar de niveles de paralelismo, que caracterizamos de la siguiente manera: - Multiprogramación, Multiprocesamiento: Estas acciones se toman a nivel de Programa o Trabajo. - Tarea o Procedimientos: Acciones que se toman dentro de un mismo programa, ejecut ándose procesos independientes en forma simult ánea. - Interinstrucciones: Acciones a nivel de instrucci ón, o sea, dentro de mismo proceso o tarea se pueden ejecutar instrucciones independientes en forma simult ánea. - Intrainstrucciones: Acciones simult áneas que se pueden realizar para una misma instrucci ón, por ejemplo vectorización de operaciones escalares dentro de una instrucción compleja tipo DO, FOR, etc. El paralelismo de un mayor nivel se obtiene por medio de algoritmos, los de menor nivel con importante actividad del hardware. PROCESAMIENTO PARALELO Es un proceso empleado para acelerar el tiempo de ejecuci ón de un programa dividiéndolo en múltiples trozos que se ejecutaran al mismo tiempo, cada uno en su propios procesadores. El procesamiento en paralelo se basa principalmente en multiprocesadores fuertemente acoplados que cooperan para la realización de los procesos. Sus caracterí sticas son: •posee dos o más procesadores de uso general similares y de capacidades comparables. •todos los procesadores comparten el acceso a una memoriaglobal •también puede utilizarse algunas memorias locales (privadas como la cache). El procesamiento paralelo implica una serie de dificultades a nivel programaci ón de software la ventaja de él procesamiento en paralelo es ejecuta procesos en donde cada procesador se encargar de uno u otro y aceleran de esta forma el cálculo. 4.1 Aspectos básicos de la computación paralela La computación Paralela, es muy importante actualmente, al permitir mejorar la velocidad en la soluci ón de grandes problemas, de modo que se mejora el rendimiento de computo. La computación paralela es una forma de cómputo en la que muchas instrucciones se ejecutan simultáneamente, operando sobre el principio de que problemas grandes, a menudo se pueden dividir en unos más pequeños, que luego son resueltos simultáneamente (en paralelo). Hay varias formas diferentes de computación paralela: paralelismo a nivel de bit, paralelismo a nivel de instrucci ón, paralelismo de datos y paralelismo de tareas. El paralelismo se ha empleado durante muchos a ños, sobre todo en la computación de altas prestaciones, pero el inter és en ella ha crecido últimamente debido a las limitaciones f í sicas que impiden el aumento de la frecuencia. Como el consumo de energ í a —y por consiguiente la generación de calor— de las computadoras constituye una preocupaci ón en los últimos años, la computación en paralelo se ha convertido en el paradigma dominante en la arquitectura de computadores, principalmente en forma de procesadores multinúcleo. Las computadoras paralelas pueden clasificarse seg ún el nivel de paralelismo que admite su hardware:
equipos con procesadores multinúcleo y multi-procesador que tienen m últiples elementos deprocesamiento dentro de una sola máquina y los clústeres, MPPS y grids que utilizan varios equipos para trabajar en la misma tarea. Muchas veces, para acelerar la tareas espec í ficas, se utilizan arquitecturas especializadas de computación en paralelo junto a procesadores tradicionales. Los programas informáticos paralelos son más dif í ciles de escribir que los secuenciales,5porque la concurrencia introduce nuevos tipos de errores de software, siendo las condiciones de carrera los m ás comunes. La comunicación y sincronización entre diferentes subtareas son algunos de los mayores obst áculos para obtener un buen rendimiento del programa paralelo. La máxima aceleración posible de un programa como resultado de la paralelizaci ón se conoce como la ley de Amdahl. El paralelismo puede obtenerse de distintas maneras: Multicomputadoras: Computadoras independientes, muy a menudo una de ellas act úa como supervisor, que realizan una tarea común en una sola ubicación (una configuración muy común, aunque ciertamente limitada, es la minicomputadora como preprocesador de un computador mainframe) Multiprocesadores: Un conjunto de unidades de c ómputo, cada una de las cuales tiene sus propios conjuntos de instrucciones y datos, compartiendo una misma memoria. Los computadores multiprocesadores consisten en un número n mayor o igual a 2 de procesadores que operan simult áneamente sobre una misma memoria, y están interconectados mediante canales que transmiten comandos de control y datos. Est án controlados por un único Sistema Operativo. Redes de computadoras: Computadoras independientes conectadas mediante un canal de manera tal que los recursos propios disponibles en un punto de la red pueden estardisponibles para todos los miembros de la red. Procesador Pipeline: Un solo computador el cual puede realizar simult áneamente operaciones de cálculos en determinadas secciones, con diferentes estadios de completitud. Los procesadores pipeline se basan en el principio de dividir los c álculos entre una cantidad de unidades funcionales que operan simult áneamente existiendo superposición. Procesador Array: Un grupo de unidades de cómputo cada una de las cuales realiza simultáneamente la misma operación sobre diferentes conjuntos de datos. Los procesadores array operan sobre vectores. Las instrucciones del computador vectorial son ejecutadas en serie (como en los computadores cl ásicos) pero trabajan en forma paralela sobre vectores de datos. Algunos Aspectos a considerar son: -Diseño de computadores paralelos. Escalabilidad y comunicaciones -Diseño de algoritmos eficientes. No hay ganancia si los algoritmos no se dise ñan adecuadamenteMétodos para evaluar los algoritmos paralelos. ¿C ómo de rápido se puede resolver un problema usando una maquina paralela? ¿Con que eficiencia se usan esos procesadores? -Lenguajes para computadores paralelos, flexibles para permitir una implementaci ón eficiente y que sean f áciles de programar. 4.2 Tipos de computación paralela La computación paralela o procesamiento en paralelo consiste en acelerar la ejecuci ón de un programa mediante su descomposición en fragmentos que pueden ejecutarse de forma simultánea, cada uno en su propia unidad de proceso En este sentido se habla de mayor o menor grado de paralismo en la medida en que un algoritmo sea m ás o menos divisible en partes independientes con igual coste computacional. Entre las interacciones hayque considerar dos siguientes:-la transferencia de datos. -la sincronización de los cálculos de los diferentes procesadores Tipos de computadores según la taxonomí a de Flynn: • SISD: Computador secuencial. Un procesador y una memoria. Computador secuencial. • SIMD: Máquina con varios procesadores pero una única Unidad de Control. Computador vectorial.
• MIMD: Máquina con varios procesadores “completos”. Computador paralelo. 4.2.1 Taxonomí a de las arquitecturas paralelas Las diferentes posibilidades existentes para desarrollar sistemas paralelos hacen que una clasificaci ón definitiva sea complicada, y seguramente est éril. En primer lugar las caracterí sticas básicas del modelo secuencial, con el fin de delimitar los aspectos b ásicos que son comunes o diferentes de los sistemas paralelos. Una clasificación clásica propuesta por flynn que se basa en el flujo de instrucciones y en el flujo de datos, es decir el mecanismo de control utilizado. 4.2.2 Arquitectura de los computadores secunciales Los computadores secuenciales, tambi én denominados computadores serie, se basan en la arquitectura de j. von neumann. En este modelo se considera una única secuencia de instrucciones que tratan una única secuencia de datos. Por ello se conocen como computadores La programación paralela permite: – Resolver problemas que no caben en una CPU – Resolver problemas que no se resuelven en un tiempo razonable • Se pueden ejecutar – Problemas mayores – Más rápidamente (aceleración) – Más problemas 4.2.2.1 Taxonomí a de Flynn Clasificación clásica de arquitectura de computadores que hace alusi ón a sistemas con uno o varios procesadores. Flynn la publicó por primeravez en 1966 y por segunda vez en 1970.Esta taxonom í a se basa en el flujo que siguen los datos dentro de la m áquina y de las instrucciones sobre esos datos. Se define como flujo de instrucciones al conjunto de instrucciones secuenciales que son ejecutadas por un único procesador y como flujo de datos al flujo secuencial de datos requeridos por el flujo de instrucciones. Con estas consideraciones, Flynn clasifica los sistemas en cuatro categor í as: • SISD (Single Instruction stream, Single Data stream) Los sistemas de este tipo se caracterizan por tener un único flujo de instrucciones sobre un único flujo de datos, es decir, se ejecuta una instrucción detrás de otra. Este es el concepto de arquitectura serie de Von Neumann donde, en cualquier momento, sólo se ejecuta una única instrucción. • SIMD (Single Instruction stream, Multiple Data stream) Estos sistemas tienen un único flujo de instrucciones que operan sobre múltiples flujos de datos. Ejemplos de estos sistemas los tenemos en las m áquinas vectoriales con hardware escalar y vectorial.El procesamiento es sí ncrono, la ejecución de las instrucciones sigue siendo secuencial como en el caso anterior, todos los elementos realizan una misma instrucci ón pero sobre una gran cantidad de datos. Por este motivo existir á concurrencia de operación, es decir, esta clasificación es el origen de la m áquina paralela. El funcionamiento de este tipo de sistemas es el siguiente. La Unidad de Control manda una misma instrucci ón a todas las unidades de proceso (ALUs). Las unidades de proceso operan sobre datos diferentes pero con la misma instrucción recibida. Existen dos alternativas distintas que aparecen despu és de realizarse esta clasificación:• Arquitectura Vectorial con segmentación:Una CPU única particionada en unidades funcionales independientes trabajando sobre flujos de datos concretos • Arquitectura Matricial (matriz de procesadores): Varias ALUs id énticas a las que el procesador de instrucciones asigna una única instrucción pero trabajando sobre diferentes partes del programa. • SIMD CON CPU PAR TICIONADA:En este tipo de sistemas, la CPU se diseña como un conjunto de unidades funcionales independientes que ejecutan simult áneamente varias operaciones aritm ético/lógicas. La CPU contiene un único procesador con instrucciones que procesa un único flujo de estas liberando cada
instante una. Debido a que las unidades funcionales operan independientemente, es posible liberar nuevas instrucciones antes de que finalice la ejecuci ón de las instrucciones previas. • SIMD CON MULTIPLES ALUS: Estos sistemas trabajan en modo lock step, ejecutando o ignorando una misma instrucción para todas las ALUs. Existe un único procesador que maneja el flujo de instrucciones del programa y que transfiere todas las instrucciones a las diferentes unidades aritm ético/lógicas. • MIMD (Multiple Instruction stream, Multiple Data stream): Sistemas con un flujo de m últiples instrucciones que operan sobre múltiples datos. Estos sistemas empezaron a utilizarse a principios de los 80. Son sistemas con memoria compartida que permiten ejecutar varios procesos simult áneamente (sistema multiprocesador). Cuando las unidades de proceso reciben datos de una memoria no compartida estos sistemas reciben el nombre de MULTIPLE SISD (MSISD). En arquitecturas con varias unidades de control (MISD Y MIMD), existe otro nivel superior con una unidad de controlque se encarga de controlar todas las unidades de control del sistema.
4.2.2.2 Organización del espacio de direcciones de memoria El intercambio de informaci ón entre procesadores depende del sistema de almacenamiento que se disponga. Sistemas de memoria compartida o multiprocesadores Se caracterizan por compartir f í sicamente la memoria, es decir todos acceden al mismo espacio de direcciones. En esta arquitectura a la memoria es igualmente accesible por todos los procesadores a trav és de la red de interconexión. Sistemas de memoria distribuida o multicomputadores En estos sistemas cada procesador dispone de su propia memoria. Denominada local o privada, independiente del resto y accesible solo por su procesador. Existen dos espacios de direcci ón disponibles para el microcontrolador Z8PLUS: • El archivo de registros de la RAM contiene direcciones para todos los registros de control y los de prop ósito general. • La memoria de programa contiene direcciones para todas las localidades de memoria donde se hallan guardado códigos o datos ejecutables.
4.3 Sistemas de memoria compartida: multiprocesadores Cada procesador posee su propia unidad de control ejecuta su propio c ódigo sobre sus propios datos, puede ejecutar cualquier aplicaci ón (no solo programas vectoriales). Clasificación de los multiprocesadores por la ubicación de la memoria • Multiprocesadores de Multiprocesadores de memoria compartida memoria compartida ♣ Todos los procesadores acceden a una memoria común ♣ La comunicación entre procesadores se hace a través de la memoria ♣ Se necesitan primitivas de sincronismo para asegurar el intercambio de datos Multiprocesadores de memoria compartida• La mayor í a de los multiprocesadores comerciales son del tipo UMA ( La mayorí a de los multiprocesadores comercialesson del tipo UMA(Uniform Uniform Memory Access): todos los procesadores tienen igual tiempo de acceso a la memoria compartida. • En la arquitectura UMA los procesadores se conectan a la memoria a trav és de un bus, una red multietapa o un conmutador de barras cruzadas (crossbar)y p p p y disponen de su propia memoria caché. • Los procesadores tipo NUMA (Non Uniform Memory Access) presentan tiempos de acceso a la memoria compartida que dependen de la ubicación del elemento de proceso y la memoria. Multiprocesadores de memoria compartida: conexi ón por bus compartido • Es la organización más común en los computadores personales y servidores Esla organizaci ón más común
en los computadores personales y servidores • El bus consta de lí neas de dirección, datos y control para implementar: ♣ El protocolo de transferencias de datos con la memoria ♣El arbitraje del acceso al bus cuando más de un procesador compite por utilizarlo. • Los procesadores utilizan cach és locales para: ♣Reducir el tiempo medio de acceso a memoria, como en un monoprocesador ♣ Disminuir la utilización del bus compartido. Protocolos de transferencia sí ncronos • Existe un reloj que gobierna todas las actividades del bus, las cuales tienen lugar en un n úmero entero de ciclos de reloj. • La transferencia coincide con uno de los flancos del reloj Multiprocesadores de memoria compartida: conexi ón por conmutadores crossbar •Cada procesador (Cada procesador(Pi) y cada m ódulo de memoria ( ) y cada m ódulo de memoria (Mi) tienen su propio bus ) tienen su propio bus • Existe un conmutador (S)en los puntos de intersección que permite conectar un bus de memoria con un bus de procesador • Para evitar conflictos cuando m ás de un procesador pretende acceder al mismo módulo de Para evitar conflictos cuando más de un procesador pretende acceder al mismo m ódulo de memoria se establece un orden de prioridad • Se trata de una red sin bloqueo con una conectividad completa pero de alta complejidad. -Redes basadas en buses: Cuando un procesador necesita acceso global a memoria, genera una solicitud al bus. Esta red es atractiva, dada su simplicidad y capacidad para proporcionar acceso uniforme a la memoria compartida. Pero el bus sólo puede llevar una determinada cantidad de datos entre la memoria y los procesadores. El rendimiento se satura para un número pequeño de procesadores. Si los procesadores disponen de memorias locales caché se puede solventar el problema. • Multiprocesadores de memoria distribuida o multicomputadores ♣Cada procesador tiene su propia memoria ♣ La comunicación se realiza p pj or intercambio explicito de mensajes a trav és de una red
MEMORIA COMPARTIDA CENTRALIZADA La memoria compartida por todos los procesadores y accesible desde cualquiera. Descompuesta en varios módulos para permitir el acceso concurrente de varios procesadores Cada procesador debe tener un espacio de direccionamiento suficientemente amplio como para poder direccionarla completamente. Multiprocesador con un sistema de memoria compartida en el cual el tiempo de acceso var í a dependiendo de la ubicación de la palabra de memoria. La memoria compartida se distribuye f í sicamente por todos los procesadores (memorias locales). El conjunto de memorias locales forma elespacio de direccionamiento global accesible por todos los procesadores. En los multiprocesadores cada procesador suele tener asociada una cache local y ello introduce el problema de la coherencia en chache: cualquier modificaci ón local de una determinada posición de la memoria compartida se realizara primeramente sobre una chache local y ello puede dar lugar a una visi ón global incoherente de la memoria.los elementos que integran un multiprocesador puede estar conectados entre s í a través de una estructura Jerárquica de buses.los buses digitales son los sistemas de interconexi ón fundamentales adoptados en sistemas comerciales desde estaciones de trabajo a minicomputadores, mainframes y multiprocesadores.
4.3.1 Redes de interconexión dinámicas o indirectas
El objetivo de la interconexión de red es dar un servicio de comunicación de datos que involucre diversas redes con diferentes tecnolog í as de forma transparente para el usuario. Este concepto hace que las cuestiones técnicas particulares de cada red puedan ser ignoradas al dise ñar las aplicaciones que utilizaran los usuarios de los servicios. Los dispositivos de interconexi ón de redes sirven para superar las limitaciones f í sicas de los elementos básicos de una red extendiendo las topologí as de esta. El objetivo de la interconexión de red es dar un servicio de comunicación de datos que involucre diversas redes con diferentes tecnolog í as de forma transparente para el usuario. Este concepto hace que las cuestiones técnicas particulares de cada red puedan ser ignoradas al dise ñar las aplicaciones que utilizaran los usuarios de los servicios. Los dispositivos de interconexi ón de redes sirven para superar las limitacionesf í sicas de los elementos b ásicos de una red extendiendo las topologí as de esta. Red Dinamica Una red dinámica es una red cuya topologí a puede variar durante el curso de la ejecuci ón de un programa paralelo o entre dos ejecuciones de programas. La red est á constituida por elementos materiales especí ficos, llamados conmutadores o switches. Las redes dinámicas son redes que pueden cambiar la topologí a de comunicación durante la ejecución de los programas o entre dos ejecuciones de programas. las redes din ámicas se han utilizado esencialmente en los multiprocesadores de memoria compartida: la red din ámica soporta por consiguiente , la carga de unir los procesadores a los bancos de la memoria central.
Red Indirecta Las redes indirectas también pueden modelarse con un grafo donde n es un conjunto de switches y c es el conjunto de enlaces unidireccionales o bidireccionales entre switches. Para el an álisis de la mayorí a de propiedades, no es necesario incluir expl í citamente los nodos de procesamiento en el grafo. Aunque las redes indirectas pueden modelarse de forma similar alas directas, existen algunas diferencias entre ellas. Redes de interconexión multietapa Es un tipo de red intermedia en términos de escalabilidad en costo y rendimiento. Conecta p elementos con otros p elementos. 4.3.1.1 Redes de medio compartido Dependiendo de su arquitectura y de los procedimientos empleados para transferir la informaci ón las redes de comunicación se clasifican en: -Redes conmutadas -Redes de difusión 4.3.1.2 Redes conmutadoras Consiste en un conjunto de nodos interconectados entre si, a trav és de medios de transmisión, formando la mayorí a de las veces una topologí amallada, donde la información se transfiere encaminándola del nodo de origen al nodo destino mediante conmutaci ón entre nodos intermedios. Una transmisión de este tipo tiene 3 fases: -Establecimiento de la conexión -Transferencia de la informaci ón -Liberación de la conexión La conmutación en un nodo a la conexión f í sica o lógica de un camino de entrada al nodo con un camino de salida del nodo con el fin de transferir la informaci ón que llegue por el primer camino al segundo.la redes conmutadas son las redes de área extensa
Las redes conmutadas se dividen en: -Conmutación de paquetes -Conmutación de circuitos -Redes de barras cruzadas: Utiliza una red de conmutadores. Conecta p procesadores con b módulos de memoria. El número total de conmutadores requeridos es Θ(pb). Conforme crece p, la complejidad de la red aumenta seg ún Ω(p2). Por tanto no son muy escalables en t érminos de coste. 4.3.2 Coherencia de caché Hace referencia a la integridad de los datos almacenados en las caches locales de los recursos compartidos. La coherencia de la cache es un caso especial de la coherencia de memoria. Coherencia de cache es cuando existen varias copias del mismo dato simult áneamente en caches diferentes por lo tanto si los procesadores actualizan sus copias pueden producirse inconsistencia de memoria. Cuando un procesador cambia un dato en su propia cache local el cambio debe hacerse en todas las caches que tiene copia. Alternativamente las otras copias se deben invalidar. El protocolo de coherencia es situar las variables locales utilizadas recientemente en la cache apropiada y mantelos allí para las distintas escrituras y lecturas, al mismo tiempo que se mantiene Laconsistencia de las variables compartidas que pudieron encontrarse en varias caches al mismo tiempo. Generalmente se han divido en aproximaciones de software y hardware: -Software: intentan evitar la necesidad de circuiter í a y lógica de hardware adicional dejando que el compilador y el sistema operativo se encargue del problema -Hardware: estos se denominan protocolos de coherencia de chache y permiten reconocer din ámicamente en el momento de la ejecuci ón las situaciones de inconsistencia por lo tanto existe un uso m ás efectivo de las caches y reduce la complejidad en el desarrollo del software. Los sistemas UMA no escalan bien – Los sistemas basados en bus se pueden saturar. – Una red de barras cruzadas grande puede ser muy cara. • Problema de la coherencia de caché – Puede haber copia de una variable en varias cach és – Cuando un procesador escribe puede no ser visible al resto – Es necesario asegurar la visibilidad o la coherenciade cach é Solución de la coherencia caché • Existen dos formas de abordar el problema de la coherencia cach é. ♣ Software, lo que implica la realización de compiladores que eviten la incoherencia entre cachés de datos compartidos. ♣ Hardware qg , ue mantengan de forma continua la coherencia en el sistema, siendo adem ás transparente al programador. • Podemos distinguir también dos tipos de sistemas multiprocesadores ♣ Sistemas basados en un único bus: se utilizan protocolos de sondeo o snoopy que analizan el bus para detectar incoherencia. Cada nodo procesador tendr á los bits necesarios para indicar el estado de cada l í nea de su caché y así realizar las transacciones de coherencia necesarias seg ún lo que ocurra en el bus en cadamomento. • Tanto si son de sondeo como si no, existen dos polí ticas para mantener la coherencia: ♣ Invalidación en escritura (write invalidate): siempre que un procesador modifica un dato de un bloque en la caché, invalida todas las demás copias de ese bloque guardadas en las otras cach és. ♣ Actualización en escritura (write update): actualiza las copias existentes en las otras cach és en vez de
invalidarlas. 4.4 Sistemas de memoria distribuida Los sistemas de memoria distribuida o multicomputadores pueden ser de dos tipos b ásicos. El primer de ellos consta de un único computador con múltiples CPUs comunicadas por un bus de datos mientras que en el segundo se utilizan múltiples computadores, cada uno con su propio procesador, enlazados por una red de interconexión más o menos rápida. Sobre los sistemas de multicomputadores de memoria distribuida, se simula memorias compartidas. Se usan los mecanismos de comunicaci ón y sincronización de sistemas multiprocesadores. Un clúster es un tipo de arquitectura paralela distribuida que consiste de un conjunto de computadores independientes interconectados operando de forma conjunta como único recurso computacional sin embargo, cada computador puede utilizarse de forma independiente o separada En esta arquitectura, el computador paralelo es esencialmente una colecci ón de procesadores secuenciales, cada uno con su propia memoria local, que pueden trabajar conjuntamente. • Cada nodo tiene rápido acceso a su propia memoria y acceso a la memoria de otros nodos mediante una red de comunicaciones, habitualmente una red de comunicaciones de alta velocidad. • Los datos son intercambiados entre los nodos como mensajes a trav és de lared. Redes de ordenadores • Una red de ordenadores, especialmente si disponen de una interconexi ón de alta velocidad, puede ser vista como un multicomputador de memoria distribuida y como tal ser utilizada para resolver problemas mediante computación paralela.
4.4.1 Redes de interconexión estática Las redes estáticas emplean enlaces directos fijos entre los nodos. Estos enlaces, una vez fabricado el sistema son dif í ciles de cambiar, por lo que la escalabilidad de estas topolog í as es baja. Las redes estáticas pueden utilizarse con eficiencia en los sistemas en que pueden predecirse el tipo de tr áfico de comunicaciones entre sus procesadores Clases de redes de interconexión: -Formación lineal: Se trata de una red unidimensional en que los nodos se conectan cada uno con el siguiente medianteN1 enlaces formando una lí nea. -Mallas y toros: Esta red de interconexión es muy utilizada en la práctica. Las redes en toro son mallas en que sus filas y columnas tienen conexiones en anillo, esto contribuye a disminuir su di ámetro. Esta pequeña modificación permite convertir a las mallas en estructuras sim étricas y además reduce su diámetro a la mitad. 4.4.2 Clúster Un clúster es un grupo de ordenadores débilmente acoplados que trabajan en estrecha colaboración, de modo que en algunos aspectos pueden considerarse como un solo equipo. Los cl ústeres se componen de varias máquinas independientes conectadas por una red. Mientras que las máquinas de un clúster no tienen que ser simétricas, de no serlo, el balance de carga es m ás dif íc il de lograr. El tipo más común de clúster es el cluster Beowulf, que es un clúster implementado con múltiples ordenadores comerciales id énticosconectados a una red de área local TCP/IPEthernet. La tecnologí a Beowulf fue desarrollada originalmente por Thomas Sterling y Donald Becker. La gran mayorí a de los superordenadores TOP500 son clústeres. Se aplica a los conjuntos o conglomerados de computadoras construidos mediante la utilizaci ón de hardwares comunes y que se compartan como si fuesen una única computadora. Los clúster son usualmente empleados para mejorar el rendimiento y la disponibilidad por encima de la que es provista por un solo computador t í picamente siendo más económico que computadores individuales de rapidez y disponibilidad comparables.De un cl úster se espera que presente combinaciones de los siguientes
servicios: 1.Alto rendimiento 2.Alta disponibilidad 3.Balance de carga 4.Escalabilidad La construcción de los ordenadores del clúster es más f ácil y económica debido a su flexibilidad: pueden tener toda la misma configuración de hardware y sistema operativo diferente rendimiento pero con arquitectura y sistemas operativos similares o tener diferente hardware y sistema operativo lo que hace m ás f ácil y económica su construcción. Para que un clúster funcione como tal no basta solo con conectar entre si los ordenadores, si no que es necesario proveer un sistema de manejo del cl úster, el cual se encargue de interactuar con el usuario y los procesos que ocurren en él para optimizar el funcionamiento. La tecnologí a clúster permite a las organizaciones incrementar su capacidad de procesamiento usando tecnologí a estándar tanto en componentes de hardware como de software que pueden adquirirse a un costo relativamente bajo. 4.4.3 Programación de clúster Estos clúster están diseñados y optimizados para correrprogramas paralelos. En este caso, los programas tienen que ser hechos especí ficamente para funcionar en forma paralela. T í picamente estos programas son modelos que requieren realizar gran cantidad de c álculos numéricos. La ventaja de programarlos de esta manera y correrlos en un clúster es que se reduce drásticamente los tiempos de proceso. En el caso de modelos meteorológicos usados para predecir el tiempo es obvia la necesidad de correrlos en tiempo m í nimo. Cuando se programa un modelo en una plataforma multiprocesadores es necesario usar esquemas de programación paralela. Las bibliotecas son las que permiten paralelizacion de tareas. En el caso de los cl úster SCALI, portar programas hechos con bibliotecas MPI es directo gracias al uso de biblioteca SCAMPI 4.4.4 Consideraciones sobre rendimiento de los cl úster Para diseñar, implementar, probar y mantener un cl úster se requiere un entendimiento b ásico pero claro de hardware de computadoras, de redes de computadoras y de sistemas operativos y la habilidad para investigar algunos tópicos especializados, como dispositivos de interconexión de Alta velocidad, tal vez reintroducirse a lenguajes de programaci ón como FORTRAN y librerí as para el desarrollo de aplicaciones como MPI. Una vez escogido un sistema operativo, d í gase Linux, se requiere algo de experiencia en la administración de sistemas Linux y en la forma de realizar conexiones de red. De manera lógica, cada nodo delx clúster tiene una parte de hardware y otra de software. El hardware est á compuesto por procesadores, memoria, interfaz de red y discos duros entre otros. En cuanto al software, el nivel bajo corresponde al sistema operativo, el medio consiste en las librer í asde paralelizacion y el alto est á representado por la aplicaci ón que se desea ejecutar en el clúster 4.5 Casos de estudio 1. NVIDIA PYSICS LAYER: GPU PhysX CPU PhysX Graphics Layer: GPU –Direct X Windows 2. INTEL PYSICS LAYER: No GPU PhysX CPU Havok Graphics Layer: GPU –Direct X Windows
3. AMD PYSICS LAYER: No GPU PhysX CPU Havok Graphics Layer: GPU –Direct X Windows
Conclusión En conclusión final estos procesamientos se utilizan para principalmente para procesar datos de forma que un computador pueda ejecutar varias tareas o procesos simult áneamente y hacer que el procesador tenga menos tiempo de ejecución. El procesamiento paralelo permite realizar varias tareas a la vez as í como el ahorro de tiempo en ejecución, es importante destacar que no todas las instrucciones pueden ejecutarse a la vez pues al ser dependientes de otras, tienen que esperar a que su predecesora se realice y as í poder ejecutarse. También que hay un lí mite de operaciones que pueden realizarse de manera simult ánea, pero con el avance tecnológico; el aumento en las capacidades de los CPU, memoria y demás, este lí mite crece.
Bibliograf í a 1. http://www.mundodescargas.com/apuntes-trabajos/informatica/decargar_arquitecturas-avanzadas.pdf 2. http://es.wikipedia.org/wiki/Computaci%C3%B3n_paralela#Taxonom.C3.ADa_de_Flynn
3. http://informatica.uv.es/iiguia/ALP/materiales/1_1_a_ComputacionParalela.pdf 4. http://www.fdi.ucm.es/profesor/jjruz/EC-IS/Temas/Tema%2010.pdf
5. http://share.pdfonline.com/dbda13e01a0f4dfe82082011a5c8098e/Desarrollo%20de%20la%20Unidad %204.htm 6. http://sistemas-distribuidos.wikispaces.com/1.1+Arquitecturas+paralelas.