domingo, 22 de mayo de 2011

Tipos de Arquitecturas Paralelas

Que tal amigos siguiendo el tema sobre High Performance Computing que se comento en el anterior post, hoy vengo a hablarles un poco sobre algunos tipos de arquitecturas paralelas. Siendo un poco sincero con ustedes, de arquitectura de computadoras solo conosco lo básico, pero esto que compartire con ustedes fue lo que aprendi tomando un curso en la universidad y viendo uno que otro curso virtual (Videos, Presentaciones etc.)

Pienso, que seria bueno simplemente explicar o definir que trata cada uno de estos tipos de arquitectura y hablar un poco sobre estos paradigmas de programacion paralela, asi quedaremos con la idea general de lo que tratan exactamente cada uno de ellos.

Como primero vamos con:

MEMORIA COMPARTIDA: Costa de simplemente un memoria unica y global, la cual es accesible desde todos los procesadores, si quieren pueden leer un poco mas acerca de (UMA Uniform Memory Access).
En este esquema cada procesador tiene el mismo tiempo para acceder a una dirección de memoria.

MEMORIA DISTRIBUIDA: Este esquema consta de tantas memorias como procesadores se tenga, en la cual cada procesador accede exactamente a su memoria local.
Para que P1 acceda a M2 lo debe acceder a través de P2 por medio de la comunicación de mensajes entre procesadores.

MEMORIA COMPARTIDA-DISTRIBUIDA: En este caso, la memoria esta fisicamente distribuida pero logicamente compartida.

En este esquema hay Hardware especial para que los procesadores vean a todas las memorias como una sola memoria global, sin embargo la velocidad para acceder a la memoria de otro procesador sera mucho mayor respecto a la memoria local correspondiente.

Bueno ya que tenemos una leve idea de como visualizar estos sistemas y que tanto tiempo se lleva un procesador para acceder a la memoria, hablemos un poco sobre estos paradigmas.

Paradigmas de Programación Paralela

Paradigma Memoria Compartida
  
En este esquema la coordinación y cooperación entre los procesos se realiza a travéz de la lectura y escritura de variables compartidas e a través de variables de sincronización.

  • Ejemplo: En un problema de sumatoria cada proceso debe cooperar compartiendo los datos. Suponga una suma parcial suma1 y otra suma parcial suma2, para obtener la suma global hay un modo de compartir estos dos datos a través de la memoria global, de tal manera que un procesador pueda al final acceder a los dos datos y luego sumarlos. Cuando nos referimos a variables de sincronización, se refiere a la sincronizació en acceso, ya que un procesador no podría sumar las sumas parciales hasta que todos los procesos no hayan culminado. 
 
Paradigma Memoria Distribuida

En este esquema la coordinación y cooperación entre procesos se realiza a través del envio y recepción de mensajes.
P1 conoce la información de M2, a través del envío y recepción de mensajesentre P1 y P2.

Bueno espero que tengan ahora una leve idea sobre estos paradigmas de programación paralela, pueden fortalecer este conocimiento, leyendo acerca de UMA (Uniform Memory Acces) y NUMA (Non Uniform Memory Acces). Hasta un nuevo post, creo que estare hablando sobre Programación de Memoria Compartida con OpenMP. Nos vemos!

0 comentarios:

Publicar un comentario