New addresses to HPCS programming. Threads and locks are "dead". Conferencia.uca.23.03.2012.
Concurrency or Hard Computing of today meets High Productivity Computing Systems.
El documento describe la memoria transaccional, que permite la ejecución atómica de conjuntos de instrucciones de carga y almacenamiento para simplificar la programación paralela. Explica las transacciones, su funcionamiento y propiedades ACID, así como implementaciones de hardware, software y híbridas. También presenta instrucciones como load y store transaccionales, y ejemplos de arquitectura y código con transacciones.
Este documento describe un método para evaluar la resolución en gammacámaras mediante el uso de la Función de Transferencia de Modulación (MTF). El método implica colocar planchas de plomo para generar bordes abruptos y usarlas para calcular la MTF a través de la Función de Respuesta del Borde, la Función de Dispersión de Línea y la Transformada Discreta de Fourier. El objetivo es comparar la resolución entre detectores de una misma gammacámara y entre gammacámaras diferentes para control de calidad. Los resultados muestran
Este documento describe los pasos para especificar software basado en componentes utilizando UML. Explica cómo crear el Modelo de Información de Interfaz (MII) para describir las interfaces de los componentes sin revelar detalles de implementación. También cubre la especificación de operaciones, el uso de pre y poscondiciones con OCL, y un ejemplo de MII para la interfaz de gestión de reservas de hoteles.
El documento trata sobre la historia y evolución de la computación. Explica que la computación se refiere al estudio de sistemas automatizados de manejo de información usando herramientas diseñadas para ese propósito. Luego describe las primeras máquinas mecánicas para contar como el ábaco y la Pascalina. Más adelante detalla las cinco generaciones de computadoras desde 1950 hasta la actualidad, describiendo los avances tecnológicos clave en cada era como la introducción de los transistores, circuitos integrados y micropro
Este documento presenta un taller sobre herramientas informáticas. Incluye instrucciones para los estudiantes sobre cómo completar el taller, guardarlo, publicarlo en SlideShare y enviar el link de correo electrónico. El taller contiene ejercicios como crear una matriz sobre las generaciones de computadoras, argumentar sobre la importancia actual y futura de los computadores, explicar características de la Web 2.0 y crear un mapa conceptual sobre hardware, software y sistemas operativos.
El documento describe diferentes tipos de computadoras, incluyendo computadoras analógicas, híbridas, supercomputadoras, centrales, de escritorio y portátiles. Explica las características de cada tipo y cómo se diferencian entre sí, por ejemplo, las analógicas usan señales físicas mientras que las digitales usan números.
La computación ha evolucionado desde dispositivos mecánicos como el ábaco hasta computadoras modernas. La Pascalina de 1642 fue un dispositivo temprano para realizar cálculos aritméticos básicos. Las primeras generaciones de computadoras desde 1950 hasta mediados de los 70 utilizaron tubos de vacío y transistores y se caracterizaron por procesamiento secuencial y limitaciones de memoria. Las generaciones posteriores introdujeron circuitos integrados, procesamiento concurrente, y lenguajes de programación más avanzados. En las últimas décadas
El documento describe la memoria transaccional, que permite la ejecución atómica de conjuntos de instrucciones de carga y almacenamiento para simplificar la programación paralela. Explica las transacciones, su funcionamiento y propiedades ACID, así como implementaciones de hardware, software y híbridas. También presenta instrucciones como load y store transaccionales, y ejemplos de arquitectura y código con transacciones.
Este documento describe un método para evaluar la resolución en gammacámaras mediante el uso de la Función de Transferencia de Modulación (MTF). El método implica colocar planchas de plomo para generar bordes abruptos y usarlas para calcular la MTF a través de la Función de Respuesta del Borde, la Función de Dispersión de Línea y la Transformada Discreta de Fourier. El objetivo es comparar la resolución entre detectores de una misma gammacámara y entre gammacámaras diferentes para control de calidad. Los resultados muestran
Este documento describe los pasos para especificar software basado en componentes utilizando UML. Explica cómo crear el Modelo de Información de Interfaz (MII) para describir las interfaces de los componentes sin revelar detalles de implementación. También cubre la especificación de operaciones, el uso de pre y poscondiciones con OCL, y un ejemplo de MII para la interfaz de gestión de reservas de hoteles.
El documento trata sobre la historia y evolución de la computación. Explica que la computación se refiere al estudio de sistemas automatizados de manejo de información usando herramientas diseñadas para ese propósito. Luego describe las primeras máquinas mecánicas para contar como el ábaco y la Pascalina. Más adelante detalla las cinco generaciones de computadoras desde 1950 hasta la actualidad, describiendo los avances tecnológicos clave en cada era como la introducción de los transistores, circuitos integrados y micropro
Este documento presenta un taller sobre herramientas informáticas. Incluye instrucciones para los estudiantes sobre cómo completar el taller, guardarlo, publicarlo en SlideShare y enviar el link de correo electrónico. El taller contiene ejercicios como crear una matriz sobre las generaciones de computadoras, argumentar sobre la importancia actual y futura de los computadores, explicar características de la Web 2.0 y crear un mapa conceptual sobre hardware, software y sistemas operativos.
El documento describe diferentes tipos de computadoras, incluyendo computadoras analógicas, híbridas, supercomputadoras, centrales, de escritorio y portátiles. Explica las características de cada tipo y cómo se diferencian entre sí, por ejemplo, las analógicas usan señales físicas mientras que las digitales usan números.
La computación ha evolucionado desde dispositivos mecánicos como el ábaco hasta computadoras modernas. La Pascalina de 1642 fue un dispositivo temprano para realizar cálculos aritméticos básicos. Las primeras generaciones de computadoras desde 1950 hasta mediados de los 70 utilizaron tubos de vacío y transistores y se caracterizaron por procesamiento secuencial y limitaciones de memoria. Las generaciones posteriores introdujeron circuitos integrados, procesamiento concurrente, y lenguajes de programación más avanzados. En las últimas décadas
La capa de presentación se encarga de representar la información de forma reconocible al recibirla, realizando funciones como el formateo de datos, cifrado y compresión. Establece estándares para la presentación de imágenes, sonido y video. También es responsable de traducir entre diferentes códigos de caracteres y formatos matemáticos para permitir la comunicación entre dispositivos.
La capa de presentación se encarga de representar la información de forma reconocible al recibirla, realizando funciones como el formateo de datos, cifrado y compresión. Establece estándares para la presentación de imágenes, sonido y video. También es responsable de traducir entre diferentes códigos de caracteres y formatos matemáticos para permitir la comunicación entre dispositivos.
La capa de presentación se encarga de representar la información de forma reconocible al recibirla, realizando funciones como el formateo de datos, cifrado y compresión. Establece estándares para la presentación de imágenes, sonido y video. También es responsable de traducir entre diferentes códigos de caracteres y formatos matemáticos para permitir la comunicación entre dispositivos.
El documento proporciona instrucciones para varios talleres sobre conceptos básicos de informática. En el primer taller, se pide investigar términos como teoría del caos, holografía y transistores ópticos. También se pide identificar generaciones de computadoras y programas sobresalientes. En el segundo taller, se pide identificar partes de una computadora, diferenciar entre computadoras analógicas y digitales, y explicar conceptos como memoria RAM, ROM y caché.
El documento proporciona instrucciones para varios talleres sobre conceptos básicos de informática. En el primer taller, se pide investigar términos como teoría del caos, holografía y transistores ópticos. También se pide identificar generaciones de computadoras y programas sobresalientes. En el segundo taller, se pide identificar partes de una computadora, diferenciar entre computadoras analógicas y digitales, y explicar conceptos como memoria RAM, ROM y caché.
Este documento resume la historia de los sistemas operativos desde la década de 1940 hasta la década de 1990. Comienza describiendo los primeros sistemas operativos de la década de 1950 como el monitor residente y el procesamiento por lotes. Luego describe los avances de las décadas siguientes como la multiprogramación, el tiempo compartido y los sistemas en tiempo real. Finalmente, resume los principales sistemas operativos desarrollados en cada década como CP/M, Unix, MS-DOS, Mac OS y GNU/Linux.
Este documento presenta un resumen de las tecnologías de la información y la comunicación. Describe las características de las cuarta y quinta generaciones de computadoras, incluyendo el desarrollo del microprocesador, las memorias RAM, los sistemas operativos gráficos y los lenguajes de programación. También resume los hitos y proyectos clave de estas generaciones entre las décadas de 1970 y 1990.
Los procesadores vectoriales pueden ejecutar operaciones matemáticas sobre múltiples datos de forma simultánea, a diferencia de los procesadores escalares que solo pueden manejar un dato a la vez. Son útiles para aplicaciones científicas que requieren altas velocidades de cómputo, como la predicción meteorológica. Una sola instrucción vectorial representa muchas operaciones aritméticas, lo que reduce el tráfico en la memoria y mejora el rendimiento.
El documento resume la evolución de los sistemas operativos a través de cinco generaciones, desde los primeros sistemas operativos de la década de 1940 hasta los sistemas operativos modernos. Detalla los hitos clave en cada generación, incluidos los primeros sistemas sin sistema operativo, el desarrollo de sistemas operativos de procesamiento por lotes en la segunda generación, la introducción de la multiprogramación en la tercera generación, el surgimiento de sistemas operativos de tiempo compartido en la cuarta generación y el desar
El documento resume la historia de la computación desde la primera generación en 1950 hasta la quinta generación actual, describiendo las características clave de cada generación como el uso de válvulas de vacío, transistores, circuitos integrados y microprocesadores. También analiza las expectativas del futuro de la computación, incluidos posibles avances en inteligencia artificial y comunicaciones.
El documento resume la historia de la computación desde la primera generación en 1950 hasta la quinta generación actual, describiendo las características clave de cada generación como el uso de válvulas de vacío, transistores, circuitos integrados y microprocesadores. También analiza las expectativas del futuro de la computación, incluidos posibles avances en inteligencia artificial y comunicaciones.
El documento resume la historia de la computación desde la primera generación en 1950 hasta la quinta generación actual, describiendo las características clave de cada generación como el uso de válvulas de vacío, transistores, circuitos integrados y microprocesadores. También incluye un glosario que define términos técnicos importantes como firmware, tipos de letra, PostScript y componentes de hardware como tarjetas madre y memoria RAM.
El documento resume la historia de la computación desde la primera generación en 1950 hasta la quinta generación actual, describiendo las características clave de cada generación como el uso de válvulas de vacío, transistores, circuitos integrados y microprocesadores. También analiza las expectativas del futuro de la computación, incluidos posibles avances en inteligencia artificial y comunicaciones.
Generaciones de sistemas operativos RAFA CUESTARafa Cuesta
Este documento describe las diferentes generaciones de sistemas operativos desde la generación cero hasta la sexta generación actual. Comienza explicando que un sistema operativo ofrece un control ordenado de los procesadores, memorias y dispositivos de entrada/salida entre los programas. Luego resume cada generación histórica, destacando los cambios tecnológicos clave como la introducción de la multiprogramación y los sistemas en tiempo compartido. Finalmente, describe las características de la sexta generación actual como procesadores más rápidos, interfaces gráficas y
La primera generación de computadoras usaba tubos de vacío y tarjetas perforadas. La segunda generación introdujo los transistores. La tercera generación vio el desarrollo de los circuitos integrados. La cuarta generación trajo el microprocesador y circuitos más complejos en un solo chip. La quinta generación se enfoca en desarrollar computadoras con interfaces más naturales y capacidades de inteligencia artificial.
Este documento describe diferentes tipos de memoria y unidades de almacenamiento, incluyendo su evolución, capacidad y tecnología subyacente. Explica las primeras formas de almacenamiento como tarjetas perforadas y tambores magnéticos, así como memorias RAM tempranas basadas en tubos de rayos catódicos. También cubre discos duros, unidades flash, almacenamiento en la nube y más, con un enfoque en comprender las diferencias entre almacenamiento primario, secundario, electrónico, magnético y otros tip
El documento describe las seis generaciones de computadoras, desde la primera generación en 1946 hasta la actualidad. Explica las características físicas, sistemas operativos y ejemplos representativos de cada generación. También define hardware, software de aplicación, software de base y herramientas ofimáticas.
El documento describe las seis generaciones de computadoras, desde la primera generación en 1946 hasta la actualidad. Explica las características físicas, sistemas operativos y ejemplos representativos de cada generación. También define hardware, software de aplicación, software de base y herramientas ofimáticas.
El documento describe la evolución de las generaciones de computadoras y sistemas operativos a través de los años. Detalla las características de las primeras cinco generaciones de computadoras desde 1950 hasta la actualidad, así como los principales sistemas operativos desarrollados para cada generación como respuesta a las necesidades tecnológicas del momento.
El software no se degrada ni necesita de un mantenimiento físico periódico, como otras
obras de ingeniería civil o electrónica, sin embargo, el software está en continua evolución y el proceso de su mantenimiento puede ser muy difícil.
Aquí se presentan las principales técnicas actuales apara abordar el mantenimiento correcto de un sistema software complejo en sus cuatro facetas más importantes: las funciones diarias del sistema, las modificaciones del sistema, perfeccionamiento de su funcionalidad y
conservación de los niveles de desempeño. Además se introducen algunas medidas basadas en modelos (Belady--Lehman, Pfleeger, COCOMO,...) para evaluar lo efectivo que puede ser el proceso de mantenimiento.
Este documento describe diferentes estrategias de prueba para software orientado a objetos y aplicaciones web. En la sección de software orientado a objetos, describe pruebas basadas en fallos, pruebas aleatorias, pruebas de partición, pruebas de integración y pruebas que implican múltiples clases. En la sección de aplicaciones web, describe pruebas de contenidos, pruebas de bases de datos, pruebas de interfaz de usuario, pruebas de componentes, pruebas de navegabilidad, pruebas de configuración y seguridad
La capa de presentación se encarga de representar la información de forma reconocible al recibirla, realizando funciones como el formateo de datos, cifrado y compresión. Establece estándares para la presentación de imágenes, sonido y video. También es responsable de traducir entre diferentes códigos de caracteres y formatos matemáticos para permitir la comunicación entre dispositivos.
La capa de presentación se encarga de representar la información de forma reconocible al recibirla, realizando funciones como el formateo de datos, cifrado y compresión. Establece estándares para la presentación de imágenes, sonido y video. También es responsable de traducir entre diferentes códigos de caracteres y formatos matemáticos para permitir la comunicación entre dispositivos.
La capa de presentación se encarga de representar la información de forma reconocible al recibirla, realizando funciones como el formateo de datos, cifrado y compresión. Establece estándares para la presentación de imágenes, sonido y video. También es responsable de traducir entre diferentes códigos de caracteres y formatos matemáticos para permitir la comunicación entre dispositivos.
El documento proporciona instrucciones para varios talleres sobre conceptos básicos de informática. En el primer taller, se pide investigar términos como teoría del caos, holografía y transistores ópticos. También se pide identificar generaciones de computadoras y programas sobresalientes. En el segundo taller, se pide identificar partes de una computadora, diferenciar entre computadoras analógicas y digitales, y explicar conceptos como memoria RAM, ROM y caché.
El documento proporciona instrucciones para varios talleres sobre conceptos básicos de informática. En el primer taller, se pide investigar términos como teoría del caos, holografía y transistores ópticos. También se pide identificar generaciones de computadoras y programas sobresalientes. En el segundo taller, se pide identificar partes de una computadora, diferenciar entre computadoras analógicas y digitales, y explicar conceptos como memoria RAM, ROM y caché.
Este documento resume la historia de los sistemas operativos desde la década de 1940 hasta la década de 1990. Comienza describiendo los primeros sistemas operativos de la década de 1950 como el monitor residente y el procesamiento por lotes. Luego describe los avances de las décadas siguientes como la multiprogramación, el tiempo compartido y los sistemas en tiempo real. Finalmente, resume los principales sistemas operativos desarrollados en cada década como CP/M, Unix, MS-DOS, Mac OS y GNU/Linux.
Este documento presenta un resumen de las tecnologías de la información y la comunicación. Describe las características de las cuarta y quinta generaciones de computadoras, incluyendo el desarrollo del microprocesador, las memorias RAM, los sistemas operativos gráficos y los lenguajes de programación. También resume los hitos y proyectos clave de estas generaciones entre las décadas de 1970 y 1990.
Los procesadores vectoriales pueden ejecutar operaciones matemáticas sobre múltiples datos de forma simultánea, a diferencia de los procesadores escalares que solo pueden manejar un dato a la vez. Son útiles para aplicaciones científicas que requieren altas velocidades de cómputo, como la predicción meteorológica. Una sola instrucción vectorial representa muchas operaciones aritméticas, lo que reduce el tráfico en la memoria y mejora el rendimiento.
El documento resume la evolución de los sistemas operativos a través de cinco generaciones, desde los primeros sistemas operativos de la década de 1940 hasta los sistemas operativos modernos. Detalla los hitos clave en cada generación, incluidos los primeros sistemas sin sistema operativo, el desarrollo de sistemas operativos de procesamiento por lotes en la segunda generación, la introducción de la multiprogramación en la tercera generación, el surgimiento de sistemas operativos de tiempo compartido en la cuarta generación y el desar
El documento resume la historia de la computación desde la primera generación en 1950 hasta la quinta generación actual, describiendo las características clave de cada generación como el uso de válvulas de vacío, transistores, circuitos integrados y microprocesadores. También analiza las expectativas del futuro de la computación, incluidos posibles avances en inteligencia artificial y comunicaciones.
El documento resume la historia de la computación desde la primera generación en 1950 hasta la quinta generación actual, describiendo las características clave de cada generación como el uso de válvulas de vacío, transistores, circuitos integrados y microprocesadores. También analiza las expectativas del futuro de la computación, incluidos posibles avances en inteligencia artificial y comunicaciones.
El documento resume la historia de la computación desde la primera generación en 1950 hasta la quinta generación actual, describiendo las características clave de cada generación como el uso de válvulas de vacío, transistores, circuitos integrados y microprocesadores. También incluye un glosario que define términos técnicos importantes como firmware, tipos de letra, PostScript y componentes de hardware como tarjetas madre y memoria RAM.
El documento resume la historia de la computación desde la primera generación en 1950 hasta la quinta generación actual, describiendo las características clave de cada generación como el uso de válvulas de vacío, transistores, circuitos integrados y microprocesadores. También analiza las expectativas del futuro de la computación, incluidos posibles avances en inteligencia artificial y comunicaciones.
Generaciones de sistemas operativos RAFA CUESTARafa Cuesta
Este documento describe las diferentes generaciones de sistemas operativos desde la generación cero hasta la sexta generación actual. Comienza explicando que un sistema operativo ofrece un control ordenado de los procesadores, memorias y dispositivos de entrada/salida entre los programas. Luego resume cada generación histórica, destacando los cambios tecnológicos clave como la introducción de la multiprogramación y los sistemas en tiempo compartido. Finalmente, describe las características de la sexta generación actual como procesadores más rápidos, interfaces gráficas y
La primera generación de computadoras usaba tubos de vacío y tarjetas perforadas. La segunda generación introdujo los transistores. La tercera generación vio el desarrollo de los circuitos integrados. La cuarta generación trajo el microprocesador y circuitos más complejos en un solo chip. La quinta generación se enfoca en desarrollar computadoras con interfaces más naturales y capacidades de inteligencia artificial.
Este documento describe diferentes tipos de memoria y unidades de almacenamiento, incluyendo su evolución, capacidad y tecnología subyacente. Explica las primeras formas de almacenamiento como tarjetas perforadas y tambores magnéticos, así como memorias RAM tempranas basadas en tubos de rayos catódicos. También cubre discos duros, unidades flash, almacenamiento en la nube y más, con un enfoque en comprender las diferencias entre almacenamiento primario, secundario, electrónico, magnético y otros tip
El documento describe las seis generaciones de computadoras, desde la primera generación en 1946 hasta la actualidad. Explica las características físicas, sistemas operativos y ejemplos representativos de cada generación. También define hardware, software de aplicación, software de base y herramientas ofimáticas.
El documento describe las seis generaciones de computadoras, desde la primera generación en 1946 hasta la actualidad. Explica las características físicas, sistemas operativos y ejemplos representativos de cada generación. También define hardware, software de aplicación, software de base y herramientas ofimáticas.
El documento describe la evolución de las generaciones de computadoras y sistemas operativos a través de los años. Detalla las características de las primeras cinco generaciones de computadoras desde 1950 hasta la actualidad, así como los principales sistemas operativos desarrollados para cada generación como respuesta a las necesidades tecnológicas del momento.
El software no se degrada ni necesita de un mantenimiento físico periódico, como otras
obras de ingeniería civil o electrónica, sin embargo, el software está en continua evolución y el proceso de su mantenimiento puede ser muy difícil.
Aquí se presentan las principales técnicas actuales apara abordar el mantenimiento correcto de un sistema software complejo en sus cuatro facetas más importantes: las funciones diarias del sistema, las modificaciones del sistema, perfeccionamiento de su funcionalidad y
conservación de los niveles de desempeño. Además se introducen algunas medidas basadas en modelos (Belady--Lehman, Pfleeger, COCOMO,...) para evaluar lo efectivo que puede ser el proceso de mantenimiento.
Este documento describe diferentes estrategias de prueba para software orientado a objetos y aplicaciones web. En la sección de software orientado a objetos, describe pruebas basadas en fallos, pruebas aleatorias, pruebas de partición, pruebas de integración y pruebas que implican múltiples clases. En la sección de aplicaciones web, describe pruebas de contenidos, pruebas de bases de datos, pruebas de interfaz de usuario, pruebas de componentes, pruebas de navegabilidad, pruebas de configuración y seguridad
Este documento presenta una introducción a la planificación de pruebas de software y estrategias de prueba para software convencional. Explica conceptos clave como verificación y validación, y tipos de pruebas como pruebas unitarias, de integración, funcionales y de rendimiento. También discute la importancia de las pruebas de software para la calidad y los costos asociados con defectos de software.
El diseño de una arquitectura de software consiste en una actividad inicial de la fase de diseño de un sistema software cuyo objetivo es identificar los subsistemas y
establecer un marco de trabajo para gestionar correctamente el control y la comunicación de dichos subsistemas a lo largo de todo el ciclo de vida del software.
This document discusses automating the transformation of BPMN models to CSP+T specifications. It begins with an introduction that outlines the motivation, notations, previous work and the authors' approach. It then discusses formalizing BPMN by defining the semantics of BPMN modeling entities and a BPMN subset. Finally, it discusses basic ideas for proofs and implementation using a case study and a BTransformer tool. The overall goal is to enable formal verification of business processes by translating BPMN models to a formal specification language.
En este curso se revisa la importancia del Modelado de Procesos de Negocio o Business Process Modelling para varios dominios de aplicación y se estudian los conceptos,modelos, procesos, técnicas y herramientas relacionadas con BPM, basadas en UML, y sus extensiones aplicadas al proceso de desarrolo de software.
José Luis Jiménez Rodríguez
Junio 2024.
“La pedagogía es la metodología de la educación. Constituye una problemática de medios y fines, y en esa problemática estudia las situaciones educativas, las selecciona y luego organiza y asegura su explotación situacional”. Louis Not. 1993.
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...Juan Martín Martín
Criterios de corrección y soluciones al examen de Geografía de Selectividad (EvAU) Junio de 2024 en Castilla La Mancha.
Soluciones al examen.
Convocatoria Ordinaria.
Examen resuelto de Geografía
conocer el examen de geografía de julio 2024 en:
https://blogdegeografiadejuan.blogspot.com/2024/06/soluciones-examen-de-selectividad.html
http://blogdegeografiadejuan.blogspot.com/
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLMJuan Martín Martín
Examen de Selectividad de la EvAU de Geografía de junio de 2023 en Castilla La Mancha. UCLM . (Convocatoria ordinaria)
Más información en el Blog de Geografía de Juan Martín Martín
http://blogdegeografiadejuan.blogspot.com/
Este documento presenta un examen de geografía para el Acceso a la universidad (EVAU). Consta de cuatro secciones. La primera sección ofrece tres ejercicios prácticos sobre paisajes, mapas o hábitats. La segunda sección contiene preguntas teóricas sobre unidades de relieve, transporte o demografía. La tercera sección pide definir conceptos geográficos. La cuarta sección implica identificar elementos geográficos en un mapa. El examen evalúa conocimientos fundamentales de geografía.
pueblos originarios de chile presentacion twinkl.pptx
Concurrency or "Hard Computing"
1. Quincena
Ingeniería 2012
Concurrencia o
“Hardcomputing”
Manuel I. Capel Tuñón
Departmento Lenguajes y Sistemas,
Universidad de Granada,
ETSIIT - Aynadamar Campus,
18071 Granada.
manuelcapel@ugr.es
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 1
2. Índice
Historia de la Concurrencia
Paralelismo, Sincronización y Máximo Rendimiento
”To Thread or Not to Thread”
Memoria Compartida, Paso de Mensajes y Coordinación
Una Solución de Compromiso
Computación de Alta Productividad
Paralelismo Dirigido por Tareas
Decálogo para programar multinúcleos
Conclusiones
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 2
3. I. Historia de la Historia
Concurrencia Objetos y Concurrencia
Modelos de “Monitores”
Mezcla de paradigmas:
funcional, concurrente,
2001
Orca (Easdown, 1995 )
Época dorada de los 1993 Python (Tanembaum A
2001) B
“programadores de
sistemas” Amoeba (Tanembaum, S
…1985 WWW (Berners-Lee, 2000) T
Caillau, 1991) R
Java (Goslin et al. 1994) A
Diseño sistemas Erlang (Eriksson 1986) C
operativos Occam (May 1983) C
multiprogramación …1980 I
Ada (DoD 1980, 1995)
Ó
… 1970 Concurrent Pascal (Brinch-Hansen 1982) N
Mesa (Lampson, Redell 1980)
Modula 2, Modula 3 (Wirth 1980)
Actor Model (Hewitt 1970)
RC4000 (Brinch-Hansen 1970) Evolución de los
196
8 “Proceso” (Wulf 1969) lenguajes de la
THE (Dijkstra 1968) Prog. Concurrente
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 3
4. Historia
Procesadores Multinúcleo
El computador puede obtener con varias tareas a
la vez la misma eficiencia que con 1 tarea
Ley Amdahl (1967):
1
A( f , S) =
(1 − f ) + ( f )
S
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 4
5. Historia
Procesadores Multinúcleo II
Ley Amdahl no sirve para arquitecturas masivas-
paralelas sobre grandes conjuntos de datos
Ley Gustafson-Barsis: A ( f , S ) = s ' + ( p ' × n)
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 5
6. Paralelismo, Sincron..
II. Paralelismo, Sincronización y
Máximo Rendimiento
¿Se puede
obtener el Reducción de latencia: creación dinámica
máximo
rendimiento
paralelo sin de hebras de ejecución en servidores
utilizar hebras
ni paso de
mensajes? Impedir condiciones de carrera en acceso
a datos comunes: paso de mensajes
“We cannot longer count on the speed of
processors increasing exponentially…we
have to find ways to take advantage of
increasingly abundant number of cores”
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 6
7. Multithreading
El esfuerzo del programador
tendría que centrarse más
III. “To Thread or Not to Thread”
en identificar el potencial de
paralelización del programa
que en programar un
Programación paralela con múltiples hebras
complejo protocolo para
no escala con el número degestionar los hebras,
núcleos
equilibrar la carga de los
Se puede adoptar un estilo SPMD o SIMD, que
núcleos, etc.
escala mejor
Problemas adicionales:
No siempre el código susceptible de
paralelización posee la misma granularidad
Difícil programación: crear pools de hebras,
asignarles tareas, equilibrar la carga …
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 7
8. Memoria, mensajes…
IV.Memoria Compartida, Paso de Mensaj
y Coordinación
Comunicación a través de la memoria de los procesos
produce “condiciones de carrera”
Se pueden sincronizar los accesos (semáforos…), pero
aparecen bloqueos vivos e interbloqueos
Resultado previsible: muy baja productividad
Sustituir secciones críticas y sus protocolos por colas de
mensajes (fifos, ...)
Tipo de comunicación que escala bien en multinúcleos
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 8
9. Memoria, mensajes…
“message passing is harmful to
parallel programming as the goto
¿Considerando el paso de mensajes
is harmful to sequential
programming” (Gorlatch)
pernicioso para PP?
Comunicación con Paso de Mensajes (CPM) ,
inadecuada con paralelismo dirigido por los datos y
puede producir inversión de control
El programa puede degenerar en un conjunto de
manejadores de hebras de activación imprevisible
Similar a programar con saltos incondicionales de
control: el flujo de mensajes deviene incontrolable!
El esfuerzo de escribir un programa es muy alto
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 9
10. Memoria, Solución…
Una mensajes…
V. Una Solución de Compromiso
Software Transactional Memory (TSM), nuevo
modelo de comunicación/sincronización de Haskell
Concepto de bloque atómico:
Similar a las RCC del lenguaje Edison,
Sin condiciones de carrera entre hebras
STM escala bien con núcleos
No más “locks” (cerrojos)
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 10
11. Memoria, Solución…
Una mensajes…
Transacciones vs cerrojos
Series de operaciones sobre memoria compartida, de
principio a fin, valores intermedios vars. no son visibles
STM es una primitiva concurrente optimista
No se comprueba la consistencia antes de escribir
Sino, si van a comprometer los cambios realizados
Siempre se puede abortar una transición, antes de
comprometer los cambios
Aumentan la concurrencia: diferentes tareas pueden
modificar simultáneamente regiones de memoria
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 11
12. Memoria, Solución…
Una mensajes…
Problema de las Transacciones
Bancarias
Thread P2::
var Suma=0; i=1; Error:= false;
int a[1..n];
{Suma= a[1]+a[2]+ ... a[i-1]}
{TOT==a[1]+...+a[n]== while (i <= n) {
cte} B1 : {Suma== a[1]+...a[i−1],i< n}
Thread P1:: S2 : Suma = Suma + a[i];
A1:{a[x]==X,a[y]== Y} B2 : {Suma== a[1]+...a[i−1]+a[i]}
i= i+1;
S1:< a[x] = a[x] − K;
B3 : {Suma== a[1]+ ...a[i−1]}
a[y] = a[y] + K > }
A2:{a[x]== X − K, {Suma ==a[1] + a[2] + ...a[n]}
a[y]==y+K} if S<>TOT then Error=true
El estado intermedio no
debe ser visible a P2
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 12
13. Memoria, Solución…
Una mensajes…
Problema de las Transacciones
Bancarias II
Solución con cerrojos :
a[]
1 2 x y y+1 N
Parte con posibles problemas
Lock() de lectura no consistente
Unlock()
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 13
14. Memoria, Solución…
Una mensajes…
Problema de las Transacciones
Bancarias II
La sobrecarga se reduce a
copiar el array original, pero
Solución con transacciones (Haskell) :
ahora las tareas pueden
acceder simultáneamente
a[]
1 2 x y y+1 N
Log file
previo atomic{
if ( ∀ a[i]≠ a[x], a[y]
“consistent(log_file)==true”){
a[x] = a[x] − K;a[y] = a[y] + K
} else retry
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 14
}
15. Memoria, Solución…
Una mensajes…
Transacciones vs cerrojos II
Evitan la inversión de prioridad que que los cerrojos
causan en las hebras: siempre se puede abortar una
transacción menos prioritaria
Es compatible programarlas con los objetos
Interbloqueos y bloqueos vivos evitados externamente
Tablas hash con operaciones transaccionables:
inimplementables con cerrojos salvo que el proveedeor
de la tabla hash prevea métodos específicos
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 15
16. Computación
Alta Product.
VI. Computación de Alta
Productividad
“Los supercomputadores de ayer son los
computadores de sobremesa de hoy y serán los
teléfonos de mañana”
HPCS es un programa DARPA para los futuros
Sistemas Concurrentes:
Cray propone Chapel como lenguaje de HPCS
IBM con el lenguaje X10
Sun está desarrollando Fortress
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 16
17. Computación
Alta Product.
Nuevos Lenguajes para HPCS
Chapel, X10 y Fortress son muy parecidos:
Abstracción de Espacio Direcciones Compartido (PGAS)
Libera al programador de escribir protocolos tediosos
Aplicaciones para un amplio rango de configuraciones:
desde 1 multinúcleo hasta granjas de servidores
Configuración adaptable basada en locales
Sólo descripción local de los algoritmos
Simplificación programando, ganancia de productividad.
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 17
18. Computación
Alta Product.
Paralelismo de Datos vs
Control
Problema de la configuración de un multicomputador:
D2 Dortmund
Köln
Paralelización dirigida por D1 D4
D7
control : Asignación Koblenz
D3 Kasel
automática en bucles D6 D5
Frankfurt
Paralelización dirigida por Global work queue
BS
datos: Distribución de Best solution
datos globales a “locales” found
La configuración no es
completamente
automatizable!
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 18
19. Computación
Alta Product.
“Mapeando” Dominios
Distribución 1 bloque de datos entre “locales”:
const Dist = new dmap(new
Block(boundingBox=[1..4,1..8]));
Se pasa como argumento a un constructor de
dominio:
var Dom: domain(2) dmapped
Dist=[1..4,1..8];
“Mapped Domain”: conjunto 2D de índices en
correspondencia con Dist
Si hay 8 “locales”, cada uno se encargará de
procesar una región 2x2
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 19
20. Dirigido por Tareas
VII. Paralelismo Dirigido por
Tareas
Propicia la óptima paralelización
de código del tipo dirigida por control
El sistema de tiempo de ejecución es quien se
encarga de hacer corresponder tareas a hebras:
Grupos tareas con poca carga, asignados a 1 hebra
Los hebras se ocultan a los programadores, pero
no la definición de las tareas
Ahora las estructuras de datos y los flujos de
control se programan de forma monolítica
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 20
21. Agrega capacidades de Dirigido por Tareas
Arquitectura de programación
consulta a C# y VB.
Divide el origen de datos en
paralela en .NET Framework 4
segmentos y lanza consultas
en cada segmento por hebras
independientes
Asignar tareas a las
hebras , administrar detalle Incluye clases colección
de bajo nivel, evita que lasimultáneas, primitivas de
paralelización sea sincronización ligeras y tipos
ineficiente de incialización diferida
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 21
22. Dirigido por Tareas
Task Parallel Library
Creación y cancelación implícita de tareas
Invocación paralela mediante delegados definidos
como lambda expresiones
El número de tareas que se crea en 2do plano
con Parallel.invoke()≠ num. hebras
Creación y ejecución explícita de tareas:
Los objetos-tareas exponen su estado a los usuarios
Se pasan en el constructor delegados de usuario:
métodos, anónimos y expresiones lambda
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 22
23. Dirigido por Tareas
Delegados y lambda
expresiones
Las lambda expresiones proporcionan el soporte formal
para definir funciones anónimas
Sintaxis de lambda expresión que devuelve resultado:
Objeto de estado
[captura](argumentos)->devuelve-tipo{cuerpo}
Función que calcula una suma de 5 términos:
std::vector<int> una_lista;
int total=0;
for(int i=0;i<5;i++)una_lista.push.back(i);
std::for_each(begin(una_lista),
end(una_lista),
[&total](int x){total += x;});
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 23
24. Dirigido por Tareas
Creación-inicio de tareas
Capturan sólo el valor final de las variables en los bucles. Se
soluciona definiendo 1 objeto de estado a en el constructor:
for(int= i=0;i<arrayTareas.Length;i++){
arrayTareas[i]= new Task((obj)=>
{ DatosUsuario misDatos (DatosUsuario) obj;
misDatos.N_Hebra=Thread.Current.Thread.ManagerThreadId;
Console.Write(misDatos.Nombre,misDatos.Tiempo,
misDatos.N_Hebra);}//lambda expresión
new DatosUsuario(){Nombre=i,Tiempo=DateTime.Ticks();}
);//tarea creada
arrayTareas[i].start();
}
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 24
25. Dirigido por Tareas
Colecciones y estructuras
para coordinación
Clases de colección seguras, tipos de sincronización
ligeros y tipos para la inicialización diferida:
Clases contenedores con acceso sin bloqueos y
escalables en multinúcleos:
System.Collections.Concurrent.XXX
Nuevos tipos de sincronización evitan los bloqueos
indiscriminados de las primitivas para hebras:
SemaphoreSlim, Barriers, EventSlim,
SpinLock, SpinWait..
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 25
26. Dirigido por Tareas
Programación asíncrona
en .NET framework 4
Utiliza operaciones asíncronas estructuradas (APM):
FileStream.BeginRead, FileStream.EndRead …
Modelos basados en pares método/evento (EAP):
WebClient.DownloadString.Async,
WebClient.Download.Completed, …
Las operaciones APM y EAP pueden hacerse
accesibles a los usuarios de TPL o bien se pueden
implementar con objetos tarea
Instrucción FromAsync:crea un objeto tarea para
representar un par Begin/End
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 26
27. Dirigido por Tareas
Comparativa lenguajes para
HPCS
Lenguaje Modelo de Concurrencia
Propietario Memoria
para HPCS multiresolución
Fortress Sun Systems Transaccional NO
SI
Chapel CRAY Transaccional (forall,
Begin/End)
SI
X10 IBM Transaccional (Async)
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 27
28. Decálogo
VIII. Decálogo para Programar
multinúcleos
Pensarás en Paralelo
Programarás con tareas,
no con hebras
Depurarás lo secuencial antes
No utilizarás cerrojos
Tendrás el control de tu memoria
En lo antiguo no hay “salvación”
Diseñarás deseando tener más núcleos
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 28
29. Conclusiones
IX. Conclusiones
La programación multihebra está en decadencia, se usa sólo para
controlar la latencia en la respuesta a peticiones en servidores
La programación paralela dirigida por tareas y el paralelismo semi-
implícito concitan actualmente la máxima atención
El paso de mensajes (MPI, etc.) también ha entrado en
decadencia, debido a que propicia un estilo de programación
demasiado tedioso
El espacio de direcciones compartido (PGAS) es considerado de
máxima actualidad
Programar con cerrojos (locks) tiende a la obsolescencia, debido a
que suponen un estilo de programación de demasiado bajo nivel
La memoria transaccional (STM) , de actualidad en HPCS
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 29
30. Referencias
-The Chapel Parallel Programming Language ( http://chapel.cray.com/ )
-X10: Performance and Productivity at Scale ( http://x10-lang.org/ )
-Project Fortress ( http://projectfortress.sun.com/ )
-“Unified Parallel C”. The High Performance Computing Laboratory –
George Washington University ( http://upc.gwu.edu/ )
-“Task Parallel Library”. Microsoft (
http://msdn.microsoft.com/es-es/library/dd460717.aspx )
-Intel Threading Building Blocks for Open Source
( http://threadingbuildingblocks.org/ )
-“Scalable Software Transactional Memory for Global Address Space
Architectures”. Sridharan,S.,Vetter,J.S.,Kogge,P.M. Future
Technologies Group (2009)
-“Designing an Effective Hybrid Transactional Memory System” PhD
Dissertation, Stanford (USA), Chí Chao Minh (2008)
-“Concurrency in the D Programming Language”. A. Alexandrescu (2010)
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 30
31. Gracias por la atención !
¿Preguntas?
U.Cádiz 23.03.2012 Concurrencia o "Hardcomputing" 31
Notas del editor
Gustafson's law (also known as Gustafson-Barsis' law) follows the argument that Amdahl's law did not adequately represent massively parallel architectures that operate on very large data sets, where smaller scales of parallelism would not provide solutions in tractable amounts of time . Here, the computation problem size changes dramatically with the dramatic increase in processors (núcleos); it is not assumed that the computation problem size will remain constant. Instead, the ratio of parallelized work to serialized work approaches one [ Gustafson88 ]. The law is described by the equation in Figure 6 below, where s' is the serial time spent on the parallel system, p' is the parallel time spent on the parallel system, and n is the number of processors