Paralelización especulativa

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Paralelización especulativa"

Transcripción

1 Sergio Aldea Departamento de Informática Universidad de Valladolid MUI-TIC, curso / 48

2 Índice Conceptos fundamentales Ejecución especulativa por software Especulación + OpenMP Conclusiones 2 / 48

3 Conceptos fundamentales Ejecución especulativa por software Especulación + OpenMP Conclusiones 3 / 48

4 Conceptos fundamentales Paralelismo: motivación Por qué no basta con CPUs más rápidas? Razones teóricas: Límites físicos al rendimiento de un único chip: velocidad de la luz, tamaño de los átomos, disipación del calor... Razones prácticas: Desarrollar nuevos chips es extremadamente caro Solución Utilizar varias CPU para cooperar en la resolución del problema 4 / 48

5 Conceptos fundamentales Paralelismo: motivación Y esto... para qué sirve? Programas de tiempo real Procesamiento masivo de datos (Big Data) Aplicaciones biológicas/médicas. Ej: Plegamiento de proteínas Simulaciones de matemática financiera Técnicas criptográficas Etc, etc... 5 / 48

6 Conceptos fundamentales Paralelización de algoritmos Dos alternativas: manual y automática La paralelización manual de algoritmos es una tarea difícil Requiere conocimientos del problema a paralelizar Requiere conocimientos de las librerías de comunicaciones Requiere conocimientos del hardware subyacente Por otra parte, las soluciones paralelas obtenidas no suelen ser aplicables a otras arquitecturas Solución ideal: dejar la paralelización en manos del compilador 6 / 48

7 Conceptos fundamentales Mecanismos de paralelización automática Identifican fragmentos de código que pueden ejecutarse en paralelo (típicamente bucles) 1. Paralelización automática en tiempo de compilación 2. Paralelización automática en tiempo de ejecución Modelos inspector-ejecutor Modelos de paralelización especulativa Todos están íntimamente ligados al análisis de dependencias Relación entre las lecturas y escrituras sobre una variable que ocurren en distintas iteraciones Afectan a la posibilidad de ejecutar en paralelo un bucle 7 / 48

8 Conceptos fundamentales Ejemplo de dependencia de datos Supongamos el siguiente bucle: do i = 1, lhs=sv[x] SV[x]=rhs end do 8 / 48

9 Conceptos fundamentales Ejemplo de dependencia de datos Con cuatro procesadores podría dividirse el trabajo así: Thread 1 Thread 2 Thread 3 Thread 4 do i = 1, lhs=sv[x] SV[x]=rhs end do do i = 26, lhs=sv[x] SV[x]=rhs end do do i = 51, lhs=sv[x] SV[x]=rhs end do do i = 75, lhs=sv[x] SV[x]=rhs end do 9 / 48

10 Conceptos fundamentales Ejemplo de dependencia de datos Sin embargo, dependiendo del valor de x puede producirse una violación de dependencia: Thread 1 Thread 2 Thread 3 Thread 4 do i = 1, lhs=sv[x] SV[x]=rhs end do do i = 26, lhs=sv[x] SV[x]=rhs end do do i = 51, lhs=sv[x] SV[x]=rhs end do do i = 75, lhs=sv[x] SV[x]=rhs end do 10 / 48

11 Conceptos fundamentales Tipos de dependencia Dependencias WAR (Write After Read): se lee de una variable en una iteración y se escribe sobre ella en una iteración posterior (i1) B = A + C (i2) C = A + D Dependencias WAW (Write After Write): se escribe sobre una misma variable en dos iteraciones consecutivas (i1) B = E + C (i2) B = A + D Dependencias RAW (Read After Write): se escribe en una variable en una iteración y se lee de ella en una iteración posterior (i1) A = B + C (i2) D = A + C 11 / 48

12 Conceptos fundamentales Tipos de dependencia Las dependencias RAW son las más conflictivas Thread 1 Thread 2 Thread 3 Thread 4 do i = 1, lhs=sv[x] SV[x]=rhs end do do i = 26, lhs=sv[x] SV[x]=rhs end do do i = 51, lhs=sv[x] SV[x]=rhs end do do i = 75, lhs=sv[x] SV[x]=rhs end do Si x no es conocido en tiempo de compilación, el compilador no puede paralelizar el bucle. 12 / 48

13 Conceptos fundamentales Modelos de paralelización especulativa En lugar de intentar determinar las dependencias entre las iteraciones, se ejecuta el bucle en paralelo suponiendo que no hay dependencias (ejecución optimista ) Un mecanismo de control (hardware o software) debe encargarse de detectar violaciones de dependencia en tiempo de ejecución y descartar los valores calculados incorrectamente Para cada variable compartida se comprueba si alguno de los hilos que se encuentra ejecutando iteraciones posteriores del bucle ha utilizado un valor antiguo de esa variable. 13 / 48

14 Conceptos fundamentales Ejemplo de aplicación: Cierre convexo Los puntos se procesan uno por uno Algoritmo incremental aleatorizado cuyo número esperado de dependencias está relacionado con la forma del conjunto de datos de entrada. 14 / 48

15 Conceptos fundamentales Ejemplo de aplicación: Cierre convexo Si el nuevo punto cae dentro, la solución no cambia 15 / 48

16 Conceptos fundamentales Ejemplo de aplicación: Cierre convexo Si el nuevo punto cae fuera, la solución sí que cambia 16 / 48

17 Conceptos fundamentales Ejemplo de aplicación: Cierre convexo Si el nuevo punto cae fuera, la solución sí que cambia 17 / 48

18 Conceptos fundamentales Ejemplo de aplicación: Cierre convexo 6 5 Speculative Secuencial 2D-Hull, square input set Especulativo: Speed-ups de hasta 5x con 20 procesadores. 18 / 48

19 Conceptos fundamentales : Ejemplo Thread 1 Thread 2 Thread 3 Thread 4 t10 t0 t1 t3 1) x=1; el thread 1 obtiene el valor de SV[1] 3) x=4; el thread 2 obtiene el valor de SV[4] LocalVar1 = SV[x] SV[x] = LocalVar2 t2 t4 t6 LocalVar1 = SV[x] SV[x] = LocalVar2 t5 t8 t10 5) x=1; el thread 3 obtiene SV[1] del thread 1 LocalVar1 = SV[x] SV[x] = LocalVar2 t6 t7 t9 4) x=1; el thread 4 obtiene SV[1] del thread 1 LocalVar1 = SV[x] SV[x] = LocalVar2 2) El thread 1 escribe en el elemento SV[1] 6) El thread 3 escribe en el elemento SV[1] Tiempo 7) Se detecta una violación de dependencia: se descartan los resultados del thread 4 19 / 48

20 Conceptos fundamentales Operaciones involucradas Thread 1 Thread 2 Thread 3 Thread 4 (i = 1, x = 1) (i = 2, x = 1) (i = 3, x = 2) (i = 4, x = 2) t0 (Thread no especulativo) Escritura especulativa: detección de dependencias (Thread más especulativo) t1 LocalVar1 = SV[x] t2 t3 SV[x] = LocalVar2 t4 t6 LocalVar1 = SV[x] SV[x] = LocalVar2 t5 t8 t10 LocalVar1 = SV[x] SV[x] = LocalVar2 t6 t7 t9 LocalVar1 = SV[x] SV[x] = LocalVar2 Tiempo Consolidación (commit) en orden de las iteraciones correctas Lectura especulativa: obtención del valor más reciente 20 / 48

21 Conceptos fundamentales Resumen de operaciones a realizar Todas las lecturas sobre variables especulativas deben devolver el valor más reciente posible Todas las escrituras sobre variables especulativas deben comprobar que no se producen eventuales violaciones de dependencia. Al final del bloque de iteraciones, cada thread debe realizar una operación de consolidación (commit) de los resultados calculados. 21 / 48

22 Conceptos fundamentales Ejecución especulativa por software Especulación + OpenMP Conclusiones 22 / 48

23 Ejecución especulativa por software Ejecución especulativa por software No requiere cambios en el hardware de la máquina, pero requiere una compilación específica y añade sobrecargas a la ejecución Se añade código al bucle original para la detección y gestión de dependencias La existencia de dependencias puede comprobarse: Al final de la ejecución paralela Al final de la ejecución de un conjunto de iteraciones En cada operación de memoria Los commits parciales y/o finales también se realizan por software 23 / 48

24 Ejecución especulativa por software Modificaciones en la estructura del bucle Supongamos un bucle de N iteraciones, y queremos que se ejecuta en P procesadores. Se reemplaza el bucle por un doall de 1 a P. Cada procesador se encarga de ejecutar un bloque de iteraciones consecutivas. Cuando termina, invoca una función que le asigna un bloque nuevo. Cuando todos terminan, se da por finalizada la ejecución especulativa del bucle. 24 / 48

25 Ejecución especulativa por software Modificaciones en el cuerpo del bucle Todas las lecturas sobre variables especulativas se reemplazan por una función que recupera el valor más reciente para la variable. Todas las escrituras sobre variables especulativas se reemplazan por una función que realiza la escritura y detecta eventuales violaciones de dependencia. Cada thread ejecuta al final de su bloque una función que consolida los resultados calculados y asigna el nuevo bloque de iteraciones a ejecutar. 25 / 48

26 Ejecución especulativa por software Modificaciones antes del bucle Se utiliza OpenMP para clasificar el uso de las variables. Se etiquetan como privadas las variables sobre las que siempre se escribe en una iteración antes de utilizarlas. Se etiquetan como compartidas las variables que sólo se leen. El resto de variables son susceptibles de sufrir una violación de dependencia, son especulativas, pero se etiquetan como compartidas. 26 / 48

27 Ejecución especulativa por software Breve descripción de OpenMP API para programar sistemas de memoria compartida NO es un lenguaje de programación for (i=0; i<10; i++) { b[i] = a[i] + a[i-1] } #pragma omp parallel for for (i=0; i<10; i++) { b[i] = a[i] + a[i-1] } Crea hilos y reparte trabajo entre ellos Variables privadas (a cada hilo) y compartidas No detecta dependencias Nosotros las gestionamos mediante una librería de paralelización especulativa. 27 / 48

28 Ejecución especulativa por software Ejemplo de modificación manual 1: char a; float b; 1: char a; float b; char temp; float value, int tid, threads;... 2: specinit(); 3: threads = omp get num threads(); 4: specstart(max); 5: #pragma openmp parallel for \ private (i,tid,temp,value,...) shared (a,b,threads,...) 6: for (i=0; i<max; i++) { 6: for (tid=0; tid<threads; tid++) { 7: while(true) { 8: i = assign following chunk(tid, MAX,...); Original loop code, part 1 Original loop code, part 1 9: a = f(b); 9: specload(&b, sizeof(b),..., &value); 10: temp = f(value); 11: specstore(&a, sizeof(a),..., &temp); Original loop code, part 2 Original loop code, part 2 12: commit or discard data(tid,...); 13: if(no chunks left(tid, MAX,...)) break; 14: } 15: } 15: } (a) Original (b) Código transformado 28 / 48

29 Ejecución especulativa por software Problemas paralelización especulativa manual Requiere conocimientos del problema a paralelizar Requiere conocimientos de la libreria TLS utilizada Requiere tiempo No estaría bien que todo ese proceso de transformación fuera automático? Solución 1. Definir una nueva cláusula speculative para etiquetar las variables especulativas 2. Modificar un compilador para que: reconozca la cláusula realice las transformaciones necesarias 29 / 48

30 Conceptos fundamentales Ejecución especulativa por software Especulación + OpenMP Conclusiones 30 / 48

31 Especulación + OpenMP Nueva cláusula OpenMP: speculative Identifica aquellas variables conflictivas, que pueden ocasionar violaciones de dependencia #pragma omp parallel for speculative (list) for-loop Ejemplo: #pragma omp parallel for default(none) private(i, Q, aux) speculative(a) for (i = 0; i < MAX; i++) { Q = i % (MAX) + 1; aux = a[q-1]; } Q = (4 * aux) % (MAX) + 1; a[q-1] = aux; 31 / 48

32 Especulación + OpenMP Qué cambios implica la cláusula speculative? 1. Inicializar el motor (specinit() y spectart()) 2. Cambiar la definición del bucle para repartir el trabajo entre los hilos 3. Reemplazar cada escritura/lectura por su variante especulativa (specload() y specstore()) 4. Comprobar dependencias, y consolidar las iteraciones correctas 32 / 48

33 Especulación + OpenMP Qué cambios implica la cláusula speculative? 1: char a; float b; 1: char a; float b; char temp; float value, int tid, threads;... 2: specinit(); 3: threads = omp get num threads(); 4: specstart(max); 5: #pragma openmp parallel for \ 5: #pragma openmp parallel for \ private (i) speculative (a,b) private (i,tid,temp,value,...) shared (a,b,threads,...) 6: for (i=0; i<max; i++) { 6: for (tid=0; tid<threads; tid++) { 7: while(true) { 8: i = assign following chunk(tid, MAX,...); Original loop code, part 1 Original loop code, part 1 9: a = f(b); 9: specload(&b, sizeof(b),..., &value); 10: temp = f(value); 11: specstore(&a, sizeof(a),..., &temp); Original loop code, part 2 Original loop code, part 2 12: commit or discard data(tid,...); 13: if(no chunks left(tid, MAX,...)) break; 14: } 15: } 15: } (a) Original anotado (b) Código generado automáticamente en GCC 33 / 48

34 Especulación + OpenMP Implementación en un compilador Durante la compilación: la cláusula debe ser reconocida como válida, y activar las transformaciones necesarias para paralelizar especulativamente el bucle. Enlazar con la librería de paralelización especulativa. Compilador elegido: GCC Maduro, estable, con soporte para más de 30 arquitecturas. Mayor impacto mediático. Mediante el mecanismo de plugins de GCC. 34 / 48

35 Especulación + OpenMP Arquitectura GCC C parser Front End Middle End Back End GIMPLE RTL C++ parser Plugin Pass Fortran parser GENERIC Interprocedural Optimizer RTL Optimizer Call Graph Manager Java parser SSA Optimizer Final Code Generation Pass Manager Assembly 1. Reconocimiento de la cláusula: Actualización del parser de GCC. 2. Transformaciones: Realizadas por un plugin, que actúa sobre el código en GIMPLE, antes de que el compilador realice el resto de optimizaciones. 35 / 48

36 Especulación + OpenMP Proceso de compilación Compiler parameters: - Threads - Block size Programmer Code C + OpenMP with speculative clause GCC plugin Linker Binary executable TLS Runtime library Ejecución: $ atlas --threads T --block B -c example.c 36 / 48

37 Especulación + OpenMP Ventajas cláusula speculative Menor número de ĺıneas para paralelizar un código Sólo requiere clasificar las variables utilizadas en el bucle No es necesario conocer los detalles de la librería especulativa Independencia del motor especulativo subyacente Permite paralelizar bucles que de otro modo no serían paralelizables 37 / 48

38 Especulación + OpenMP Evaluación Ejemplo de aplicaciones sintética : 0: #define NITER : int array[max], array2[max]; 2: struct card{ int field; }; 3: struct card p1 = {3}, p2 = {99999}, p3 = {11111}; 4: char aux char = a ; 5: double aux double = 3.435; 6: int i, j;... 7: #pragma omp parallel for default (none) \ 8: private(i, j) shared(array1, p2) \ 9: speculative(p1, p3, aux char, aux double, array2) 10: for ( i = 0 ; i < NITER ; i++ ) { 11: for ( j = 0 ; j < NITER ; j++ ) { 12: if (i <= 1000) p1.field = array[i % 4] + j; 13: else array2[i % 4] = p1.field; 14: if (i > 2000) aux char = i % aux char % 48; 15: else aux char = i % 20 + array[i % 4] % ; 16: if (i > 1500) aux double = array[i % 4] / (i+1) + aux double; 17: else array2[i % 4] = (int) (aux double / i*j) + (array2[(i+j) % 4] + i*j) % ; 18: if (i*j > 10000) p1 = p2; else p3 = p1; 19: } 20: } 38 / 48

39 Especulación + OpenMP Especulación manual vs. automática Número de ĺıneas requeridas para paralelizar especulativamente de forma manual vs. automática, y su rendimiento relativo. # de ĺıneas Rendimiento relativo por # de procesadores Aplicación Auto Manual D-Hull Delaunay hmmer Average Rendimientos similares para manual y automático: ±1,72 %. Manualmente, el número de ĺıneas a añadir/modificar depende del número de accesos a variables especulativas. 39 / 48

40 Especulación + OpenMP Duda razonable Vale bien, pero... El programador aún tiene que hacer el esfuerzo de analizar el código y clasificar las variables según su uso. 40 / 48

41 Especulación + OpenMP Proyecto MUI-TIC Original C file XMLCetus XML Modified XML Sirius Resulting C file XML Intel profiling information Profilazer XML augmented Loopest Analysis report XMLCetus: Genera un representación XML a partir de un código fuente. Profilazer: Extiende el fichero XML con información de profiling Loopest: Analiza el fichero XML y extrae información Sirius: Transforma XML a C. 41 / 48

42 Especulación + OpenMP Proyecto MUI-TIC Los informes permite al programador saber: Por cada bucle, la clasificación de las variables según su uso Reconocimiento de barreras al paralelismo: Funciones I/O, gestión de memoria, etc. Trazas de dependencias de una variable en diferentes puntos del código Tiempo de ejecución de cada bucle respecto del total Obtener una visión global del grado de paralelismo de la aplicación 42 / 48

43 Conceptos fundamentales Ejecución especulativa por software Especulación + OpenMP Conclusiones 43 / 48

44 Conclusiones Conclusiones La ejecución especulativa presenta un gran potencial para la extracción del paralelismo inherente a muchos bucles. Añadir soporte para paralelización especulativa a OpenMP incrementa el número de bucles que se pueden paralelizar mediante este modelo. Potencialmente, permite transformar cualquier bucle en un bucle paralelo (sin importar las dependencias) Si el programador no está seguro sobre las dependencias, podría etiquetar esas variables como especulativas. 44 / 48

45 Conclusiones Conclusiones El proceso es transparente para los programadores. No necesitan conocer nada del modelo de paralelización especulativa subyacente. Sólo necesitan añadir una ĺınea de código. El compilador detecta la nueva cláusula speculative, y realiza todas las transformaciones necesarias para paralelizar el código. Independientemente del tipo de datos de las variables: punteros, estructuras, etc. 45 / 48

46 Conclusiones Conclusiones La pregunta de cuál es el potencial real de la ejecución especulativa por software sigue pendiente de respuesta. Seguimos trabajando en dos áreas relacionadas: La transformación automática de bucles secuenciales en bucles susceptibles de ser ejecutados especulativamente. Una ejecución especulativa eficiente y robusta, que pueda utilizarse en aplicaciones comerciales. (Álvaro Estébanez) 46 / 48

47 PREGUNTAS? 47 / 48

48 Sergio Aldea Departamento de Informática Universidad de Valladolid MUI-TIC, curso / 48

Introducción a los procesadores ILP (Instruction-Level Parallel)

Introducción a los procesadores ILP (Instruction-Level Parallel) Introducción a los procesadores ILP (Instruction-Level Parallel) Herramientas básicas para conseguir paralelismo entre instrucciones: Encauzamiento (pipelining) Se usa en todo procesador ILP Utilizar varias

Más detalles

Sistemas Complejos en Máquinas Paralelas

Sistemas Complejos en Máquinas Paralelas Sistemas Complejos en Máquinas Paralelas Clase 1: OpenMP Francisco García Eijó Departamento de Computación - FCEyN UBA 15 de Mayo del 2012 Memoria compartida Las mas conocidas son las máquinas tipo Symmetric

Más detalles

Tema 1: PROCESADORES SEGMENTADOS

Tema 1: PROCESADORES SEGMENTADOS Tema 1: PROCESADORES SEGMENTADOS 1.1. Procesadores RISC frente a procesadores CISC. 1.2. Clasificación de las arquitecturas paralelas. 1.3. Evaluación y mejora del rendimiento de un computador. 1.4. Características

Más detalles

Es una API (Aplication Program Interface) que se usa para paralelismo basado en hilos múltiples en entornos de memoria compartida

Es una API (Aplication Program Interface) que se usa para paralelismo basado en hilos múltiples en entornos de memoria compartida Algo de OPENMP Memoria Compartida Threads O hilos, se definen como flujos de instrucciones independientes, que se ejecutan separadamente del programa principal. Con estos hilos se aprovecha mucho una máquina

Más detalles

Granularidad y latencia

Granularidad y latencia Niveles de paralelismo y latencias de comunicación Niveles de paralelismo. Granularidad o tamaño de grano. Latencia de comunicación. Particionado de los programas. Empaquetado de granos. Planificación

Más detalles

Paralelización de Programas Secuenciales: OpenMP

Paralelización de Programas Secuenciales: OpenMP Paralelización de Programas Secuenciales: OpenMP http://www.openmp.org Manuel Arenaz arenaz@udc.es Índice Introducción a la programación paralela Programación con OpenMP Directivas de compilación Librería

Más detalles

TEMA 5: PARALELISMO A NIVEL DE HILOS, TAREAS Y PETICIONES (TLP, RLP) (primera parte).

TEMA 5: PARALELISMO A NIVEL DE HILOS, TAREAS Y PETICIONES (TLP, RLP) (primera parte). TEMA 5: PARALELISMO A NIVEL DE HILOS, TAREAS Y PETICIONES (TLP, RLP) (primera parte). SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC www.atc.us.es Dpto. de Arquitectura y Tecnología de Computadores. Universidad

Más detalles

Taller de Programación Paralela

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

Más detalles

Cómputo paralelo con openmp y C

Cómputo paralelo con openmp y C Cómputo paralelo con openmp y C Sergio Ivvan Valdez Peña Guanajuato, México. 13 de Marzo de 2012 Sergio Ivvan Valdez Peña Cómputo Guanajuato, paralelo conméxico. openmp y () C 13 de Marzo de 2012 1 / 27

Más detalles

1 Primitivas básicas de OpenMP

1 Primitivas básicas de OpenMP 1 Primitivas básicas de OpenMP Consultar la página oficial de la plataforma OpenMP http://www.openmp.org/drupal/ Pragmas Es una directiva para el compilador que permite la definición de nuevas directivas

Más detalles

Computación Matricial y Paralela

Computación Matricial y Paralela Computación Matricial y Paralela Programación en Memoria Compartida Javier Cuenca Dpto. de Ingeniería y Tecnología de Computadores Domingo Giménez Dpto. de Informática y Sistemas Universidad de Murcia

Más detalles

Aspectos avanzados de arquitectura de computadoras Pipeline. Facultad de Ingeniería - Universidad de la República Curso 2017

Aspectos avanzados de arquitectura de computadoras Pipeline. Facultad de Ingeniería - Universidad de la República Curso 2017 Aspectos avanzados de arquitectura de computadoras Pipeline Facultad de Ingeniería - Universidad de la República Curso 2017 Objetivo Mejorar el rendimiento Incrementar frecuencia de reloj? Ancho de los

Más detalles

6. PROCESADORES SUPERESCALARES Y VLIW

6. PROCESADORES SUPERESCALARES Y VLIW 6. PROCESADORES SUPERESCALARES Y VLIW 1 PROCESADORES SUPERESCALARES Y VLIW 1. Introducción 2. El modelo VLIW 3. El cauce superescalar 4. Superescalar con algoritmo de Tomasulo 2 PROCESADORES SUPERESCALARES

Más detalles

Francisco Javier Hernández López

Francisco Javier Hernández López Francisco Javier Hernández López fcoj23@cimat.mx http://www.cimat.mx/~fcoj23 Ejecución de más de un cómputo (cálculo) al mismo tiempo o en paralelo, utilizando más de un procesador. Arquitecturas que hay

Más detalles

Arquitectura de Computadores: Exámenes y Controles

Arquitectura de Computadores: Exámenes y Controles 2º curso / 2º cuatr. Grado en Ing. Informática Doble Grado en Ing. Informática y Matemáticas Arquitectura de Computadores: Exámenes y Controles Examen de Prácticas AC 05/07/2013 resuelto Material elaborado

Más detalles

ARQUITECTURA DE COMPUTADORES

ARQUITECTURA DE COMPUTADORES Escuela Universitaria de Informática Ingeniería de Computadores ARQUITECTURA DE COMPUTADORES PRÁCTICA Nº 3 DESENROLLADO DE BUCLES INTRODUCCIÓN Este documento contiene el enunciado de la práctica de desenrollado

Más detalles

TEMA 4. ARQUITECTURA IA-64

TEMA 4. ARQUITECTURA IA-64 TEMA 4. ARQUITECTURA IA-64 Stalling, W.Computer Organization and Architecture cap. 15 Intel IA-64 Architecture Software Developer s Manual Generalidades IA-64 Desarrollo conjunto Intel-HP Nueva arquitectura

Más detalles

SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC. PRÁCTICA 3. PLANIFICACIÓN ESTÁTICA AVANZADA. TMS320C6713

SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC. PRÁCTICA 3. PLANIFICACIÓN ESTÁTICA AVANZADA. TMS320C6713 SISTEMAS PARALELOS Y DISTRIBUIDOS. 3º GIC. PRÁCTICA 3. PLANIFICACIÓN ESTÁTICA AVANZADA. TMS320C6713 OBJETIVOS. En esta práctica se trata de estudiar dos de las técnicas de planificación estática más importantes:

Más detalles

Esquemas repetitivos en Fortran 90

Esquemas repetitivos en Fortran 90 Los esquemas repetitivos permiten implementar iteraciones del lenguaje algorítmico (mientras, repetir, para, hasta). Podemos dividir los esquemas según: - Se conozcan el número de iteraciones a priori,

Más detalles

FUNCIONAMIENTO DEL ORDENADOR

FUNCIONAMIENTO DEL ORDENADOR FUNCIONAMIENTO DEL ORDENADOR COMPUTACIÓN E INFORMÁTICA Datos de entrada Dispositivos de Entrada ORDENADOR PROGRAMA Datos de salida Dispositivos de Salida LOS ORDENADORES FUNCIONAN CON PROGRAMAS Los ordenadores

Más detalles

PARADIGMA y LENGUAJES DE PROGRAMACIÓN

PARADIGMA y LENGUAJES DE PROGRAMACIÓN CATEDRA CARRERA: PARADIGMA y LENGUAJES DE PROGRAMACIÓN LICENCIATURA EN SISTEMAS DE INFORMACION FACULTAD DE CIENCIAS EXACTAS QUIMICAS Y NATURALES UNIVERSIDAD NACIONAL DE MISIONES Año 2017 2do Cuatrimestre

Más detalles

Procesadores superescalares. Introducción

Procesadores superescalares. Introducción Procesadores superescalares Introducción Introducción El término superescalar (superscalar) fue acuñado a fines de los 80s. Todas las CPUs modernas son superescalares. Es un desarrollo de la arquitectura

Más detalles

de Gran Canaria Centro de Tecnología Médica Programación Concurrente

de Gran Canaria Centro de Tecnología Médica  Programación Concurrente Universidad de Las Palmas de Gran Canaria Centro de Tecnología Médica http://www.ctm.ulpgc.es Tema 1: Introducción a la Escuela Técnica Superior de Ingenieros de Telecomunicación Conceptos Fundamentales

Más detalles

Estructuras de Datos Declaraciones Tipos de Datos

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

Más detalles

Master SIA 2012/13. Programación de Sistemas Paralelos. OpenMP: Ejercicios prácticos. Facultad de Informática. Ejercicio 1.A. pi.c

Master SIA 2012/13. Programación de Sistemas Paralelos. OpenMP: Ejercicios prácticos. Facultad de Informática. Ejercicio 1.A. pi.c Master SIA 2012/13 Facultad de Informática Programación de Sistemas Paralelos OpenMP: Ejercicios prácticos En el directorio templates/practica de tu cuenta msiaxx tienes varios programas que hay que procesar

Más detalles

CLUSTER FING: ARQUITECTURA Y APLICACIONES

CLUSTER FING: ARQUITECTURA Y APLICACIONES CLUSTER FING: ARQUITECTURA Y APLICACIONES Gerardo Ares, Pablo Ezzatti Centro de Cálculo, Instituto de Computación FACULTAD DE INGENIERÍA, UNIVERSIDAD DE LA REPÚBLICA, URUGUAY CONTENIDO Introducción Conceptos

Más detalles

Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Tipos de Esquema

Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Tipos de Esquema Los esquemas repetitivos permiten implementar iteraciones del lenguaje algorítmico (mientras, repetir, para, hasta). Podemos dividir los esquemas según: - Se conozcan el número de iteraciones a priori,

Más detalles

Optimización de Rutinas Multinivel de Álgebra Lineal en Sistemas Multicore

Optimización de Rutinas Multinivel de Álgebra Lineal en Sistemas Multicore Máster en Nuevas Tecnologías en Informática Facultad de Informática Universidad de Murcia Optimización de Rutinas Multinivel de Álgebra Lineal en Sistemas Multicore Autor: Jesús Cámara Moreno Directores:

Más detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main. LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan

Más detalles

Lusitania. Pensando en Paralelo. César Gómez Martín

Lusitania. Pensando en Paralelo. César Gómez Martín Lusitania Pensando en Paralelo César Gómez Martín cesar.gomez@cenits.es www.cenits.es Esquema Introducción a la programación paralela Por qué paralelizar? Tipos de computadoras paralelas Paradigmas de

Más detalles

Procesadores de lenguaje Tema 5 Comprobación de tipos

Procesadores de lenguaje Tema 5 Comprobación de tipos Procesadores de lenguaje Tema 5 Comprobación de tipos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Sistemas de tipos. Expresiones de tipo. Equivalencia de tipos. Sobrecarga,

Más detalles

Informática I. Código Semestre Para Ingeniería Electrónica e Ingeniería de Telecomunicaciones Profesor: Sebastián Isaza

Informática I. Código Semestre Para Ingeniería Electrónica e Ingeniería de Telecomunicaciones Profesor: Sebastián Isaza Informática I Código 2547100 Semestre 2014-2 Para Ingeniería Electrónica e Ingeniería de Telecomunicaciones Profesor: Sebastián Isaza Preguntas Informática I (2014-2) Prof. Sebastián Isaza 2 Informática

Más detalles

Estructuras de Control

Estructuras de Control Algorítmica y Lenguajes de Programación Estructuras de Control Estructuras de Control. Introducción Hasta ahora algoritmos han consistido en simples secuencias de instrucciones Existen tareas más complejas

Más detalles

Introducción a los Sistemas Multiprocesadores

Introducción a los Sistemas Multiprocesadores Introducción a los Sistemas Multiprocesadores Multiprocesadores estilo Von Neumann Modelos de Organización Modelos de Programación Clasificación de los Multiprocesadores Por qué Sistemas Multiprocesadores?

Más detalles

Programación paralela con OpenMP

Programación paralela con OpenMP Programación paralela con OpenMP Arquitectura de Computadores J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Grupo ARCOS Departamento

Más detalles

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C Sesión 1

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C Sesión 1 Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C Sesión 1 Contenidos: 1. Características generales de C 2. Edición y compilación de un programa C 3. Variables y tipos

Más detalles

Usando el Sistema Operativo

Usando el Sistema Operativo Sistemas Operativos Pontificia Universidad Javeriana Enero de 2010 Los sistemas operativos Los sistemas operativos Perspectivas del Computador Concepto general El sistema operativo es parte del software

Más detalles

Introducción a la programación: Contenido. Introducción

Introducción a la programación: Contenido. Introducción Introducción a la programación: Contenido Introducción a la programación:... 1 Introducción... 1 1. Procesamiento automatizado de información... 1 2. Concepto de algoritmo.... 2 3. Lenguajes de programación....

Más detalles

TEMA 3: El proceso de compilación, del código fuente al código máquina

TEMA 3: El proceso de compilación, del código fuente al código máquina TEMA 3: El proceso de compilación, del código fuente al código máquina 3.1 Fase de compilación y linkado (link, montado o enlace) Un programa escrito en un lenguaje de alto nivel, no puede ser ejecutado

Más detalles

CDI Arquitecturas que soportan la concurrencia. granularidad

CDI Arquitecturas que soportan la concurrencia. granularidad granularidad Se suele distinguir concurrencia de grano fino es decir, se aprovecha de la ejecución de operaciones concurrentes a nivel del procesador (hardware) a grano grueso es decir, se aprovecha de

Más detalles

Palabras reservadas de C++ y C. Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones.

Palabras reservadas de C++ y C. Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones. Palabras reservadas de C++ y C Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones. A continuación se muestra el link del listado de palabras

Más detalles

Arquitectura de Computadores II Clase #16

Arquitectura de Computadores II Clase #16 Arquitectura de Computadores II Clase #16 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2010 Organización general Superescalar Varios pipelines. 2 operaciones enteras,

Más detalles

Programación Concurrente y Paralela. Unidad 1 Introducción

Programación Concurrente y Paralela. Unidad 1 Introducción Programación Concurrente y Paralela Unidad 1 Introducción Contenido 1.1 Concepto de Concurrencia 1.2 Exclusión Mutua y Sincronización 1.3 Corrección en Sistemas Concurrentes 1.4 Consideraciones sobre el

Más detalles

Java. Introducción a la Programación Orientada a Objetos

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

Más detalles

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Introducción a Java LSUB. 30 de enero de 2013 GSYC Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial

Más detalles

2.2 Nombres, Ligado y Ámbito

2.2 Nombres, Ligado y Ámbito 2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el

Más detalles

Herramientas para el estudio de prestaciones en clusters de computación científica, aplicación en el Laboratorio de Computación Paralela

Herramientas para el estudio de prestaciones en clusters de computación científica, aplicación en el Laboratorio de Computación Paralela Introducción Herramientas Estudio Conclusiones Herramientas para el estudio de prestaciones en clusters de computación científica, aplicación en el Laboratorio de Computación Paralela Ingeniería en Informática

Más detalles

Programación. Test Autoevaluación Tema 4

Programación. Test Autoevaluación Tema 4 Programación Test Autoevaluación Tema 4 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.

Más detalles

Soluciones a ejercicios de paralelismo y concurrencia

Soluciones a ejercicios de paralelismo y concurrencia Soluciones a ejercicios de paralelismo y concurrencia J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Arquitectura de Computadores

Más detalles

Laboratorio de Arquitectura de Redes. Introducción al lenguaje C

Laboratorio de Arquitectura de Redes. Introducción al lenguaje C Laboratorio de Arquitectura de Redes Introducción al lenguaje C Introducción al lenguaje C Introducción Características del lenguaje C Funciones en C Identificadores o etiquetas Las librerías y el linkado

Más detalles

Síntesis arquitectónica y de alto nivel

Síntesis arquitectónica y de alto nivel Síntesis arquitectónica y de alto nivel Módulo 1. Concepto y fases de la Síntesis de Alto Nivel 1 Diseño de circuitos: la complejidad Tratamiento de problemas de complejidad creciente Rápido desarrollo

Más detalles

Modelos de Programación Paralela Prof. Gilberto Díaz

Modelos de Programación Paralela Prof. Gilberto Díaz Universisdad de Los Andes Facultad de Ingeniería Escuela de Sistemas Modelos de Programación Paralela Prof. Gilberto Díaz gilberto@ula.ve Departamento de Computación, Escuela de Sistemas, Facultad de Ingeniería

Más detalles

Laboratorio de Paralelismo OpenMP: ejemplos y ejercicios

Laboratorio de Paralelismo OpenMP: ejemplos y ejercicios Laboratorio de Paralelismo OpenMP: ejemplos y ejercicios > Máquinas y directorios Vamos a trabajar con el siguiente multiprocesador SMP: PowerEdge 6850 (DELL) 4 procesadores Intel Xeon 7100 de doble núcleo

Más detalles

Tema V Generación de Código

Tema V Generación de Código Tema V Generación de Código Una vez que se ha realizado la partición HW/SW y conocemos las operaciones que se van a implementar por hardware y software, debemos abordar el proceso de estas implementaciones.

Más detalles

Paralelismo en el procesador

Paralelismo en el procesador 2017 Paralelismo en el procesador ARQUITECTURA DE COMPUTADORAS ING. ELMER PADILLA AUTOR: GERARDO ROBERTO MÉNDEZ LARIOS - 20111013326 Ciudad universitaria, Tegucigalpa M.D.C., 04 de mayo del 2017. Contenido

Más detalles

Tipos de Datos de python (2ª parte):

Tipos de Datos de python (2ª parte): Tipos de Datos de python (2ª parte): Enteriormente hemos visto algunos de los tipos de datos que maneja python. Vimos: int, float, chr, str, bool También vimos como convertir datos a cada uno de estos

Más detalles

Procesadores de lenguaje Tema 8 Generación de código y optimización

Procesadores de lenguaje Tema 8 Generación de código y optimización Procesadores de lenguaje Tema 8 Generación de código y optimización Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Tipos de código objeto Operaciones básicas en la generación

Más detalles

Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++

Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++ Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++ OBJETIVO En este documento se presentan las construcciones básicas de orientación a objetos del lenguaje de programación C++, y recomendaciones

Más detalles

Procesadores de Lenguaje

Procesadores de Lenguaje Procesadores de Lenguaje Generación de código intermedio Cris%na Tirnauca Domingo Gómez Pérez DPTO. DE MATEMÁTICAS, ESTADÍSTICA Y COMPUTACIÓN Este tema se publica bajo Licencia: CreaIve Commons BY NC SA

Más detalles

BREAK: FORZAR SALIDA BUCLES FOR, WHILE, DO EN C. LOOP. STATEMENT NOT WITHIN LOOP OR SWITCH (CU00545F)

BREAK: FORZAR SALIDA BUCLES FOR, WHILE, DO EN C. LOOP. STATEMENT NOT WITHIN LOOP OR SWITCH (CU00545F) APRENDERAPROGRAMAR.COM BREAK: FORZAR SALIDA BUCLES FOR, WHILE, DO EN C. LOOP. STATEMENT NOT WITHIN LOOP OR SWITCH (CU00545F) Sección: Cursos Categoría: Curso básico de programación en lenguaje C desde

Más detalles

Adolfo J. Banchio. FaMAF, IFEG-CONICET, Universidad Nacional de Córdoba. 27 04 10 Seminario de grupo 1

Adolfo J. Banchio. FaMAF, IFEG-CONICET, Universidad Nacional de Córdoba. 27 04 10 Seminario de grupo 1 Paralelizar un Código usando OpenMP Adolfo J. Banchio FaMAF, IFEG-CONICET, Universidad Nacional de Córdoba 27 04 10 Seminario de grupo 1 Contenido Introducción Paralelización: por qué OpenMP? Qué es OpenMP?

Más detalles

TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA

TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA Ingeniería en Informática Beneficios de la programación Especificación de ejecución Características de los sistemas s Verificación de programas s 2 Bibliografía Programción

Más detalles

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 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

Más detalles

Arquitectura e Ingeniería de Computadores. Examen Parcial. 7/02/2012

Arquitectura e Ingeniería de Computadores. Examen Parcial. 7/02/2012 Apellidos Nombre Grupo: Arquitectura e Ingeniería de Computadores. Examen Parcial. 7/02/2012 Instrucciones.- Cada pregunta consta de cinco afirmaciones, y cada una de las afirmaciones puede ser cierta

Más detalles

Tema 2. El lenguaje JAVA

Tema 2. El lenguaje JAVA Tema 2. El lenguaje JAVA Nomenclatura habitual Variables Tipos de variables Tipos primitivos Referencias Arrays Operadores Operadores de Java Precedencia de operadores Sentencias de control Sentencias

Más detalles

Diseño de algoritmos paralelos

Diseño de algoritmos paralelos Diseño de algoritmos paralelos Curso 2011-2012 Esquema del capítulo Visión general de algunos algoritmos serie. Algoritmo paralelo vs. Formulación paralela Elementos de un Algoritmo paralelo Métodos de

Más detalles

OPTIMIZACIÓN DE CÓDIGO

OPTIMIZACIÓN DE CÓDIGO OPTIMIZACIÓN DE CÓDIGO INTRODUCCION La finalidad de la optimización de código es producir un código objeto lo más eficiente posible. En algunos casos también se realiza una optimización del código intermedio.

Más detalles

Introducción. El proceso de traducción

Introducción. El proceso de traducción Toda compilación es un proceso de transformación paulatina que convierte un programa escrito en un lenguaje fuente de alto nivel en otro programa escrito en un lenguaje objeto de bajo nivel. Ese proceso

Más detalles

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E 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

Más detalles

Programación: Estructuras de Control

Programación: Estructuras de Control Programación: 2 Estructuras de Control Contenido 2.1.- Introducción 2.2.- Estructuras de Selección 2.2.1.- Sentencia if 2.2.2.- Sentencia switch 2.3.- Estructuras de Iteración 2.3.1.- Sentencia while 2.3.2.-

Más detalles

Primeros pasos con CUDA. Clase 1

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

Más detalles

Sistema Operativo. Repaso de Estructura de Computadores. Componentes Hardware. Elementos Básicos

Sistema Operativo. Repaso de Estructura de Computadores. Componentes Hardware. Elementos Básicos Sistema Operativo Repaso de Estructura de Computadores Capítulo 1 Explota los recursos hardware de uno o más procesadores Proporciona un conjunto de servicios a los usuarios del sistema Gestiona la memoria

Más detalles

Ingeniería del software I 9 - Diseño detallado

Ingeniería del software I 9 - Diseño detallado Diseño detallado Ingeniería del software I 9 - Diseño detallado El diseño de alto nivel no especifica la lógica. Esto es incumbencia del diseño detallado. En este sentido, una notación textual provee mejor

Más detalles

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute. Los problemas que se plantean en la vida diaria suelen ser resueltos mediante el uso de la capacidad intelectual y la habilidad manual del ser humano. La utilización de la computadora en la resolución

Más detalles

Ahora vamos a hablar de la CPU, la Unidad Central de Procesamiento.

Ahora vamos a hablar de la CPU, la Unidad Central de Procesamiento. Ahora vamos a hablar de la CPU, la Unidad Central de Procesamiento. La CPU es el componente que ejecuta las instrucciones del programa alojado en la memoria del ordenador. Los procesadores están fabricados

Más detalles

Procesadores de lenguaje Tema 1 Introducción a los compiladores

Procesadores de lenguaje Tema 1 Introducción a los compiladores Procesadores de lenguaje Tema 1 Introducción a los compiladores Salvador Sánchez, Daniel Rodríguez Departamento de Ciencias de la Computación Universidad de Alcalá Resumen del tema Traductores Estructura

Más detalles

CAPÍTULO 2 PROCESADORES SUPERESCALARES

CAPÍTULO 2 PROCESADORES SUPERESCALARES CAPÍTULO 2 PROCESADORES SUPERESCALARES INTRODUCCIÓN Características de los procesadores superescalares Paralelismo Diversificación Dinamismo Arquitectura de un procesador superescalar genérico Características

Más detalles

Guillermo Román Díez

Guillermo Román Díez Concurrencia Creación de Procesos en Java Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Creación de Procesos en Java 1/18 Concurrencia

Más detalles

Cap.2. Kernel Sistemas Operativos - Viña del Mar.

Cap.2. Kernel Sistemas Operativos - Viña del Mar. Cap.2. Kernel Sistemas Operativos - Viña del Mar. Maximiliano Osorio mosorio@inf.utfsm.cl Universidad Técnica Federico Santa Maria 19 de agosto de 2017 1 / 44 Tabla de contenidos 1 Proceso Protección de

Más detalles

ESTRUCTURAS DE CONTROL

ESTRUCTURAS DE CONTROL ESTRUCTURAS DE CONTROL En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa. Con las estructuras de control se puede: De

Más detalles

Introducción al Diseño de Compiladores. Año

Introducción al Diseño de Compiladores. Año Introducción al Diseño de Compiladores Año 2003 1 BIBLIOGRAFÍA [AHO] Compilers. Principles, Techniques, and Tools Aho, Sethi; Adisson-Wesley 1986 [TEU] Compiladores: Conceptos fundamentales. Teufel ; Addison

Más detalles

Introducción al lenguaje C

Introducción al lenguaje C Introducción al lenguaje C Ampliación de Informática Belarmino Pulido Junquera Índice 1. Presentación del lenguaje C 2. Estructura de un programa en C 3. Tipos de datos escalares 4. Operadores básicos

Más detalles

Programación I.

Programación I. Programación I toni.navarrete@upf.edu jesus.ibanez@upf.edu Profesores teoría Toni Navarrete e-mail: despacho: toni.navarrete@upf.edu 371 Jesús Ibáñez e-mail: despacho: jesus.ibanez@upf.edu 381 Introducción

Más detalles

Introducción a la Programación

Introducción a la Programación Introducción a la Programación Fundamentos de Programación Ingeniería Informática en Sistemas de Información Alicia Troncoso 1 Contenido l Introducción l Mi primer programa l Etapas a seguir en la programación

Más detalles

Introducción al lenguaje C

Introducción al lenguaje C Introducción al lenguaje C Programación 2 Profesorado de Informática CeRP del Suroeste, Colonia, Uruguay 15 de marzo de 2016 Programación 2 Introducción al lenguaje C 15 de marzo de 2016 1 / 34 Objetivos

Más detalles

ESTRUCTURA DE DATOS. Memoria estática Memoria dinámica Tipo puntero Declaración de punteros Gestión de memoria dinámica Resumen ejemplo

ESTRUCTURA DE DATOS. Memoria estática Memoria dinámica Tipo puntero Declaración de punteros Gestión de memoria dinámica Resumen ejemplo ESTRUCTURA DE DATOS Memoria estática Memoria dinámica Tipo puntero Declaración de punteros Gestión de memoria dinámica Resumen ejemplo DATOS ESTÁTICOS Su tamaño y forma es constante durante la ejecución

Más detalles

Tema 5. Soporte lógico de computadoras.

Tema 5. Soporte lógico de computadoras. Tema 5. Soporte lógico de computadoras. 5.1 Conceptos generales Como se ha visto previamente, un ordenador consta de dos partes, una la parte física, conocida como "Hardware" y otra, la parte lógica denominada

Más detalles

Memoria compartida simétrica

Memoria compartida simétrica Memoria compartida simétrica Arquitectura de Computadores J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Grupo ARCOS Departamento

Más detalles

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual.

La última versión disponible cuando se redactó este manual era la 5 Beta (versión ), y sobre ella versa este manual. Manual de Dev-C++ 4.9.9.2 Página 1 de 11 Introducción Dev-C++ es un IDE (entorno de desarrollo integrado) que facilita herramientas para la creación y depuración de programas en C y en C++. Además, la

Más detalles

Uso de recursos compartidos

Uso de recursos compartidos Uso de recursos compartidos Cada proceso o hebra se ejecuta de forma independiente. Sin embargo, cuando varias hebras (o procesos) han de acceder a un mismo recurso, se ha de coordinar el acceso a ese

Más detalles

2º curso / 2º cuatr. Arquitectura de Computadores. Grado en Ing. Informática. Seminario 1. Herramientas de programación paralela I: Directivas OpenMP

2º curso / 2º cuatr. Arquitectura de Computadores. Grado en Ing. Informática. Seminario 1. Herramientas de programación paralela I: Directivas OpenMP 2º curso / 2º cuatr. 2º curso / 2º cuatr. Grado en Ing. Informática Arquitectura de Computadores Seminario 1. Herramientas de programación paralela I: Directivas OpenMP 2 Qué es OpenMP? De dónde viene

Más detalles

Estructuras de control selectivas

Estructuras de control selectivas Práctica 3 Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 2.0.2 Concepto de sentencia y estructura de control El cuerpo de los métodos

Más detalles

Lección 2 Introducción al lenguaje C

Lección 2 Introducción al lenguaje C Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)

Más detalles

PARTE II PROGRAMACION CON THREADS EN C

PARTE II PROGRAMACION CON THREADS EN C PARTE II PROGRAMACION CON THREADS EN C II.1 INTRODUCCION Una librería o paquete de threads permite escribir programas con varios puntos simultáneos de ejecución, sincronizados a través de memoria compartida.

Más detalles

Lenguajes de Programación I

Lenguajes de Programación I Lenguajes de Programación I Tipos de Datos Compuestos Ernesto Hernández-Novich Copyright c 2006-2010 Registros Registros agrupan datos de tipos heterogéneos para almacenarlos y manipularlos

Más detalles

Compiladores e intérpretes Introducción

Compiladores e intérpretes Introducción Introducción Profesor: Eridan Otto Introducción Perspectiva histórica Motivación Definiciones Componentes y fases de un compilador 1 Introducción Definiciónes básicas Traductor: desde un punto de vista

Más detalles

Estructuras de control

Estructuras de control Estructuras de control Introducción Los algoritmos vistos hasta el momento han consistido en simples secuencias de instrucciones; sin embargo, existen tareas más complejas que no pueden ser resueltas empleando

Más detalles

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs. Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1

Más detalles

Lenguaje de programación. COMPILADORES Unidad I: Introducción al proceso de compilación

Lenguaje de programación. COMPILADORES Unidad I: Introducción al proceso de compilación COMPILADORES Unidad I: Introducción al proceso de compilación Flor Prof. Flor Narciso GIDyC-Departamento de Computación LABSIULA-Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de

Más detalles

Tema 3: Resolución de problemas con computadoras 2014

Tema 3: Resolución de problemas con computadoras 2014 Resolución de problemas La Informática puede definirse también como la ciencia que estudia el análisis y resolución de problemas utilizando computadoras. La computadora es una máquina digital con capacidad

Más detalles