Sistemas Operativos II MC. Daniel Fajardo Delgado INSTITUTO TECNOLÓGICO DE CD. GUZMÁN 22 de Mayo de 2004.

Slides:



Advertisements
Presentaciones similares
VI Unidad. Sistema Operativo
Advertisements

LENGUAJES PARALELOS Chang y Smith (1990) clasificación:
Tipos de Organización ... La organización de máquinas multiprocesadores más típicas son: Mesh Networks. Binary Tree Networks. Hypertree Networks. Pyramid.
Programando con OpenMP*
INTRODUCCIÓN ESTADO DE LA TÉCNICA PROCESAMIENTO DISTRIBUIDO CON MPI PROCESAMIETNO DISTRIBUIDO DE IMÁGENES GENÉRICO CON VTK PROCESAMIENTO DISTRIBUIDO DE.
Instalación, Manipulación y uso.
Funciones. Programación, Algoritmos y Estructuras de Datos.
INSTITUTO TECNICO DE CAPACITACION TECNICO Y PRODUCTIVIDAD
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
Enrique Cardenas Parga
PARADIGMA Es un esquema de pensamiento que nos lleva a concebir las cosas de una manera determinada. el término paradigma puede indicar el concepto de esquema.
Funciones y procedimientos
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
CPU “Microprocesador de datos” Bus “ Transporte de los datos”
TRIMESTRE 1. Modulo I : Conceptos Generales La información es es un conjunto organizado de datos procesados, que constituyen un mensaje que cambia el.
Análisis y Diseño de Algoritmos
Lenguaje C.
Semana 5 Subprogramas..
ARQUITECTURAS SIMD TIPOS
Pase de Mensaje MPI Elaborado: Betzaida Romero. Agenda  Historia y Evolución  Que es MPI  Conceptos  Ventajas  Desventajas  Ejemplo  Conclusiones.
Introducción a la Computación Paralela Germán Larrazábal Departamento Computación, FACYT, Universidad de Carabobo, Venezuela
Unidad 7 Entrada/Salida
Curso de Computación Científica en Clusters
Procesamiento paralelo
Introducción a la Programación. Lenguaje de Máquina.
Programación de Memoria Compartida
INSTITUTO TECNOLÓGICO DE CD. GUZMÁN
Programación de Memoria Compartida
PRESENTADO POR LEIDY RODRÍGUEZ JOHANNA VALERO CAMILO VELANDIA MERCADEO.
BUS DE DATOS.
Tipos de Paralelismo Paralelismo de datos: cada procesador ejecuta la misma tarea sobre diferentes conjuntos o subregiones de datos Paralelismo de tareas:
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
Programación en MPI Capítulo 4. 4–2 NOT Gate 4–3 AND Gate.
Introducción al modelo Cliente-Servidor Carlos Rojas Kramer Universidad Cristóbal Colón.
Sistemas Operativos II MC. Daniel Fajardo Delgado INSTITUTO TECNOLÓGICO DE CD. GUZMÁN 30 de Mayo de 2004.
Elementos básicos del lenguaje
PROGRAMACIÓN PARALELA Modelos de programación paralela Modelos computacionales Paradigmas de programación paralela Programación en memoria compartida:
PARCIAL DE JUNIO DEL 2014 LENGUAJE DE PROGRAMACIÓN UN LENGUAJE SE PUEDE DEFINIR COMO UN CONJUNTO DE PALABRAS Y FORMAS DE EXPRESIÓN POR MEDIO DE.
Lenguaje de Programación  Un lenguaje se puede definir como un conjunto de palabras y formas de expresión por medio de las cuales se comunican y relacionan.
Elementos básicos del lenguaje
 En computación es un conjunto de líneas de señal que el microprocesador o CPU utilizan para intercambiar datos con otros componentes como teclados,
MPI: Message Passing Interface Vera Ortíz Thimoty Duéñez Saúl Moncada Ma. Cristina Otero Carolina teja.
Aitor Viana Sánchez Octavio Hombrados Juan F. Ramos Jesús López Bustos
(agradecimiento: Ruben Weht
“Organización y Arquitectura de Computadores” William Stallings
Redes de Area Local, LAN Una red de área local es una red de datos de alta velocidad que cubre un área geográfica relativamente pequeña. Típicamente conecta.
Placa base: La placa base, también conocida como placa madre o tarjeta es una placa de circuito impreso a la que se conectan los componentes que.
Supongamos que un usuario desea escribir un informe e imprimirlo en una impresora conectada. Para realizar esta tarea, se precisa una aplicación de procesamiento.
Estructura de los Sistemas Operativos
Programación Básica con NQC Patricio A. Castillo 10/05/2008.
COMPONENTES DEL COMPUTADOR
 En el interior de un ordenador habita una densa amalgama de componentes electrónicos que son los responsable de su correcto funcionamiento; componentes.
Modelo OSI Surgimiento del Modelo OSI ¿Que es el Modelo OSI?
Ordenadores: hardware y software
Utiliza un reloj para sincronizar la entrada y salida de señales en un chip de memoria. Ahorra tiempo al ejecutar los comandos y al transmitir los datos.
Maria Fernanda Osorio Nataly Moreno. Procesadores dedicados. Para desarrollar una tarea muy especifica. Ejecutando un único algoritmo de forma óptima.
PRINCIPIOS DE PROGRAMACIÓN
Por: Mario Felaco Mercedes Martinez Sistemas Operativos III Ene-Mar 2007.
ARQUITECTURA ALTERNATIVA DE SERVIDORES SISTEMAS OPERTIVOS DE RED En un sistema operativo de red los usuarios saben que están conectados a la red y que.
Dispositivos que componen una red.
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
Funciones Copyright © 2005 Unidad 1. Copyright © 2005 Objetivos del Aprendizaje Explicar la naturaleza y usos de las funciones. Describir algunas funciones.
Republica Bolivariana de Venezuela Universidad Alonso de Ojeda Facultad de Ingeniería Escuela de Computación Ing. Prof. Leonel Sequera Entrada y Salidas.
I Kamilo Osorio Restrepo 8°B Juan David Velez. TIPOS DE PROCESADORES Y SUS FUNCIONES PRINCIPALES CISC. Complex Instruction Set Computing. Posee un número.
GS3  Conceptos Básicos de Hardware. Tipos de computadoras Computadora Personal (PC) Laptop Macintosh.
INVESTIGACION DE TEMARIO JOSE LUIS VEGA MERINO.  1.2. Requerimientos de instalación.  Microsoft Windows 7 Professional y Microsoft Windows 7 Ultimate.
INTRODUCCION A M (ESSAGE) P (ASSING) I (NTERFACE) Paradigma de Transferencia de Mensajes Cada procesador corre un programa Todas las variables son privadas.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
ARCHIVO Es una colección de información o bien es una secuencia de bits, bytes, líneas o registros definida por su creador.
Message Passing Interface
Transcripción de la presentación:

Sistemas Operativos II MC. Daniel Fajardo Delgado INSTITUTO TECNOLÓGICO DE CD. GUZMÁN 22 de Mayo de 2004

COMPUTACIÓN PARALELA III

ARQUITECTURA DE DUCTOS RECONFIGURABLES ~> Multiprocesador ~> SIMD (instrucción única, datos múltiples) ~> Síncrona

Ducto transmitiendo Ducto Procesador Puerto LR-MESH Mesh Reconfigurable Lineal ~> 10 combinaciones por cada procesador

Ducto transmitiendo Ducto Procesador Puerto R-MESH Mesh Reconfigurable ~> 15 combinaciones por cada procesador

Ducto dirigido Procesador Puerto de salida Puerto de entrada DR-MESH Mesh Reconfigurable Dirigido

MESH RECONFIGURABLE (+ características) ~> Se asume que el retardo en ducto es O(1). ~> Los buses se conectan/desconectan según las necesidades, en base a decisiones locales. ~> La colisión se genera en el ducto. ~> El ducto se comporta como una herramienta computacional, en la PRAM era la ALU de cada procesador. ~> Se asume que cada procesador conoce su índice.

CICLO DE MÁQUINA 1. Cada procesador configura sus conexiones internas 2. Los procesadores escriben en los ductos 3. Los procesadores leen de los ductos 4. Cada procesador realiza una operación interna Los procesadores realizan los subpasos anteriores con base en decisiones locales.

Modelo AModelo B O(1) u.t. Modelo AModelo B O(1) u.t. T(n)>O(1) u.t. PODER COMPUTACIONAL

Poder Computacional Factibilidad de construcción DR- MESH R-MESH LR-MESH DR – Mesh R - Mesh N  N O(N  N) LR - Mesh O(N  N) O(1) u.t. O(N 2 ) u.t. Peor caso

FUNCIÓN OR Arreglo Lineal Reconfigurable Bus Splitting

Configuran conexiones FUNCIÓN OR Arreglo Lineal Reconfigurable

Escrituras en los ductos FUNCIÓN OR Arreglo Lineal Reconfigurable

Lecturas de los ductos FUNCIÓN OR Arreglo Lineal Reconfigurable

REDUCCIÓN PARALELA

REDUCCIÓN PARALELA Arreglo Lineal Reconfigurable

REDUCCIÓN PARALELA Arreglo Lineal Reconfigurable

REDUCCIÓN PARALELA Arreglo Lineal Reconfigurable

REDUCCIÓN PARALELA Arreglo Lineal Reconfigurable

REDUCCIÓN PARALELA Arreglo Lineal Reconfigurable

CARACTERÍSTICAS DE CALAFIA ~> 8 procesadores ultraSPARC III 900 Mhz con 8 MB de cache (Rendimiento total 14.4 Gflops) ~> Memoria Principal: 8 GB ~> Dispositivo de almacenamiento: Sun StorEdge D240 Media con: DVD-ROM, DAT y 2 Discos de 18 GB c/u ~> Discos externos de alta velocidad: Sun StorEdge T3 Array de 324 GB (total) ~> Interconexion del sistema: Sun Fireplane 9.6 GB/seg ~> Dispositivo de E/S: 2 modulos con 8 ranuras PCI c/u ~> Componentes redundantes: Fuente de poder, ventiladores, tarjeta controladora, Interface de red 10/100 Fast Ethernet

< --- Sun StorEdge D240 < --- Sun StorEdge Array T3 < --- Sun Fire 4800

OPCIONES DE COMPILACIÓN Opciones de compilado por default % cc fuente.c -o ejecutable Esto genera un ejecutable de 32 bits genérico para plataformas SPARC. Máximo desempeño Si se desea obtener un mejor desempeño en la ejecución secuencial del programa se puede usar: -fast -xarch=v8plusb (Para 32 bits) -fast -xarch=v9b (para 64 bits)

PASOS PARA PARALELIZAR UN PROGRAMA 1. Optimizar en un solo procesador. 2. Identificar los ciclos mas significativos que sean de mas peso en el cómputo. 3. Determinar que los resultados sean los correctos en la ejecución secuencial. 4. Elegir modelo: OpenMP, MPI, Directivas Sun. 5. Paralelizar. 6. Verificar. 7. Pruebas. 8. Repetir los pasos 5, 6 y 7.

Como calafia es un sistema de memoria compartida propicia que los compiladores (C y fortran) puedan distribuir de manera automática o explícita las iteraciones de los ciclos de un programa sobre varios procesadores mediante la inserción de directivas (o pragmas) dentro del código fuente (paralelismo de grano fino). # Paralelización implícita # Paralelización explícita

calafia.cicese.mx login: dfajardo password: ******

MPI (Message Passing Interface) Qué es? Es la primer biblioteca de paso de mensajes estándar y portable. Está formada por una colección de rutinas que facilitan la comunicación entre procesadores en programas paralelos. Qué ofrece? ~> Estandarización ~> Portabilidad ~> Potencialidad

FUNCIONES BÁSICAS Las funciones de MPI se utilizan en fortran y C. El formato en C es: rc = MPI_Xxxxx(parámetros) donde, ~> rc es una variable tipo entero que tiene valor de 0 ó 1, dependiendo del éxito o fracaso de la función. ~> Las x's representan el nombre de la subrutina. ~> La primer letra debe ser mayúscula.

TIPO DE DATOS PREDEFINIDOS

PASOS PARA CREAR UN PROGRAMA EN MPI 1. Inicializar la comunicación 2. Comunicar para compartir datos entre procesos 3. Finalizar el ambiente paralelo MPI tiene 125 funciones. Sin embargo un usuario podría comenzar a programar utilizando solamente 6 de ellas.

Inicializar la comunicación ~> MPI_Init() Inicializa el ambiente de programación MPI. ~> MPI_Comm_size() Al invocar esta función retorna el número de procesos. ~> MPI_Comm_rank() Regresa como resultado el número de cada procesador Comunicar para compartir datos entre procesos ~> MPI_Send() Esta función permite enviar un mensaje. ~> MPI_Recv() Esta rutina de MPI permite recibir un mensaje

Finalizar el ambiente paralelo ~> MPI_Finalize() Se finaliza el ambiente paralelo que provee MPI. Después de esta llamada ninguna rutina puede ser empleada, excepto MPI_Init.

COMPILANDO Y EJECUTANDO Los programas se compilan empleando un script llamado mpcc (o mpCC para C++) que llama a C con librerias propias de MPI. $ mpicc hola.c -o hola Para ejecutar el archivo se define el número de procesadores al momento de ejecutar un programa. $ hola -proc 4 ó $ mpirun -np 4 hola

ESTRUCTURA BÁSICA DE UN PROGRAMA CON MPI Todo programa MPI debe contener al menos las siguientes rutinas y estructura: Incluir archivo cabecera de mpi programa principal inicio MPI_Init()Inicializa las bibliotecas de MPI MPI_Comm_size(MPI_COMM_WORLD, numproc)Determina el número de procesos en que se esta ejecutando el programa dentro del comunicador (MPI_COMM_WORLD) por default. MPI_Comm_rank(MPI_COMM_WORLD, procid)Determina el ID (rango) del proceso dentro del comunicador. print("Soy el proceso: ", procid, "de", numproc)Imprime mensaje MPI_Finalize()Finaliza MPI fin

NUESTRO PRIMER PROGRAMA MPI!!! (HOLA MUNDO) #include main(int argc, char*argv[]){ int nprocs; // # de procesadores int rango; // rango de cada procesador MPI_Init(&argc, &argv); // Inicializa ambiente paralelo // # de procesadores y su rango MPI_Comm_rank(MPI_COMM_WORLD, &rango); MPI_Comm_size(MPI_COMM_WORLD, &nprocs); if(nprocs<2){ printf("Los procesadores deben ser mas de uno \n"); exit(1); } else printf("Hola mundo paralelo desde la tarea %d\n",rango); MPI_Finalize(); return 0; }

OTRO EJEMPLO... /* Programa que lee un entero de la terminal y lo distribuye a todos los procesos. Cada proceso imprime su rango y el valor que recibe. Esto se repite mientras no exista un valor negativo */ #include main(int argc, char *argv[]){ int rank, value; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); do{ if(rank==0) // Si soy el proceso maestro scanf("%d",&value); // Realizar un broadcast del valor a los otros procesos MPI_Bcast(&value, 1, MPI_INT, 0, MPI_COMM_WORLD); printf("El proceso %d obtuvo el valor: %d\n",rank,value); }while(value>=0); MPI_Finalize(); return 0; }