Message Passing Interface (MPI)
|
|
|
- Guillermo Gustavo Mora Rojas
- hace 9 años
- Vistas:
Transcripción
1 Message Passing Interface (MPI) INTRODUCCIÓN MPI (Message Passing Interface) como es un interfaz estandarizada para la realización de aplicaciones paralelas basadas en pasaje de mensajes. El modelo de programación que subyace tras MPI es MIMD (Multiple Instruction streams, Multiple Data streams) aunque se dan especiales facilidades para la utilización del modelo SPMD (Single Program Multiple Data), un caso particular de MIMD en el que todos los procesos ejecutan el mismo programa, aunque no necesariamente la misma instrucción al mismo tiempo. El pasaje de mensajes es un paradigma ampliamente usado en determinadas clases de máquinas paralelas, especialmente aquellas con memoria distribuida. Aún habiendo bastantes variaciones, los conceptos básicos de las comunicaciones entre procesos por medio de mensajes están bien estudiados, en los últimos 15 años se han hecho progresos sustanciales en lo que hace a las aplicaciones de este paradigma y cada distribuidor ha implementado su propia variante, así es como recientemente muchos sistemas han demostrado ser eficientes y portables. De esta manera y con el tiempo es como se ha definido la sintaxis y la semántica de un núcleo de librerías de rutinas que hace del pasaje de mensajes una herramienta absolutamente útil para un amplio rango de usuarios e implementable sobre variedad de computadoras. De esta manera, el estándar incluye: Comunicaciones punto a punto. Operaciones colectivas Grupos de procesos Contextos de comunicación Topologías de procesos Interfaces para para Fortran 77 y C Manejo y análisis del ambiente de desarrollo Perfiles de interfaz Pero no se especifica: Operaciones explícitas de memoria compartida Operaciones que requieren de un soporte del sistema mayor que el estándar corriente, por ejemplo, manejo de interrupciones, ejecución remota o mensajes activos. Herramientas de construcción de programas Facilidades de depuración Soporte explícito para cadenas (threads) Soporte para administración de tareas Funciones de Entrada/Salida (I/O) 1
2 DEFINICIONES Proceso (Process) Es una subparte paralelizable o ejecutable de un problema o algoritmo, si bien puede estar asociada a un procesador por cuestiones de eficiencia, puede presentarse también de manera que haya más de un proceso por procesador o CPU. Todos los procesos se comunican con otros a través de mensajes, aún corriendo sobre el mismo procesador. Comunicador (Communicator) Un comunicador es un dominio de comunicación que define un grupo de procesos que les permite comunicarse entre ellos, de manera que puedan separarse los contextos en los que se producen las comunicaciones, es decir un mecanismo que permite al programador definir módulos que encapsulen estructuras de comunicación. Cada proceso tiene una identidad (rank) dentro del comunicador, que va de 0 a N-1, donde hay N procesos. Actualmente se puede disponer de dos tipos de comunicadores, un intracomunicador para comunicaciones dentro de un grupo o un intercomunicador para comunicaciones entre grupos. Para programas simples solo se usan intracomunicadores pues no suele ser necesario más que un grupo y generalmente se usa el comunicador por defecto MPI_COMM_WORLD que engloba a todos los procesos dentro de una aplicación. Rango o identidad (Rank) Cada proceso tiene su propia y única identidad, identificada por un número entero que le es asignado por el sistema cuando el proceso se inicializa. Algunas veces el rank es llamado process ID. Los ranks son contiguos y empiezan desde cero. Es usado por el programador para identificar la fuente y destino de los mensajes y con frecuencia se utiliza con un condicional. Ejemplo: If (rank == 0) /*. */ else /*... */ Grupo (Group) Un grupo es un conjunto ordenado de N procesos. Cada proceso en un grupo sigue asociado con un único rank entero. Buffer de aplicación Es el espacio de direcciones de memoria que mantiene los datos para mandar o recibir. Buffer del sistema Espacio de memoria del sistema para el almacenamiento de mensajes. Datos del buffer de aplicación pueden ser copiados a/de el espacio de sistema para operaciones de enviar/recibir pudiendo mantener una comunicación asíncrona. COMPLETADO DE UNA TAREA Son varias las versiones de funciones para enviar y recibir, y para describir estas variaciones suelen verse términos como localmente completo o globalmente completo. Entonces una rutina es localmente completa cuando ha completado su parte en la operación. Una rutina es globalmente completa cuando todas las partes involucradas en 2
3 una operación han concluido, esto es que todas las rutinas deben ser localmente completas para que la operación sea globalmente completa. Rutinas bloqueantes En MPI, una rutina bloqueante (enviar o recibir) retorna cuando es localmente completa. La condición de localmente completa para una rutina de envío bloqueante es que la locación usada para mantener el mensaje pueda ser usada otra vez o alterada sin afectar el mensaje que ha sido enviado. Esencialmente, el proceso fuente es bloqueado, el mínimo tiempo que es requerido para acceder al mensaje. Rutinas no-bloqueantes Una rutina no-bloqueante retorna inmediatamente, esto es que permite ejecutar la próxima sentencia, tanto si está localmente completa como si no lo está, es decir que retornará aún antes de que la locación fuente sea segura para ser modificada. FUNCIONES BÁSICAS MPI es un sistema complejo, por lo tanto es mucho lo que se puede decir, en su totalidad comprende más de 130 funciones, muchas de las cuales tienen numerosos parámetros o variantes. Nuestro objetivo es presentar conceptos esenciales de la programación con pasaje de mensajes, con lo que la utilización de 24 funciones básicas es más que suficiente para un amplio rango de aplicaciones y aún con sólo 6 se pueden elaborar muchas de ellas. Estas 6 funciones básicas son: MPI_INIT que inicializa el ambiente MPI, necesaria en todos los programas. int MPI_INIT(int *argc, char argv[ ]); MPI_FINALIZE, termina la ejecución del ambiente MPI, al igual que la función anterior debe estar presente en todos los programas MPI. int MPI_Finalize(void) 3
4 MPI_COMM_RANK, determina el rango o identificación del proceso en el comunicador. int MPI_Comm_rank(MPI_Comm comm.,int *rank) MPI_COMM_SIZE, determina el número de procesos corriendo asociados con comunicador. int MPI_Comm_size(MPI_Comm comm, int *size) MPI_SEND, envía un mensaje a otro proceso. int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm) MPI_RECV, recibe un mensaje de otro proceso. int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, int tag,mpi_comm comm, MPI_Status *status) INTRODUCCIÓN A LOS COMUNICADORES Comunicador = variable de tipo MPI_Comm = Grupo_procs + Contexto Grupo de procesos: Subconjunto de procesos Contexto de comunicación: Ámbito de paso de mensajes en el que se comunican dichos procesos. Argumento en funciones de transferencia. MPI_COMM_WORLD : Comunicador MPI por defecto que incluye todos los procesos en ejecución Identificación unívoca de procesos participantes en comunicador Un proceso puede pertenecer a diferentes comunicadores Cada proceso tiene un identificador: desde 0 a size_comm-1 Mensajes destinados a diferentes contextos de comunicación no interfieren entre sí. 4
5 OBTENIENDO INFORMACIÓN Ejemplo de obtención del rango (rank) y tamaño (size) #include <stdio.h> #include "mpi.h" int main(int argc, char *argv[ ] ) { int rank, size; MPI_Init( &argc, &argv ); MPI_Comm_size( MPI_COMM_WORLD, &size ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); printf( "Hello world from process %d of %d\n", rank, size ); MPI_Finalize( ); return 0; Envío y recepción de mensajes int MPI_Send ( void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm ) Envía datos almacenados en buffer apuntado por buf al proc. dest con la etiqueta tag (entero >0) dentro del comunicador comm. Existen implementaciones bloqueantes y no bloqueantes int MPI_Recv ( void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status ) Recibe mensaje de proceso source dentro del comunicador comm. Sólo se recibe un mensaje enviado desde source con etiqueta tag pero existen agumentos comodín: MPI_ANY_SOURCE, MPI_ANY_TAG. Mensaje es almacenado en posiciones continuas desde buf. Argumentos count y datatype: especifican la longitud del buffer. Objeto status : Estructura con campos MPI_SOURCE y MPI_TAG. Permite obtener información sobre el mensaje recibido Obtener tamaño del mensaje recibido: Función MPI_Get_count 5
6 int MPI_Get_count( MPI_Status *status, MPI_Datatype dtype, int *count ) Ejemplo: Programa para dos procesos MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); MPI_Comm_size( MPI_COMM_WORLD, &size ); if (rank == 0) { value=100; MPI_Send (&value, 1, MPI_INT, 1, 0, MPI_COMM_WORLD ); else MPI_Recv ( &value, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &status ); MPI_Finalize( ); Envío y recepción de mensajes. Ejemplo #include <stdio.h> #include "mpi.h" int main(int argc, char *argv[ ]); { int rank, value, size; MPI_Status status; MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); MPI_Comm_size( MPI_COMM_WORLD, &size ); do { if (rank == 0) { scanf( "%d", &value ); MPI_Send(&value, 1, MPI_INT, rank + 1, 0, MPI_COMM_WORLD ); else { MPI_Recv( &value, 1, MPI_INT, rank - 1, 0, MPI_COMM_WORLD, &status ); if (rank < size - 1) MPI_Send( &value, 1, MPI_INT, rank + 1, 0, MPI_COMM_WORLD ); printf( "Process %d got %d\n", rank, value ); while (value >= 0); MPI_Finalize( ); return 0; 6
Paradigma de paso de mensajes
Paradigma de paso de mensajes Curso 2011-2012 Índice Visión lógica del paradigma de paso de mensajes. Operaciones básicas en paso de mensajes. Operaciones bloqueantes. Operaciones no bloqueantes. MPI:
MPI es un estándar de programación en paralelo mediante paso de mensajes que permite crear programas portables y eficientes.
Programación paralela en MPI MPI es un estándar de programación en paralelo mediante paso de mensajes que permite crear programas portables y eficientes. Introducción a MPI MPI fue creado en 1993 como
Procesamiento Paralelo
Procesamiento Paralelo MPI - Tipos y Topologías Javier Iparraguirre Universidad Tecnológica Nacional, Facultad Regional Bahía Blanca 11 de Abril 461, Bahía Blanca, Argentina [email protected]
UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA. ARQUITECTURA DE COMPUTADORES II 19 de junio de 2007
UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA. ARQUITECTURA DE COMPUTADORES II 19 de junio de 2007 Para la realización del presente examen se dispondrá de 2 1/2
Modelo de paso de mensajes
Modelo de paso de mensajes Miguel Alfonso Castro García [email protected] Universidad Autónoma Metropolitana - Izt 17 de noviembre de 2016 Contenido 1 Comunicación punto a punto 2 3 Comunicación punto
SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC. PRÁCTICA 9 Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla
SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC. PRÁCTICA 9 Departamento de Arquitectura y Tecnología de Computadores Universidad de Sevilla PROGRAMACIÓN DE COMPUTADORES DE MEMORIA DISTRIBUIDA USANDO MPI. PREPARACIÓN
Computacion de Alto Performance
Computacion de Alto Performance Abraham Zamudio Abraham Zamudio Computacion de Alto Performance 1/47 Indice 1 Algunos Aspectos Teoricos 2 Paralelismo Computacional 3 Linux Cluster Hardware Software 4 MPICH
Esquemas de comunicación
Esquemas de comunicación tipos de comunicación Maestro-esclavo o comunicación global Esquema SPMD o comunicación local Maestro-esclavo o comunicación global Consiste en la implementación de un componente
Programación de aplicaciones paralelas con MPI (Message Passing Interface)
Programación de aplicaciones paralelas con MPI (Message Passing Interface) José Miguel Alonso Facultad de Informática UPV/EHU [email protected] 13/1/97 1. Introducción a MPI MPI (Message Passing Interface)
El Procesamiento Distribuido y su aplicación al Tratamiento de Imágenes. Miguel Hernández Vázquez. Carlos Platero Dueñas
El Procesamiento Distribuido y su aplicación al Tratamiento de Imágenes Autor: Tutor: Miguel Hernández Vázquez Carlos Platero Dueñas A mis padres y a mi hermano, que tanto me han ayudado y apoyado durante
Curso-Taller Programación Paralela con lenguaje C bajo Linux. MCC. Salazar Martínez Hilario
Curso-Taller Programación Paralela con lenguaje C bajo Linux MCC. Salazar Martínez Hilario Mayo 2011 Programación Paralela La que se realiza usando procesos separados. Interactúan intercambiando información.
Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III
República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III Lenguaje C 1 Puntos previos Los códigos fuentes generados en C requieren ser compilados
Programación en Paralelo con MPI en Clusters Linux
Programación en Paralelo con MPI en Clusters Linux Francisco Javier Rodríguez Arias 13 de marzo de 2006 Problema y Motivación En física se requiere hacer muchos cálculos. Para eso se hacen programas de
UNIVERSIDAD DE BURGOS Área de Tecnología Electrónica. Introducción a la programación en MPI.
UNIVERSIDAD DE BURGOS Área de Tecnología Electrónica Introducción a la programación en MPI. José María Cámara Nebreda, César Represa Pérez, Pedro Luis Sánchez Ortega Introducción a la programación en MPI.
Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación
1 Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera Fundamentos de programación Agenda Caracteres y Cadenas Conversión de Datos Introducción a las funciones y procedimientos
Programación I Funciones
1 Funciones Iván Cantador 2 Funciones: definición, sintaxis, ejemplos (I) Una funciónes un bloque de sentencias identificado con un nombre que se ejecutan de manera secuencial ofreciendo una funcionalidad
Modularización en lenguaje C. Funciones
Modularización en lenguaje C Funciones Segundo Cuatrimestre 2016 F. de la Informática- Int.a la Computación - Int.a la Programación 1 Ejercicio: Dado el siguiente algoritmo incompleto codificado en Lenguaje
Programación Híbrida e Introducción a la Programación de GPUs
Programación Híbrida e Introducción a la Programación de GPUs Fernando Robles Morales Instituto Nacional de Medicina Genómica Enrique Cruz Martínez Universidad Autónoma de la ciudad de México CONTENIDO
Índice. Índice. Máquinas de memoria distribuida. Arquitectura de un cluster. Arquitectura
Índice Programación en MPI 1. Máquinas de memoria distribuida 2. MPI 3. Arquitectura 4. Funciones básicas a. Arranque y parada b. Envío y recepción bloqueantes c. Envío y recepción NO bloqueantes d. Barreras
Sistemas de ficheros paralelos
Índice Sistemas Operativos Distribuidos Sistemas de ficheros paralelos Necesidad de E/S paralela Conexión de dispositivos Sistemas de ficheros distribuidos versus paralelos Técnicas de optimización de
Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C
Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales
7.3. Estructura de un programa
TEMA 7 ALGORITMOS Y PROGRAMAS. ESTRUCTURA DE UN PROGRAMA 7.1. Algoritmos 7.2. Compilación 7.3. Estructura de un programa 7.1. Algoritmos Objetivo: Resolver problemas mediante computadoras (usando el lenguaje
Manuel Martín Salvador
MPI 2 Introducción a Message-Passing Interface 2 Manuel Martín Salvador [email protected] http://draxus.org Licencia CC Índice Introducción E/S Paralela Acceso remoto a memoria Gestión dinámica de procesos
utilizar libros ni un ejemplo tráfico
UNIVERSIDAD CARLOS III DE MADRID INGENIERÍA EN INFORMÁTICA. ARQUITECTURA DE COMPUTADORES II 14 de junio de 2010 Para la realización del presente examen se dispondrá de 2 1/2 horas. NO se podrán utilizar
PROGRAMACION MODULAR FUNCIONES
PROGRAMACION MODULAR FUNCIONES Ventajas de la programación modular: Aumentar la legibilidad y comprensión del programa Reducir el tiempo de desarrollo, aprovechando módulos ya existentes Permitir la resolución
Fundamentos de programación
Fundamentos de programación Estructuras de Control Estructuras de control Estructuras de control Estructura secuencial Estructura alternativa Sentencias if, if else Sentencias if else anidadas El operador
Brevísimo tutorial de MPI (Message Passing Interface) Miguel Vargas
Brevísimo tutorial de MPI (Message Passing Interface) Miguel Vargas 19/10/10 1/33 Contenido Contenido Clusters Beowulf MPI (Message Passing Interface) Comunicación entre procesos Un programa simple con
Programación en Lenguaje C
Lenguaje de programación C Programación en Lenguaje C Introducción El Lenguaje de programación C fue implantado por primera vez en los años 70 por Dennis Ritchie para una computadora DEC PDP-11 corriendo
Introducción a MPI (Message Passing Interface)
Centro Nacional de Cálculo Científico Universidad de Los Andes CeCalCULA Mérida - Venezuela Introducción a MPI (Message Passing Interface) Francisco Hidrobo [email protected] Herbert Hoeger [email protected]
Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.
Lenguaje C Un poco de historia C es un lenguaje de propósito general, es decir, se pueden desarrollar aplicaciones de diversas áreas. Dentro de sus principales características podemos mencionar que: Es
Objetivos. Objetivos. Arquitectura de Computadores. R.Mitnik
Objetivos Objetivos Arquitecturas von Neumann Otras Unidad Central de Procesamiento (CPU) Responsabilidades Requisitos Partes de una CPU ALU Control & Decode Registros Electrónica y buses 2 Índice Capítulo
Taller de Programación Paralela
Taller de Programación Paralela Departamento de Ingeniería Informática Universidad de Santiago de Chile April 17, 2008 Motivación Programar aplicaciones paralelas no es una tarea trivial. Paralelismo
Computación Matricial y Paralela
Computación Matricial y Paralela Programación híbrida Javier Cuenca Dpto. de Ingeniería y Tecnología de Computadores Domingo Giménez Dpto. de Informática y Sistemas Universidad de Murcia http://dis.um.es/~domingo
Java. Introducción a la Programación Orientada a Objetos
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora
UNIDAD 1. Algoritmo se define como un conjunto de instrucciones que la computadora debe seguir para resolver un problema.
UNIDAD 1 1.1 Definición de Algoritmo La palabra algoritmo se deriva de la traducción al latín del nombre Muhammad Musa Al-khawarizmi, un matemático y astrónomo árabe que en el siglo IX escribió un tratado
Declaración. Introducción. Definición o implementación. Llamada. Un programa en C consta de una o más funciones.
Dpto. de ATC, Universidad de Sevilla - Página 1 de 5 1 2 Introducción Declaración Un programa en C consta de una o más funciones. La función main es la primera función que se ejecuta y que llama a las
Implementación de un Cluster de Computadoras con software libre para Computación Científica en Jicamarca
Implementación de un Cluster de Computadoras con software libre para Computación Científica en Jicamarca A.Zamudio M. Milla Contenido de la Presentación 1 Radio Observatorio de Jicamarca 2 3 4 5 6 Índice
Programación Estructurada
Programación Estructurada PROGRAMACIÓN ESTRUCTURADA 1 Sesión No. 2 Nombre: El lenguaje de programación C Contextualización Una constante en todos los lenguajes de programación (viejos y nuevos) es la implementación
TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.
1 TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS. 1- Cuáles son las principales funciones de un sistema operativo? Los Sistemas Operativos tienen como objetivos o funciones principales lo siguiente; Comodidad;
Funciones Definición de función
Funciones Definición de función Una función es un bloque de código que realiza una tarea específica. Una función es una porción de programa, identificable mediante un nombre, que realiza determinadas tareas
Fundamentos de Programación 2017-I
Fundamentos de Programación 2017-I Fundamentos para la construcción de código a partir del algoritmo Objetivo: El alumno construirá programas utilizando el lenguaje de programación C a través de un análisis
Introducción al Cómputo en Paralelo en el Laboratorio Nacional de Supercómputo del Sureste de México: Uso de MPI
Introducción al Cómputo en Paralelo en el Laboratorio Nacional de Supercómputo del Sureste de México: Uso de MPI Poulette Mayoral Orueta y Luis M. Villaseñor Cendejas Benemérita Universidad Autónoma de
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS
UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA FACULTAD DE CIENCIAS PRACTICA DE PROCESOS HERRAMIENTAS Caso 1: 1.- Necesitamos un cd o Dvd para grabar alguna de las versiones de livecd de Linux. 2.- Liga de una
FUNCIONES. Identificador valido. Tipo-Funcion Identificador_de_la_funcion (Tipo par1,tipo par2 )
FUNCIONES Las funciones son el medio básico de que se vale C para construir programas. Un Programa es, básicamente, una colección de funciones entre las que se incluye una especial llamada main(), la función
Fundamentos de la programación
Fundamentos de la programación 4A Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Facultad de Informática Universidad Complutense Archivos como parámetros
Descripción de un Programa
Unidad 2 Descripción de un Programa 1 El Lenguaje C (1) El lenguaje C fue creado en 1972 por Ken L. Thompson y Dennis M. Ritchie en los Laboratorios Bell. Es evolución de un lenguaje más antiguo: B (a
Estructuras de Datos Declaraciones Tipos de Datos
Departamento de Informática Universidad Técnica Federico Santa María Estructuras de Datos Declaraciones Tipos de Datos Temas: 2-3-4 IWI-131, paralelo 01 Profesor: Teddy Alfaro O. Lenguaje de Programación
Cómputo en paralelo con MPI
Cómputo en paralelo con MPI Miguel Vargas-Félix [email protected] CIMAT, October 9, 2015 1/35 Clusters Beowulf Master node External network Slave nodes Network switch Características: Tecnología estandar
Velocidades Típicas de transferencia en Dispositivos I/O
Entradas Salidas Velocidades Típicas de transferencia en Dispositivos I/O Entradas/Salidas: Problemas Amplia variedad de periféricos Entrega de diferentes cantidades de datos Diferentes velocidades Variedad
Estructuración del programa en partes más pequeñas y sencillas
Introducción Estructuración del programa en partes más pequeñas y sencillas Modularización Propósito único Identificable Reusable Mayor claridad: programación, depuración, etc. Construcción de librerías
Tipos de datos y Operadores Básicos
Módulo I: Conceptos Básicos Tema 1. Qué es un ordenador? Tema 2. Cómo se representan los datos en un ordenador? Tema 3. Qué es un lenguaje de programación? Tema 4. Cómo se hace un programa informático?
Convivencia Introducción
Convivencia Introducción Dra. Carolina Mañoso Dpto. Informática y Automática.UNED Definición (1/3) El sistema operativo como máquina virtual o extendida: Un sistema operativo es una serie de componentes
Qué es y qué no es un sistema distribuido? M.C. Juan Carlos Olivares Rojas
Qué es y qué no es un sistema distribuido? M.C. Juan Carlos Olivares Rojas Distribuir Según el diccionario: dividir una cosa entre varios designando lo que a cada uno corresponde Problemática: muchas tecnologías
Computación Matricial y Paralela
Computación Matricial y Paralela Programación con Paso de Mensajes. MPI Javier Cuenca Dpto. de Ingeniería y Tecnología de Computadores Domingo Giménez Dpto. de Informática y Sistemas Universidad de Murcia
Esquema de un programa en C: bloques básicos
Esquema de un programa en C: bloques básicos // Incluimos los ficheros de cabecera que necesitemos. // Esto es un comentario #include #include // Si queremos definir alguna constante,
Laboratorio de Arquitectura de Redes. Entrada y salida estándar
Laboratorio de Arquitectura de Redes Entrada y salida estándar Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato: scanf() El buffer de teclado Entrada
Instituto Tecnológico de Celaya
CADENAS DE CARACTERES Hasta ahora se han manejado variables de tipo caracter cuyo valor es un sólo caracter. En algunos casos, sin embargo, es necesario usar variables cuyos valores sean un conjunto (cadena)
Lusitania. Pensando en Paralelo. César Gómez Martín
Lusitania Pensando en Paralelo César Gómez Martín [email protected] www.cenits.es Esquema Introducción a la programación paralela Por qué paralelizar? Tipos de computadoras paralelas Paradigmas de
Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia
Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por
Sistemas Operativos. Procesos
Sistemas Operativos Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor de proceso
Introducción a Sistemas Operativos: Ficheros
Introducción a Sistemas Operativos: Ficheros Clips Fr ancisco J Ballesteros 1. Entrada/Salida Es importante saber cómo utilizar ficheros. En UNIX, es aún más importante dado que gran parte de los recursos,
Arquitectura de Computadoras
4-1 Arquitectura de Computadoras Tema 4: Arquitectura del Set de Instrucciones Eduardo Daniel Cohen [email protected] http://www.herrera.unt.edu.ar/arqcom 4-2 Arquitectura del Set de Instrucciones Indice
Definición de estructuras. Estructuras, uniones y enumeraciones. Declaración. Definición y declaración. (struct, union y enum)
Estructuras, uniones y enumeraciones (struct, union y enum) Definición de estructuras Una Estructura es una colección de variables simples (como int x; char cad[30]; etc), que pueden contener diferentes
Elementos de un programa en C
Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución
En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.
El primer objetivo de un programa informático es el manejo de datos. Un dato es toda aquella información que se puede tratar en un programa informático. En este artículo vamos a conocer los tipos de datos
Funciones Tipos de funciones y Recursividad
Funciones Tipos de funciones y Recursividad SESION 4 Definición Una función es una subrutina o subprograma que forman un programa que realiza tareas bien definidas. Todo programa en C consta de una o más
Se guardan en archivos con extencion c y los cabezales con extension h
Se guardan en archivos con extencion c y los cabezales con extension h Tipos de Variables: Tipo Tamaño(bytes) Limite inferior Limite superior char 1 -- -- unsigned char 1 0 255 short int 2-32768 +32767
Cálculos en paralelo con FreeFem++
Cálculos en paralelo con FreeFem++ J. Rafael Rodríguez Galván 4 al 8 de julio de 2011 J. Rafael Rodríguez Galván (UCA) Cálculos en paralelo con FreeFem++ 4 al 8 de julio de 2011 1 / 18 Outline 1 Cálculos
Instalación de un Super-Servidor de procesamiento paralelo basado en MPI
LABORATORIO: Simulación y Mecánica Computacional TRABAJO: Instalación de un Super-Servidor de procesamiento paralelo basado en MPI Idioma: Español Plataforma de Hardware: AMD64 Sistema Operativo: Debian
Evolución del software y su situación actual
Evolución del software y su situación actual El software es el conjunto de programas que permite emplear la PC, es decir, es el medio de comunicación con la computadora, el control de sus funciones y su
Punteros. Programación en C 1
Punteros Programación en C 1 Índice Variables y direcciones de memoria. Punteros definición, declaración e inicialización. Punteros declaración, asignación y dereferencia. Puntero nulo, tipo void. Aritmética
Primeros pasos con CUDA. Clase 1
Primeros pasos con CUDA Clase 1 Ejemplo: suma de vectores Comencemos con un ejemplo sencillo: suma de vectores. Sean A, B y C vectores de dimensión N, la suma se define como: C = A + B donde C i = A i
Lenguaje C. Lenguaje C. Erwin Meza Vega
Lenguaje C Erwin Meza Vega Outline 1 Introducción 2 Tipos básicos de datos 3 Estructuras de control 4 Funciones 5 Ejemplos de funciones 6 Tipos compuestos de datos 7 Arreglos 8 Apuntadores (punteros) 9
Lenguajes de programación
Lenguajes de programación Un computador solo entiende lenguaje binario Un procesador tiene un conjunto finito de operaciones binarias Un programa de computador es una secuencia de estas instrucciones Etapas
EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO
EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO TIPOS DE DATOS BÁSICOS: Tipo Tipo Tamaño aproximado en bits Rango mínimo Carácter char 8 0 a 55 Entero int 16-3767 a 3767 Real float 3
C1 INTRODUCCIÓN AL LENGUAJE C. Fundamentos de Informática Departamento de Ingeniería de Sistemas y Automática. EII. Universidad de Valladolid
C1 INTRODUCCIÓN AL LENGUAJE C Fundamentos de Informática Departamento de Ingeniería de Sistemas y Automática. EII. Universidad de Valladolid Índice 1. Lenguajes de Programación 1. Definición. 2. Niveles
Guía práctica de estudio 05: Diagramas de flujo
Guía práctica de estudio 05: Diagramas de flujo Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Guía práctica de estudio 05: Diagramas de
Metodología de Desarrollo de Programas
Metodología de Desarrollo de Programas Prof. Judith Barrios Albornoz Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes Semestre A_2013 Este material
Programación Paralela y Distribuida
Programación Paralela y Distribuida Cores, Threads and Nodes Pedro Antonio Varo Herrero [email protected] Pedro Antonio Varo Herrero Estudiante 4º Curso - Universidad de Sevilla Grado Ing. Informática Tecnologías
Lenguaje de programación C. Introducción
Lenguaje de programación C Introducción 1 Elementos del lenguaje C Colección de funciones Estas funciones contienen declaraciones, sentencias, expresiones y otros elementos que en conjunto indican a la
Guía rápida para gestionar el puerto paralelo del PC
Guía rápida para gestionar el puerto paralelo del PC Descarga desde: http://eii.unex.es/profesores/jisuarez/descargas/ip/guia_rapida_pp.pdf José Ignacio Suárez Marcelo Universidad de Extremadura Escuela
Sistemas Operativos Primer Recuperatorio Parcial 1
1.- El siguiente código intenta representar la solución a la siguiente problemática: Un proceso crea un conjunto de procesos hijos al mismo nivel y le asigna a cada uno una tarea determinada, cada proceso
Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.
Punteros Definición Un puntero es un dato que contiene una dirección de memoria. NOTA: Existe una dirección especial que se representa por medio de la constante NULL (definida en ) y se emplea
El lenguaje de Programación C. Fernando J. Pereda <[email protected]>
El lenguaje de Programación C Fernando J. Pereda Por qué aprender C? Portable y muy extendido Estándar (C89, C99) El lenguaje de los sistemas Un lenguaje fácil (no, no es broma) Por
Threads. Hilos - Lightweight process - Procesos ligeros
Threads Hilos - Lightweight process - Procesos ligeros 1 Temario Concepto y Beneficios Estructuras de implementación: Servidor- Trabajador, Equipo, Pipeline Reconocimiento: En el espacio del usuario /
Facultad de Ingeniería Industrial y de Sistemas v1.0 MA781U PROCESOS DISTRIBUIDOS
PROCESOS DISTRIBUIDOS Preparado por: Angel Chata Tintaya ([email protected]) Resumen El proceso cliente servidor es la clave para comprender el potencial de los sistemas de información y las redes
Codificación en C. Como pasar de Pseudocódigo a C (con pequeños trucos de C++)
Codificación en C Como pasar de Pseudocódigo a C (con pequeños trucos de C++) Plantilla Librerias Constantes Algoritmo #include #include #define PI 3.1416 int main(void){ /*Variables*/
1 Software de una computadora 2 Sistemas operativos 3 Manejo avanzado y programación en ms-dos 4 Lenguajes de programación
1 Software de una computadora 1.1 Software de control o sistema de explotación 1.2 Software de tratamiento 1.3 Software de diagnóstico y mantenimiento 1.4 Actividades: software de una computadora 2 Sistemas
Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía
Tema 3 SUBRUTINAS ÍNDICE Definición e instrucciones básicas Soporte para el tratamiento de subrutinas (ejecución de la subrutina y gestión del bloque de activación) Interrupciones vs llamadas a procedimiento
Threads, SMP y Microkernels. Proceso
Threads, SMP y Microkernels Proceso Propiedad de los recursos a un proceso se le asigna un espacio de dirección virtual para guardar su imagen Calendarización/ejecución sigue una ruta de ejecución la cual
