SlideShare una empresa de Scribd logo
1 de 34
Análisis y Diseño de Algoritmos
Ernesto Cárdenas Cangahuala
Recordando:
¿Bajo que supuesto hemos estudiado
los algoritmos hasta ahora?
Logro de aprendizaje
Hemos supuesto que nuestros programas
se ejecutaran en una maquina que solo
puede ejecutar una instrucción por vez
¿Es eso cierto en la vida
real?
• ¿Qué ventajas podríamos sacar de
esta realidad en nuestros algoritmos?
¿Qué es la programación paralela?
• El uso de varios procesadores trabajando juntos
para resolver una tarea o problema común
Ventajas
• La programación paralela permite:
• Resolver problemas que no caben en una CPU
• Resolver problemas que no se resuelven en un tiempo
razonable
• Se pueden ejecutar
• Problemas mayores
• Más rápidamente (aceleración)
• Más problemas
Aclarando 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 (ej: cloud)
• Computación cuántica o biológica
¿Y como empezó esto?
Recordemos
• Ley de Moore: Cada dos años
aproximadamente se duplica
la cantidad de transistores en
un circuito integrado
Bajo la Ley de Moore…
• En los 70s y 80s, cada generación de chips podía usar la
mayoría de los transistores adicionales para añadir una Gran
Caracteristica (unidad de punto flotante, pipelining…)que haría
que el código single-threaded corra mas rápido.
• En los 90s y 2000s, cada generación de chips empezó a usar
los transistores adicionales para añadir o mejorar dos o tres
pequeñas características que haría que el código single-
threaded corra mas rápido, y luego cinco o seis características
aun mas pequeñas y así sucesivamente.
Hasta que…
• “The Free Lunch is Over” (Herb
Sutter, 2005)
• Los fabricantes se enfocaran en mejorar
el soporte multithreading y por ende los
procesadores multi-core
• Los desarrolladores deberán producir
programas multihilo a fin de sacar mejor
uso a estos procesadores
Esto significa
• Adiós esperar que la velocidad de los
procesadores ayude a compensar a un software
lento
• Las ganancias de performance ya no serán
lineales, habrá que luchar por ellas
Los multinucleos ya no son la excepción,
son la norma
Welcome to the Jungle!
Welcome to the Jungle!
“For the first time in the history of
computing, mainstream hardware is no
longer a single-processor von Neumann
machine, and never will be again.”
Explotando ese terreno…
• Aplicaciones que aprovechan la GPU
• Esquemas donde la GPU y el CPU acceden a la misma
memoria (¡Xbox!)
• Intel Threading Building Blocks (TBB), Microsoft Parallel
Patterns Library…
• Procesadores con diferentes tipos de cores en su
núcleo (¡Playstation!)
• Y los modelos de cloud elásticos…
Asi pues…
¿Y esto que significa para nosotros?
• Las aplicaciones necesitaran ser al menos masivamente
paralelas, e idealmente capaces de usar cores no locales y
cores heterogéneos
• La optimización de Eficiencia y performance será mas y no
menos importante
• Los sistemas y lenguajes de programación se verán forzados
cada vez mas a lidiar con paralelismo distribuido
heterogéneamente
• Los entornos cloud te dan APIs para ello, hay que usarlas
Veamos algo en acción
Observaciones
• Se logran mejores resultados si usamos mas
dimensiones para el problema de las reinas
• Las tareas individuales pueden durar un poco mas
porque es necesario una gestión alrededor de
ellas puesto que corren en procesadores
separados
¿Opiniones?
Tipos de Paralelismo
• Paralelismo de datos: cada procesador ejecuta la
misma tarea sobre diferentes conjuntos o
subregiones de datos
• Paralelismo de tareas: cada procesador ejecuta
una diferente tarea
• La mayoría de las aplicaciones están entre estos
dos extremos
Cuidados y riesgos
• Hasta ahora asumíamos que se efectuaba una instrucción por
vez sobre una única variable
• Cuidar lo que pasa cuando varios procesos asignen nuevos
valores a una variable en paralelo
• ¿Se puede suponer que la variable tiene el ultimo valor
asignado?
• ¿Sabemos cual es el resultado real de dicha asignación?
• ¿Y si dependemos que un conjunto de variables alcance cierto
valor? ¿Quién coordina?
Consideraciones
• Los códigos paralelos rápidos requieren un eficiente uso del
escalamiento del hardware
• No todos los algoritmos escalares pueden ser paralelizados
bien, puede ser necesario repensar el problema
• Comunicación: Necesidad de minimizar el gasto del tiempo de comunicación
• Balanceo de Carga: Todos los procesadores deben hacer aprox. el mismo
trabajo
Topes
• Ley de Amdahl’s: Limite fundamental de la
computación paralela pues predice que existe un
máximo de escalabilidad para una aplicación (para un
conjunto de datos de tamaño fijo), y este limite,
generalmente, no es muy grande
• Ley de Gustafson’s indica que cualquier problema
suficientemente grande puede ser eficientemente
paralelizado
Rendimiento
• Un código paralelo bien entendido es un buen código
escalar.
• Si un código escala a 256 procesadores pero sólo se
obtiene un 1% de mejora de rendimiento en un pico,
éste es un mal código paralelo.
• Noticia buena: Cada cosa que usted sabe acerca de la computación
serial es útil en la computación paralela!
• Noticia mala: Es difícil obtener un buen rendimiento de procesadores
y memoria en máquinas paralelas. Se necesita un uso efectivo de
caché.
Eficiencia y optimización
• En términos generales se considera que un alg. Paralelo
hace mas cálculos en t segundos con 20 procesadores
que con cinco, así trabajo = procesadores * tiempo
• Se requiere un numero polinómico de procesadores y
un tiempo polilogaritmico para ser eficiente
• Se es optimo si se es eficiente en trabajo respecto al
mejor algoritmo secuencial posible
Aunque…
• Hay problemas sin solución secuencial eficiente,
así que no podemos esperar una solución
paralela eficiente
• Hay muchos problemas con solución secuencial
eficiente pero sin solución paralela eficiente, en
algunos casos esto no ha sido demostrado
La 1ra. Pregunta a Responder antes de
Paralelizar
• Detenerse a pensar
• ¿La cantidad de CPU disponibles justifican la paralelización?
• ¿Se necesita una máquina paralela para obtener suficiente memoria
agregada?
• ¿El código va a ser usado una sóla vez o se usará para una mayor
producción?
• El tiempo es valioso, se puede consumir mucho
tiempo para escribir, depurar, y probar un código
paralelo. Mucho tiempo se gasta en escribir un código
paralelo.
La 2da. Pregunta a Responder antes de
Paralelizar
• ¿Cómo se debe descomponer el problema?
• ¿Los computos consisten de un gran número de pequeños
e independientes problemas - trayectorias, parámetros del
espacio estudiado, etc? Se puede considerar un esquema
en el cual cada procesador realiza el cálculo para
diferentes conjuntos de datos
• ¿Cada computo requiere mucha memoria y CPU?
Probablemente hay que distribuir un simple problema
hacia múltiples procesadores
Ojo, recuerda que tus múltiples procesos
no necesariamente corren en una única
maquina, el cloud también es
computación paralela ;)
¿Opiniones?

Más contenido relacionado

La actualidad más candente

Modelos y Lenguajes Para Computación Paralela
Modelos y Lenguajes Para Computación ParalelaModelos y Lenguajes Para Computación Paralela
Modelos y Lenguajes Para Computación ParalelaRicardo Montañana
 
Procesamiento paralelo
Procesamiento paraleloProcesamiento paralelo
Procesamiento paralelowarrionet
 
Procesadores Vectoriales
Procesadores VectorialesProcesadores Vectoriales
Procesadores VectorialesCeciliaOrtega
 
Administracion de la memoria, primeros sistemas
Administracion de la memoria, primeros sistemasAdministracion de la memoria, primeros sistemas
Administracion de la memoria, primeros sistemasANIUX77
 
Algoritmos de gestión de memoria
Algoritmos de gestión de memoriaAlgoritmos de gestión de memoria
Algoritmos de gestión de memoriaadolfoahumada94
 
Segmentación de cauce
Segmentación de cauceSegmentación de cauce
Segmentación de cauceElvis Quenhua
 
Trabajo de gestión de la memoria principal.
Trabajo de gestión de la memoria principal.Trabajo de gestión de la memoria principal.
Trabajo de gestión de la memoria principal.Juliannys Requena
 
Diseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxDiseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxemilioSanchez89
 
Trabajo diego.exposición
Trabajo diego.exposiciónTrabajo diego.exposición
Trabajo diego.exposiciónDiego032
 
Documental de Arquitecturas Avanzadas (Computación)
Documental de Arquitecturas Avanzadas (Computación)Documental de Arquitecturas Avanzadas (Computación)
Documental de Arquitecturas Avanzadas (Computación)Kelwin Gamez
 
SISTEMAS OPERATIVOS (I Bimestre Abril Agosto 2011)
SISTEMAS OPERATIVOS (I Bimestre Abril Agosto 2011)SISTEMAS OPERATIVOS (I Bimestre Abril Agosto 2011)
SISTEMAS OPERATIVOS (I Bimestre Abril Agosto 2011)Videoconferencias UTPL
 
Arquitectura pipeline
Arquitectura pipelineArquitectura pipeline
Arquitectura pipelinerehoscript
 

La actualidad más candente (20)

Modelos y Lenguajes Para Computación Paralela
Modelos y Lenguajes Para Computación ParalelaModelos y Lenguajes Para Computación Paralela
Modelos y Lenguajes Para Computación Paralela
 
Procesamiento paralelo
Procesamiento paraleloProcesamiento paralelo
Procesamiento paralelo
 
Procesadores Vectoriales
Procesadores VectorialesProcesadores Vectoriales
Procesadores Vectoriales
 
Gestion de memoria
Gestion de memoriaGestion de memoria
Gestion de memoria
 
Arqui hardware
Arqui hardwareArqui hardware
Arqui hardware
 
Procesamiento segmentado
Procesamiento segmentado   Procesamiento segmentado
Procesamiento segmentado
 
Programación concurrente
Programación concurrenteProgramación concurrente
Programación concurrente
 
Administracion de la memoria, primeros sistemas
Administracion de la memoria, primeros sistemasAdministracion de la memoria, primeros sistemas
Administracion de la memoria, primeros sistemas
 
Segmentación
SegmentaciónSegmentación
Segmentación
 
Algoritmos de gestión de memoria
Algoritmos de gestión de memoriaAlgoritmos de gestión de memoria
Algoritmos de gestión de memoria
 
Procesamiento segmentado - INFORME
Procesamiento segmentado - INFORMEProcesamiento segmentado - INFORME
Procesamiento segmentado - INFORME
 
Unidad IV
Unidad IVUnidad IV
Unidad IV
 
Segmentación de cauce
Segmentación de cauceSegmentación de cauce
Segmentación de cauce
 
Trabajo de gestión de la memoria principal.
Trabajo de gestión de la memoria principal.Trabajo de gestión de la memoria principal.
Trabajo de gestión de la memoria principal.
 
Diseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxDiseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptx
 
Trabajo diego.exposición
Trabajo diego.exposiciónTrabajo diego.exposición
Trabajo diego.exposición
 
Que es el procesador
Que es el procesadorQue es el procesador
Que es el procesador
 
Documental de Arquitecturas Avanzadas (Computación)
Documental de Arquitecturas Avanzadas (Computación)Documental de Arquitecturas Avanzadas (Computación)
Documental de Arquitecturas Avanzadas (Computación)
 
SISTEMAS OPERATIVOS (I Bimestre Abril Agosto 2011)
SISTEMAS OPERATIVOS (I Bimestre Abril Agosto 2011)SISTEMAS OPERATIVOS (I Bimestre Abril Agosto 2011)
SISTEMAS OPERATIVOS (I Bimestre Abril Agosto 2011)
 
Arquitectura pipeline
Arquitectura pipelineArquitectura pipeline
Arquitectura pipeline
 

Destacado (13)

Teoria introduccion agilismo (Scrum y Kanban)
Teoria introduccion agilismo (Scrum y Kanban)Teoria introduccion agilismo (Scrum y Kanban)
Teoria introduccion agilismo (Scrum y Kanban)
 
Agile Open Lima VII
Agile Open Lima VIIAgile Open Lima VII
Agile Open Lima VII
 
Una introducción a la Integración continua
Una introducción a la Integración continuaUna introducción a la Integración continua
Una introducción a la Integración continua
 
Gestión Ágil de Entornos de Despliegue en la Nube 2
Gestión Ágil de Entornos de Despliegue en la Nube 2Gestión Ágil de Entornos de Despliegue en la Nube 2
Gestión Ágil de Entornos de Despliegue en la Nube 2
 
Integración y Entrega Continua con Visual Studio Online
Integración y Entrega Continua con Visual Studio OnlineIntegración y Entrega Continua con Visual Studio Online
Integración y Entrega Continua con Visual Studio Online
 
Gestión Agil de Entornos de Despliegue en la Nube
Gestión Agil de Entornos de Despliegue en la NubeGestión Agil de Entornos de Despliegue en la Nube
Gestión Agil de Entornos de Despliegue en la Nube
 
Despliegue de Aplicaciones .Net Core en Docker
Despliegue de Aplicaciones .Net Core en DockerDespliegue de Aplicaciones .Net Core en Docker
Despliegue de Aplicaciones .Net Core en Docker
 
Computo en paralelo con OpenMP y OpenMPI
Computo en paralelo con OpenMP y OpenMPIComputo en paralelo con OpenMP y OpenMPI
Computo en paralelo con OpenMP y OpenMPI
 
Introducción a Team Foundation Service, ALM en la Nube
Introducción a Team Foundation Service, ALM en la NubeIntroducción a Team Foundation Service, ALM en la Nube
Introducción a Team Foundation Service, ALM en la Nube
 
Paralela2
Paralela2Paralela2
Paralela2
 
Paralela1
Paralela1Paralela1
Paralela1
 
Programacion paralelo
Programacion paraleloProgramacion paralelo
Programacion paralelo
 
El reto del DevOps agil
El reto del DevOps agilEl reto del DevOps agil
El reto del DevOps agil
 

Similar a Introducción a la Computacion paralela

Diseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxDiseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxyadhirafelizfajardo
 
AlgoritmosParalelos.pptx
AlgoritmosParalelos.pptxAlgoritmosParalelos.pptx
AlgoritmosParalelos.pptxAnon620673
 
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Micael Gallego
 
Task Parallel Library 2014
Task Parallel Library 2014Task Parallel Library 2014
Task Parallel Library 2014Lluis Franco
 
Clase 8 algoritmos_y_programas
Clase 8 algoritmos_y_programasClase 8 algoritmos_y_programas
Clase 8 algoritmos_y_programasDr.Ing. Uriel
 
Sistemas operativos software
Sistemas operativos softwareSistemas operativos software
Sistemas operativos softwareJohan Guerra
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfymiranda2
 
Los sistemas operativos
Los sistemas operativosLos sistemas operativos
Los sistemas operativoswilsoncolcha
 
Los sistemas operativos
Los sistemas operativosLos sistemas operativos
Los sistemas operativoswilsoncolcha
 
1. Algoritmos y Programas
1. Algoritmos y Programas1. Algoritmos y Programas
1. Algoritmos y Programas1101
 
Presentacion sistemas operativos
Presentacion sistemas operativosPresentacion sistemas operativos
Presentacion sistemas operativosPedro_Pizarro
 
Equipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptxEquipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptxJuanVaggom
 
Exposicion primera unidad
Exposicion primera unidadExposicion primera unidad
Exposicion primera unidadAngel Martin
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónjusto morales
 
Computación Heterogénea: Aplicaciones y Modelado de Rendimiento
Computación Heterogénea: Aplicaciones y Modelado de RendimientoComputación Heterogénea: Aplicaciones y Modelado de Rendimiento
Computación Heterogénea: Aplicaciones y Modelado de RendimientoUnai Lopez-Novoa
 

Similar a Introducción a la Computacion paralela (20)

Diseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptxDiseño de Algoritmos Paralelos.pptx
Diseño de Algoritmos Paralelos.pptx
 
AlgoritmosParalelos.pptx
AlgoritmosParalelos.pptxAlgoritmosParalelos.pptx
AlgoritmosParalelos.pptx
 
3 unidad so2
3 unidad so23 unidad so2
3 unidad so2
 
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
 
Task Parallel Library 2014
Task Parallel Library 2014Task Parallel Library 2014
Task Parallel Library 2014
 
Clase 8 algoritmos_y_programas
Clase 8 algoritmos_y_programasClase 8 algoritmos_y_programas
Clase 8 algoritmos_y_programas
 
Sistemas operativos software
Sistemas operativos softwareSistemas operativos software
Sistemas operativos software
 
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
 
Los sistemas operativos
Los sistemas operativosLos sistemas operativos
Los sistemas operativos
 
INTRODUCCION A SISTEMAS OPERATIVOS
INTRODUCCION A SISTEMAS OPERATIVOSINTRODUCCION A SISTEMAS OPERATIVOS
INTRODUCCION A SISTEMAS OPERATIVOS
 
Los sistemas operativos
Los sistemas operativosLos sistemas operativos
Los sistemas operativos
 
1. Algoritmos y Programas
1. Algoritmos y Programas1. Algoritmos y Programas
1. Algoritmos y Programas
 
Presentacion sistemas operativos
Presentacion sistemas operativosPresentacion sistemas operativos
Presentacion sistemas operativos
 
Paralelismo Concurrencia.ppt
Paralelismo Concurrencia.pptParalelismo Concurrencia.ppt
Paralelismo Concurrencia.ppt
 
Equipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptxEquipo 2 - Exposición.pptx
Equipo 2 - Exposición.pptx
 
Computo Distribuído
Computo DistribuídoComputo Distribuído
Computo Distribuído
 
Exposicion primera unidad
Exposicion primera unidadExposicion primera unidad
Exposicion primera unidad
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programación
 
Computación Heterogénea: Aplicaciones y Modelado de Rendimiento
Computación Heterogénea: Aplicaciones y Modelado de RendimientoComputación Heterogénea: Aplicaciones y Modelado de Rendimiento
Computación Heterogénea: Aplicaciones y Modelado de Rendimiento
 
Uso de threads en C#
Uso de threads en C#Uso de threads en C#
Uso de threads en C#
 

Más de Ernesto Cardenas Cangahuala

Más de Ernesto Cardenas Cangahuala (8)

DevOps: ¿es como RRHH cree que es?
DevOps: ¿es como RRHH cree que es?DevOps: ¿es como RRHH cree que es?
DevOps: ¿es como RRHH cree que es?
 
DevOps is about people, beyond automation
DevOps is about people, beyond automationDevOps is about people, beyond automation
DevOps is about people, beyond automation
 
DevOps, automatización y... ¿cultura?
DevOps, automatización y... ¿cultura?DevOps, automatización y... ¿cultura?
DevOps, automatización y... ¿cultura?
 
Deployment Groups con VSTS
Deployment Groups con VSTSDeployment Groups con VSTS
Deployment Groups con VSTS
 
Los ciclos de desarrollo de software en la actualidad
Los ciclos de desarrollo de software en la actualidadLos ciclos de desarrollo de software en la actualidad
Los ciclos de desarrollo de software en la actualidad
 
Un DevOps Windows en el mundo Linux
Un DevOps Windows en el mundo LinuxUn DevOps Windows en el mundo Linux
Un DevOps Windows en el mundo Linux
 
En búsqueda del DevOps perdido
En búsqueda del DevOps perdidoEn búsqueda del DevOps perdido
En búsqueda del DevOps perdido
 
Integración Continua usando Team Foundation Server
Integración Continua usando Team Foundation ServerIntegración Continua usando Team Foundation Server
Integración Continua usando Team Foundation Server
 

Último

Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 

Último (19)

Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 

Introducción a la Computacion paralela

  • 1. Análisis y Diseño de Algoritmos Ernesto Cárdenas Cangahuala
  • 2. Recordando: ¿Bajo que supuesto hemos estudiado los algoritmos hasta ahora?
  • 4. Hemos supuesto que nuestros programas se ejecutaran en una maquina que solo puede ejecutar una instrucción por vez
  • 5. ¿Es eso cierto en la vida real?
  • 6. • ¿Qué ventajas podríamos sacar de esta realidad en nuestros algoritmos?
  • 7. ¿Qué es la programación paralela? • El uso de varios procesadores trabajando juntos para resolver una tarea o problema común
  • 8. Ventajas • La programación paralela permite: • Resolver problemas que no caben en una CPU • Resolver problemas que no se resuelven en un tiempo razonable • Se pueden ejecutar • Problemas mayores • Más rápidamente (aceleración) • Más problemas
  • 9. Aclarando 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 (ej: cloud) • Computación cuántica o biológica
  • 11. Recordemos • Ley de Moore: Cada dos años aproximadamente se duplica la cantidad de transistores en un circuito integrado
  • 12. Bajo la Ley de Moore… • En los 70s y 80s, cada generación de chips podía usar la mayoría de los transistores adicionales para añadir una Gran Caracteristica (unidad de punto flotante, pipelining…)que haría que el código single-threaded corra mas rápido. • En los 90s y 2000s, cada generación de chips empezó a usar los transistores adicionales para añadir o mejorar dos o tres pequeñas características que haría que el código single- threaded corra mas rápido, y luego cinco o seis características aun mas pequeñas y así sucesivamente.
  • 13. Hasta que… • “The Free Lunch is Over” (Herb Sutter, 2005) • Los fabricantes se enfocaran en mejorar el soporte multithreading y por ende los procesadores multi-core • Los desarrolladores deberán producir programas multihilo a fin de sacar mejor uso a estos procesadores
  • 14. Esto significa • Adiós esperar que la velocidad de los procesadores ayude a compensar a un software lento • Las ganancias de performance ya no serán lineales, habrá que luchar por ellas
  • 15. Los multinucleos ya no son la excepción, son la norma
  • 16. Welcome to the Jungle!
  • 17. Welcome to the Jungle! “For the first time in the history of computing, mainstream hardware is no longer a single-processor von Neumann machine, and never will be again.”
  • 18. Explotando ese terreno… • Aplicaciones que aprovechan la GPU • Esquemas donde la GPU y el CPU acceden a la misma memoria (¡Xbox!) • Intel Threading Building Blocks (TBB), Microsoft Parallel Patterns Library… • Procesadores con diferentes tipos de cores en su núcleo (¡Playstation!) • Y los modelos de cloud elásticos…
  • 20. ¿Y esto que significa para nosotros? • Las aplicaciones necesitaran ser al menos masivamente paralelas, e idealmente capaces de usar cores no locales y cores heterogéneos • La optimización de Eficiencia y performance será mas y no menos importante • Los sistemas y lenguajes de programación se verán forzados cada vez mas a lidiar con paralelismo distribuido heterogéneamente • Los entornos cloud te dan APIs para ello, hay que usarlas
  • 21. Veamos algo en acción
  • 22. Observaciones • Se logran mejores resultados si usamos mas dimensiones para el problema de las reinas • Las tareas individuales pueden durar un poco mas porque es necesario una gestión alrededor de ellas puesto que corren en procesadores separados
  • 24. Tipos de Paralelismo • Paralelismo de datos: cada procesador ejecuta la misma tarea sobre diferentes conjuntos o subregiones de datos • Paralelismo de tareas: cada procesador ejecuta una diferente tarea • La mayoría de las aplicaciones están entre estos dos extremos
  • 25. Cuidados y riesgos • Hasta ahora asumíamos que se efectuaba una instrucción por vez sobre una única variable • Cuidar lo que pasa cuando varios procesos asignen nuevos valores a una variable en paralelo • ¿Se puede suponer que la variable tiene el ultimo valor asignado? • ¿Sabemos cual es el resultado real de dicha asignación? • ¿Y si dependemos que un conjunto de variables alcance cierto valor? ¿Quién coordina?
  • 26. Consideraciones • Los códigos paralelos rápidos requieren un eficiente uso del escalamiento del hardware • No todos los algoritmos escalares pueden ser paralelizados bien, puede ser necesario repensar el problema • Comunicación: Necesidad de minimizar el gasto del tiempo de comunicación • Balanceo de Carga: Todos los procesadores deben hacer aprox. el mismo trabajo
  • 27. Topes • Ley de Amdahl’s: Limite fundamental de la computación paralela pues predice que existe un máximo de escalabilidad para una aplicación (para un conjunto de datos de tamaño fijo), y este limite, generalmente, no es muy grande • Ley de Gustafson’s indica que cualquier problema suficientemente grande puede ser eficientemente paralelizado
  • 28. Rendimiento • Un código paralelo bien entendido es un buen código escalar. • Si un código escala a 256 procesadores pero sólo se obtiene un 1% de mejora de rendimiento en un pico, éste es un mal código paralelo. • Noticia buena: Cada cosa que usted sabe acerca de la computación serial es útil en la computación paralela! • Noticia mala: Es difícil obtener un buen rendimiento de procesadores y memoria en máquinas paralelas. Se necesita un uso efectivo de caché.
  • 29. Eficiencia y optimización • En términos generales se considera que un alg. Paralelo hace mas cálculos en t segundos con 20 procesadores que con cinco, así trabajo = procesadores * tiempo • Se requiere un numero polinómico de procesadores y un tiempo polilogaritmico para ser eficiente • Se es optimo si se es eficiente en trabajo respecto al mejor algoritmo secuencial posible
  • 30. Aunque… • Hay problemas sin solución secuencial eficiente, así que no podemos esperar una solución paralela eficiente • Hay muchos problemas con solución secuencial eficiente pero sin solución paralela eficiente, en algunos casos esto no ha sido demostrado
  • 31. La 1ra. Pregunta a Responder antes de Paralelizar • Detenerse a pensar • ¿La cantidad de CPU disponibles justifican la paralelización? • ¿Se necesita una máquina paralela para obtener suficiente memoria agregada? • ¿El código va a ser usado una sóla vez o se usará para una mayor producción? • El tiempo es valioso, se puede consumir mucho tiempo para escribir, depurar, y probar un código paralelo. Mucho tiempo se gasta en escribir un código paralelo.
  • 32. La 2da. Pregunta a Responder antes de Paralelizar • ¿Cómo se debe descomponer el problema? • ¿Los computos consisten de un gran número de pequeños e independientes problemas - trayectorias, parámetros del espacio estudiado, etc? Se puede considerar un esquema en el cual cada procesador realiza el cálculo para diferentes conjuntos de datos • ¿Cada computo requiere mucha memoria y CPU? Probablemente hay que distribuir un simple problema hacia múltiples procesadores
  • 33. Ojo, recuerda que tus múltiples procesos no necesariamente corren en una única maquina, el cloud también es computación paralela ;)