Este documento presenta una introducción a la computación paralela. Explica que los grandes problemas como el cambio climático y las simulaciones de partículas no pueden resolverse en un tiempo razonable con una sola CPU. Luego describe conceptos clave como tareas, granularidad y programación concurrente. Finalmente, clasifica los sistemas paralelos según la taxonomía de Flynn y el modelo de memoria compartida/distribuida.
Trabajo de introducción a la programación paralela. Este pequeño trabajo ha sido realizado para la asignatura de programación paralela del curso de adaptación universitario desde Ciclo Formativo de Grado Superior a la UCAM.
Universidad Técnica Particular de Loja
Ciclo Académico Abril Agosto 2011
Carrera: Ciencias de la Computación
Docente:Ing. Julia Pineda
Ciclo: Quinto
Bimestre: Primero
Trabajo de introducción a la programación paralela. Este pequeño trabajo ha sido realizado para la asignatura de programación paralela del curso de adaptación universitario desde Ciclo Formativo de Grado Superior a la UCAM.
Universidad Técnica Particular de Loja
Ciclo Académico Abril Agosto 2011
Carrera: Ciencias de la Computación
Docente:Ing. Julia Pineda
Ciclo: Quinto
Bimestre: Primero
En esta presentación se presentan los siguientes temas:
Información, estado y formación de un proceso.
Concepto de hilo y su constitución.
Planificación de servicios POXIS.
Problemas clásicos en la comunicación de procesos.
Este material didáctico fue desarrollado para la asignatura de Tópicos Avanzados de Programación, del plan SCD-1027 2016 de Ing. En Sistemas Computacionales
Este material didáctico fue desarrollado para la asignatura de Tópicos Avanzados de Programación, del plan SCD-1027 2016 de Ing. En Sistemas Computacionales
Mi clase del curso de Analisis y Diseño de Algoritmos en la Universidad Privada del Norte, donde se da el contexto de la computación paralela como una tendencia irreversible, con énfasis en lo visionado por Herb Sutter (Welcome to the Jungle) y las consideraciones que hay que tener para programar en esa modalidad.
En esta presentación se presentan los siguientes temas:
Información, estado y formación de un proceso.
Concepto de hilo y su constitución.
Planificación de servicios POXIS.
Problemas clásicos en la comunicación de procesos.
Este material didáctico fue desarrollado para la asignatura de Tópicos Avanzados de Programación, del plan SCD-1027 2016 de Ing. En Sistemas Computacionales
Este material didáctico fue desarrollado para la asignatura de Tópicos Avanzados de Programación, del plan SCD-1027 2016 de Ing. En Sistemas Computacionales
Mi clase del curso de Analisis y Diseño de Algoritmos en la Universidad Privada del Norte, donde se da el contexto de la computación paralela como una tendencia irreversible, con énfasis en lo visionado por Herb Sutter (Welcome to the Jungle) y las consideraciones que hay que tener para programar en esa modalidad.
Detalla los conceptos de interfaces , métodos abstractos, atributos de una interfaz, métodos por defecto, métodos státicos en una interfaz, la herencia entre interfaces
Detalla los conceptos de elicitación de requisito y detalla las principales técnicas de elicitación como la entrevista, encuestas, brainstorm, jad, focus group, análisis de documentos, análisis de sistemas existentes, observación, prototipo
Detalla los conceptos fundamentales de los sistemas distribuidos. Además detalla los elementos las caracterísitcas y los modelos de comunicación existentes
El modelo C4 se creó como una forma de ayudar a los equipos de desarrollo de software a describir y comunicar la arquitectura de software, tanto durante las sesiones de diseño iniciales como cuando se documenta retrospectivamente una base de código existente. Es una forma de crear mapas de su código, en varios niveles de detalle, de la misma manera que usaría algo como Google Maps para acercar y alejar un área que le interesa.
El objetivo de este capítulo es introducir un enfoque de diseno de software en el que el diseño se representa como objetos que interactúan. Cuando termine de leer este capítulo:
• conocerá cómo se representa un diseño de software como un conjunto de objetos que interactúan entre sí y que administran su propio estado y operaciones;
• conocerá las actividades más importantes en un proceso general de diseño orientado a objetos;
• comprenderá los diversos modelos que se utilizan para documentar diseño orientado a objetos;
• habrá sido introducido en la representación de estos modelos en el Lenguaje Unificado de Modelado (UML).
Tiempo, causalidad y estado global Alberto Lafuente TeorìaRene Guaman-Quinche
Documento del PhD. Alberto Lafuente donde trata los relojes físicos y lógicos con sus algoritmos de sincronización. Algoritmos de cristian, berkeley, lamport, relojes vectoriales, candy lamport
Escaneo y eliminación de malware en el equiponicromante2000
El malware tiene muchas caras, y es que los programas maliciosos se reproducen en los ordenadores de diferentes formas. Ya se trate de virus, de programas espía o de troyanos, la presencia de software malicioso en los sistemas informáticos siempre debería evitarse. Aquí te muestro como trabaja un anti malware a la hora de analizar tu equipo
Los desafíos de calidad de software que nos trae la IA y los LLMsFederico Toledo
En esta charla, nos sumergiremos en los desafíos emergentes que la inteligencia artificial (IA) y los Large Language Models (LLMs) traen al mundo de la calidad del software y el testing. Exploraremos cómo la integración, uso o diseño de modelos de IA plantean nuevos retos, incluyendo la calidad de datos y detección de sesgos, sumando la complejidad de probar algo no determinístico. Revisaremos algunas propuestas que se están llevando adelante para ajustar nuestras tareas de testing al desarrollo de este tipo de sistemas, incluyendo enfoques de pruebas automatizadas y observabilidad.
Si bien los hospitales conjuntan a profesionales de salud que atienden a la población, existe un equipo de organización, coordinación y administración que permite que los cuidados clínicos se otorguen de manera constante y sin obstáculos.
Mario García Baltazar, director del área de Tecnología (TI) del Hospital Victoria La Salle, relató la manera en la que el departamento que él lidera, apoyado en Cirrus y Estela, brinda servicio a los clientes internos de la institución e impulsa una experiencia positiva en el paciente.
Conoce el Hospital Victoria La Salle
Ubicado en Ciudad Victoria, Tamaulipas, México
Inició operaciones en el 2016
Forma parte del Consorcio Mexicanos de Hospitales
Hospital de segundo nivel
21 habitaciones para estancia
31 camas censables
13 camillas
2 quirófanos
+174 integrantes en su plantilla
+120 equipos médicos de alta tecnología
+900 pacientes atendidos
Servicios de +20 especialidades
Módulos utilizados de Cirrus
HIS
EHR
ERP
Estela - Business Intelligence
3. 3
1. Introducción
2. Ventajas y desventajas
3. Conceptos
4. Taxonomía de Flynn
5. Modelo basado en la organización de la Memoria
6. Medidas del paralelismo
Contenido
4. 4
Introducción
¿Por qué recurrir a la computación paralela?
¿No es suficiente con un solo procesador para resolver cualquier
problema?
NO
Grandes problemas
Cambio global
Desastres económicos
Incendios forestales
Corrientes marinas
Visión Artificial
Servidores
Bases de datos
Gráficos online
etc
Se necesitan construir
aplicaciones relaes
7. 7
Introducción
¿Qué es supercomputing?
Incluye técnicas, métodos e infraestructuras que permiten ejecutar una aplicación en
menor tiempo o una aplicación con más datos o más compleja en el mismo tiempo
Supercomputador = infraestructura que permite aportar mayor capacidad
procesamiento, E/S y comunicación que una que no lo es
No obstante la definición de la supercomputación está cambiando
constantemente
Regla de oro: una supercomputadora es típicamente por lo menos X veces más
potente que un PC (con X>100)
Jerga: supercomputación es también llamada computación de alto rendimiento
(HPC)
10. 10
Introducción
¿Qué nos preocupa?
Consumo? Green500:
supercomputadoras en el mundo de
la eficiencia energética (Mflops/W).
Prestaciones a cualquier precio =
tendencia a la baja.
Actual: mayor cómputo por W.
Green500 premia el rendimiento
con eficiencia energética en favor
de una supercomputación
sostenible.
11. 11
Introducción
¿Que significa la supercomputación?
Tamaño
Muchos problemas, que son interesantes para los científicos, no se puede ejecutar
en un PC (porque por ejemplo necesitan más de unos cuantos cientos de GB de
RAM, o decenas de TB de disco)
Velocidad
Muchos problemas, igualmente interesantes, pueden tomar un tiempo muy, muy
largo para ejecutar en un PC (meses o incluso años).
Por ejemplo una simulación de partículas (120M - nbody) en 2 cores 76 años!, en
1024 cores menos de 9 días!
13. 13
Introducción
La tiranía de la jerarquía de almacenamiento
Paralelismo: hacer muchas cosas al mismo tiempo
Paralelismo a nivel de instrucción: hacer varias operaciones al mismo tiempo,
dentro de un solo procesador (por ejemplo, sumar, multiplicar, cargar y almacenar
al mismo tiempo)
Multiprocesamiento: múltiples CPUs trabajando en diferentes partes de un
problema al mismo tiempo
Memoria compartida (Multithreading & Multicore)
Multiprocesamiento distribuido
Compiladores de Alto Rendimiento
Las bibliotecas científicas
15. 15
Introducción
La velocidad de transferencia de
datos entre la memoria principal
y la CPU es mucho más lento que
la velocidad de cálculo, por lo
que la CPU pasa la mayor parte
de su tiempo en espera de los
datos
16. 16
Introducción
La Caché tiene una velocidad
cercana a al velocidad de la CPU,
por lo que la CPU no tienen que
esperar casi todo el tiempo para
cosas que ya está en la memoria
caché:
se puede hacer más operaciones
por segundo!
17. 17
Introducción
Reutilización de Registros: hacer un montón de trabajo en los mismos datos
antes de trabajar en nuevos datos
Reutilización de caché: el programa es mucho más eficaz si todos los datos y
las instrucciones entran en la memoria caché, y si no, trate de usar lo que está
en la memoria caché mucho antes de usar cualquier cosa que no está en caché
Localidad de datos: pruebas para acceder a datos que están cerca unos de otros
en la memoria antes de los datos que están lejos
Eficiencia de la E/S: hacer mucha E/S de una sola vez en lugar de a poco por
vez muchas veces (no mezclar E/S con cómputo)
19. 19
Introducción
Serial/Sequential Computing: Supongamos que
queremos hacer un rompecabezas de 256 piezas.
Tardaremos un tiempo proporcional al número de
piezas: por ejemplo el record de 256 piezas es de 17
minutos.
Shared Memory Parallelism: Un amigo se sienta
en la mesa con Ud. y trabaja en una mitad y Ud. en
la otra. De vez en cuando, puede encontrar la mano
de su amigo en la pila de piezas al mismo tiempo
(disputan el mismo recurso), lo que provocará ir
más lento
Y de vez en cuando tendrán que trabajar juntos
(comunicación) en la interface entre su mitad y la
vuestra. El aumento de velocidad será de casi 2 a 1:
los mejores valores están cerca de 9,5 minutos
20. 20
Introducción
Si ahora invitamos a dos amigas más en los
otros dos lados de la mesa. Cada uno trabajará
en una parte del puzle, pero habrá una
contención mucho mayor para el recurso
compartido (montón de piezas) y una
comunicación mucho mayor en las interfaces
Conclusión: la velocidad resultante no será 1⁄4
sino algo así como 3 a 1: los cuatro tardarán 5,5
‘ en lugar de 4,25’
21. 21
Introducción
Si ahora convidamos a 4 amigos más a las
puntas de la mesa tendremos un montón de
contención y de comunicaciones en muchas
interfaces lo cual perjudicará el trabajo total.
Con suerte llegaremos a 5 a 1.
Conclusión: Así podemos ver que la adición de
más y más trabajadores en un recurso
compartido tendrá (en forma generalizada) un
rendimiento decreciente.
RENDIMIENTO DECRECIENTE
22. 22
Introducción
Paralelismo Distribuido
Hagamos una distribución diferente: ponemos dos mesas, una persona en cada mesa y con la
mitad de las piezas en cada mesa
Ellas podrán trabajar con total independencia, sin ningún tipo de contención para un recurso
compartido. PERO, el costo de la comunicación es mucho más alto y se necesita la capacidad
de dividir (descomponer) las piezas del rompecabezas en forma (razonablemente) uniforme
Más procesadores: Es mucho más fácil añadir más procesadores en paralelismo distribuido.
Pero es necesario descomponer el problema y tener comunicación entre los procesadores
Además, a medida que agregan más procesadores, puede ser más difícil de equilibrar la carga de
trabajo en cada procesador
23. 23
Introducción
El equilibrio de carga significa dar a todos más o menos la misma cantidad de trabajo que
hacer
Por ejemplo, si el puzle tiene mitad de hierba y mitad cielo, entonces uno puede hacer la
hierba y el otro puede hacer el cielo, y luego sólo tienen que comunicar en el horizonte , y la
cantidad de trabajo que hace cada uno por su cuenta es aproximadamente igual. De manera
que obtendrá aceleración óptima.
El balanceo de carga puede ser fácil si el problema se (puede) divide en trozos de tamaño
aproximadamente igual, con un trozo por procesador. O equilibrio de carga puede ser muy
difícil. Ver puzle siguiente.
24. 24
Ventajas
Resuelve problemas que no se podrían realizar en una sola CPU
Resuelve problemas que no se pueden resolver en un tiempo razonable
Permite ejecutar problemas de un orden y complejidad mayor
Permite ejecutar código de manera más rápida (aceleración)
Permite ejecutar en general más problemas
Obtención de resultados en menos tiempo
Permite la ejecución de varias instrucciones en simultáneo
Permite dividir una tarea en partes independientes
Ofrece mejor balance entre rendimiento y costo que la computación secuencial
Gran expansión y escalabilidad
25. 25
Desventajas
Mayor consumo de energía
Mayor dificultad a la hora de escribir programas
Dificultad para lograr una buena sincronización y comunicación entre las tareas
Retardos ocasionados por comunicación ente tareas
Número de componentes usados es directamente proporcional a los fallos potenciales
Altos costos por producción y mantenimiento
Condiciones de carrera
Múltiples procesos se encuentran en condición de carrera si el resultado de los mismos
depende del orden de su llegada
Si los procesos que están en condición de carrera no son correctamente sincronizados,
puede producirse una corrupción de datos
26. 26
Conceptos
Programación concurrente: Varios procesos trabajando en la solución de
un problema, puede ser paralela (varios procesadores)
Computación heterogénea: Varios procesadores con características distintas
Programación adaptativa: Durante la ejecución el programa se adapta a las
características del sistema
Programación distribuida: Varios procesadores geográficamente
distribuidos. Hay paso de mensajes pero se necesita infraestructura especial
Computación en la web: Necesidad de herramientas que permitan la
utilización de sistemas de computación en la web
Computación cuántica o biológica
Conceptos relacionados pero no iguales
27. 27
Conceptos
Diseño de computadores paralelos. Escalabilidad y Comunicaciones.
Diseño de algoritmos eficientes. No hay ganancia si los algoritmos no se
diseñan adecuadamente.
Métodos para evaluar los algoritmos paralelos: ¿Cómo de rápido se puede
resolver un problema usando una máquina paralela? ¿Con qué eficiencia se
usan esos procesadores?
Lenguajes para computadores paralelos, flexibles para permitir una
implementación eficiente y que sean fáciles de programar.
Herramientas para la programación paralela.
Programas paralelos portables.
Compiladores paralelizantes.
Aspectos a considerar en cuenta en la computación paralela son:
28. 28
Conceptos
Tareitas
Son secciones lógicamente
discretas de trabajo computacional
Una tarea está compuesta de un
conjunto de instrucciones que
seran ejecutadas por un
procesador
Aspectos a considerar en cuenta en la computación paralela son:
29. 29
Conceptos
Granularidad
Se refiere al tamaño de cada tarea y a
la independiencia de las demás tareas,
se dividen en dos categorías.
Gruesa: Cantidad relativamente
grande de trabajo, alta independencia
entre tareas y poca necesidad de
sincronización.
Fina: Cantidades pequeñas de
trabajo, poca independencia entre
tareas, y una alta demanda de
sincronización.
Aspectos a considerar en cuenta en la computación paralela son:
30. 30
Conceptos
Scheduling
Proceso en el que las tareas son asignadas a
los procesos o hilos, y se les da un orden de
ejecución
Puede ser especificado en el código, en
tiempo de compilación o dinámicamente en
tiempo de ejecución
El proceso de scheduling debe tener en
cuenta la dependencia entre tareas, ya que,
aunque muchas pueden ser independientes,
otras pueden requerir los datos producidos
por otras tareas.
31. 31
Conceptos
Scheduling - Criterios de planificación
Orientados al usuario:
Tiempo de vuelta: Intervalo de tiempo que transcurre entre la solicitud
de ejecución de un proceso y su terminación.
Tiempo de respuesta: Tiempo transcurrido desde que se hace una
solicitud y se empieza el proceso.
Plazos: Ocurre cuando se pueden dar plazos de ejecución de procesos,
Obligando al planificador a subordinar otros procesos.
Previsibilidad: Un proceso deberia ejecutarse en el mismo tiempo
siempre (sin importar la carga que se tenga en el sistema).
32. 32
Conceptos
Scheduling - Criterios de planificación
Orientados al sistema:
Tasa de salida: Consiste en el numero de procesos ejecutados por unidad de
tiempo.
Utilización del proceso: Cantidad de tiempo que el procesador permanece
ocupado.
Equidad: Los procesos deben ser tratados todos de igual forma para evitar la
inanición de procesos.
Prioridades: Se debe poder tener una politica de prioridades para poder
favorecer a ciertos procesos que se consideren importantes.
Balanceo de recursos: Se debe balancear la carga del sistema de modo que
todos sus componentes se mantengan ocupados.
33. 33
Conceptos
Scheduling
Proceso en el que las tareas son asignadas a los procesos o hilos, y se les
da un orden de ejecución
Puede ser especificado en el código, en tiempo de compilación o
dinámicamente en tiempo de ejecución
El proceso de scheduling debe tener en cuenta la dependencia entre tareas,
ya que, aunque muchas pueden ser independientes, otras pueden requerir
los datos producidos por otras tareas.
35. 35
Taxonomía de Flynn
SISD, Simple Instruction, simple data
Un flujo de simples instrucciones opera
sobre un flujo de dados este modelo es de
von Neumann
36. 36
Taxonomía de Flynn
SIMD, Simple Instruction, multiple
data
Un flujo de simples instrucciones opera
sobre múltiples de datos
Todos los procesadores ejecuta la misma
instrucción aunque con distintos datos
Pertenecen a los procesadores matriciales
y pipenizados
38. 38
Taxonomía de Flynn
Taxonomía de Flynn
MIMD, Multiple Instruction, multiple
data
Cada procesador ejecuta su propio código
sobre datos distintos a los de otros
procesadores
A este tipo corresponde los procesadores
paralelos
39. 39
Modelo basado en la organización de la Memoria
Memoria Compartida
Todos los procesadores tienen acceso independientemente a una memoria común,
cad uno de ellos posse una pequeña memoria local para almacenar código y
resultados intermedios
La comunicación se realiza a través de la memoria común
La principal de este sistema es que
permite comunicaciones muy rápida
entre procesadores
Pueden generarse conflicto de acceso
a datos
40. 40
Memoria Compartida
La interconexión puede ser por medio de un bus o una red
El acceso a memoria se puede
hacer de dos manera:
UMA
NUMA
Multiprocesdor de memoria compartida
Modelo basado en la organización de la Memoria
41. 41
Memoria Compartida
UMA (Uniform Memory Access)
Se garantiza que el tiempo de cada procesador para acceder a cualquier una
zona de la memoria (cercana o lejana)
También se lo llama como procesadores simétrico
NUMA (Non-Uniform Memory Access)
Los procesadores pueden acceder a toda la memoria
Cada procesador tiene una memoria local
El tiempo de acceso a memoria depende de si se accede a la memoria local o
memoria remota
DSMP (distribuited shared memory multiprocessor): multiprocesdorse con
memoria compartida distribuida
Multiprocesdor de memoria compartida
Modelo basado en la organización de la Memoria
42. 42
Memoria Compartida
Los procesadores compartirán variables: método de sincronización de acceso
(bloqueo)
Si un procesador modifica una variable compartida, las demás deben actualizar
el valor de las caches: protocolos para la coherencia de cache
Snoopy (fisgonéo): las caches locales monitorizan los buses de acceso de
memoria, y si detectan una escritura en una variable compartida,
automáticamente actualizan su copia local
Multiprocesdor de memoria compartida
Modelo basado en la organización de la Memoria
44. 44
Memoria Distribuida
Cada procesador posee su propia
memoria local inaccesible a los
demás
Los procesadores están conectados
entre si, a efectos de intercambio de
datos, mediante una rede de
interconexión
La comunicación entre procesadores
realiza mediante el paso de mensaje
(conlleva a retraso en el tiempo)
Modelo basado en la organización de la Memoria
46. 46
Modelo basado en la organización de la Memoria
SIMD-Memoria Compartida
Se caracteriza por un control centralizado y
datos centralizados
Las máquinas clásicas de este tipo son las
máquinas vectoriales mono-procesadores
con encauzamiento
Su funcionamiento: se realiza una única operación (por ejemplo, la adición) sobre un conjunto de
datos múltiples (por ejemplo, dos vectores escalar). Las operaciones se realizan de manera
secuencial pero bajo un modo de funcionamiento de encauzamiento
47. 47
Modelo basado en la organización de la Memoria
SIMD-Memoria Distribuida
Se caracterizan por un control centralizado
y los datos distribuidos
Los procesadores de estas máquinas son de
bajo poder, y la potencia de cálculo de la
máquina paralela es obtenida por el gran
número de procesadores usados
En esta arquitectura, cada procesador tiene una memoria local pequeña y recibe las instrucciones
de una unidad de control central para ejecutar la misma instrucción, conjuntamente con el resto de
procesadores, de manera sincronizada
48. 48
Modelo basado en la organización de la Memoria
MIMD-Memoria Compartida
En esta arquitectura, el conjunto de
procesadores comparte la misma memoria
Cada procesador puede ejecutar una
instrucción diferente y el acceso a la
memoria se hace a través de una red de
interconexión
La memoria se puede dividir en varios bancos, y en un momento dado, un banco puede
solamente ser accesado por un procesador
Llevar un código secuencial para ser ejecutado en este tipo de máquina resulta muy fácil
49. 49
Modelo basado en la organización de la Memoria
MIMD-Memoria Compartida
La complejidad de la red de interconexión aumenta rápidamente al aumentar el número de
procesadores, ya que todos deben poder accesar de manera eficaz todos los bancos de memoria,
lo que limita su uso a un número reducido de procesadores
Por poseer pocos procesadores, se usan poderosos procesadores, de tal manera que la potencia
de la máquina paralela está dada por la potencia de los procesadores más que por el número de
ellos.
50. 50
Medidas del paralelismo
Grado del paralelismo
El GP de un algorítmo numérico es el número de operaciones que pueden
relizarse en paralelo
Esté parámetro es específico del algoritmo y no depende del número de
procesadores del sistema
Relacionado a este concepto está la granularidad
Los parámetros más usados para medir el paralelismo de un algoritmo son:
El incremento de velocidad y
La eficiente del mismo
51. 51
Medidas del paralelismo
Incremento de velocidad
Se llama incremento de velocidad Sp
(speed-up) de un algoritmo paralelo al
cociente
Sp
=tiempo de ejecución de un solo procesador / tiempo de ejecución en p
procesadores
Sp
<= p
52. 52
Medidas del paralelismo
Eficiencia
La eficiencia Ep
de un algoritmo parale con respecto a si mismo, que mide el
grado de utilización de los procesadores del sistema al ejecutar en éste el
algoritmo paralelo:
Ep
=Sp
/p
La eficiencia es menor o igual 1
El objetivo es diseñar un algoritmo paralelo y conseguir la mayor eficiencia
posible
En la práctica, la eficiencia disminuye cuando se incrementa el número de
procesadores:
53. 53
Medidas del paralelismo
Eficiencia
Los factores que influyen en la reducción de la eficiencia
Pérdida de paralelismo del algoritmo
El tiempo requerido de comunicación entre procesadores
El tiempo requerido de sincronización entre procesadores
El desequilibrio de carga computacional
54. 54
Cŕeditos
• Transparencias basadas por:
• Alberto Lafuente,
http://www.sc.ehu.es/acwlaroa/SDI/Apuntes/Cap1.pdf
• Alberto Lafuente,
http://www.sc.ehu.es/acwlaalm/sdi/introduccion-slides.pdf
•