2. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
01 {
[Qué Son Los Algoritmos En
Paralelo?]
< Son aquellos diseñados para ejecutarse en
múltiples procesadores simultáneamente,
permitiendo la realización de varias
operaciones en paralelo en lugar de
secuencialmente. >
}
Algoritmos Paralelos
forbeginners.html workshop.css
3. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
02 {
[Qué Son Los Algoritmos
Secuenciales?]
< Son los típicos algoritmos tradicionales.
En el cual, un paso va después del otro. >
}
Algoritmos Paralelos
forbeginners.html workshop.css
4. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
Tipos De ‘Paralelismo’ {
}
A Nivel
De Datos
Divide los datos de entrada en subconjuntos que se
procesa simultáneamente. Todos los procesadores
realizan la misma tarea.
A Nivel
De Bits
Aumenta el tamaño de la cadena de bits procesada
simultáneamente, lo que puede reducir el número de
instrucciones necesarias para ejecutar un programa.
A Nivel De
Instrucciones
Consiste en segmentar las instrucciones
de un programa para que puedan ejecutarse
en paralelo sin cambiar el resultado
final.
A Nivel De
Tareas
Se basa en descomponer el problema en
tareas más pequeñas que se resuelven
simultáneamente.
Programming Language
forbeginners.html workshop.css
5. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
03 {
[Ventajas y Desventajas]
< Este paradigma de programación presenta un
número de ventajas y desventajas que un
programador debe de tener en cuenta a la
hora de utilizarlo.>
}
Algoritmos Paralelos
forbeginners.html workshop.css
6. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Resuelve problemas que no se podían resolver
en un tiempo razonable.
// Permite la ejecución del código de manera más
rápida.
// Divide una tarea en partes independientes.
// Otorga mejor balance entre el rendimiento y el
costo que la computación secuencial.
// Gran escalabilidad
// Permite ejecutar problemas de una complejidad
mayor.
Ventajas() {
Programming Language
forbeginners.html workshop.css
}
7. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
Desventajas() {
Programming Language
forbeginners.html workshop.css
}
// Consume más energía
// A veces hay dificultad para obtener una buena
sincronización entre las diferentes tareas
divididas
// La comunicación entre tareas puede generar
retardos
// El incremento de componentes también implica
un incremento en probabilidades de fallos
8. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
04 {
[Leyes para los Algoritmos
Paralelos]
< Existen varias leyes que establecen
ciertas características de este tipo de
estilo de programación.>
}
Algoritmos Paralelos
forbeginners.html workshop.css
9. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
Leyes {
< Propone que el número de transistores en un
microprocesador se duplica cada dos años. El incremento de
transistores implica mayores recursos para poder utilizar
algoritmos paralelos.>
< Establece el como cualquier problema suficientemente
grande puede ser eficientemente paralelizado.>
Ley de Gustafson
< Establece que la mejora obtenida en el rendimiento al
utilizar algún modo de ejecución más rápido está limitada por
la fracción de tiempo que se puede utilizar ese modo más
rápido. >
Ley de Amdahl
Ley de Moore
}
Programming Language
forbeginners.html workshop.css
10. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
05 {
[Automático vs. Manual]
< Estos dos tipos de paralelismos funcionan
de distintas maneras que pueden afectar el
desempeño del código.>
}
Algoritmos Paralelos
forbeginners.html workshop.css
11. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
< El compilador automáticamente encuentra oportunidades
de paralelismo al analizar el código (usualmente los
bucles). El análisis incluye identificar si hay una
mejor en el rendimiento del algoritmo al aplicar el
paralelismo. >
Automático {
Programming Language
forbeginners.html workshop.css
}
< El programador utiliza las directivas del compilador
de manera explícita para decirle al compilador cómo
quiere paralelizar el código.
Manual {
}
13. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
< En un sistema concurrente, múltiples procesos o hilos
de ejecución avanzan de intercaladamente. Esto puede ser
logrado a través de técnicas como la multitarea
cooperativa o la multitarea preemptiva. >
Concurrencia {
Programming Language
forbeginners.html workshop.css
}
14. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
< La diferencia entre concurrencia y paralelismo es que
en los sistemas concurrentes se está malabareando entre
procesos para simular que se están haciendo
simultáneamente mientras que en el paralelismo si se
están ejecutando al mismo tiempo. >
Diferencia con el paralelismo{
Programming Language
forbeginners.html workshop.css
}
15. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
Ventajas y Desventajas (Concurrencia){
Ventajas:
∗ Es menos complicado de diseñar que el
paralelismo.
∗ Permite compartir recursos entre
diferentes procesos o hilos de ejecución.
Desventajas:
∗ Es más complicado de programar que el
paralelismo y puede llevar a problemas de
sincronización.
∗ Puede afectar negativamente al rendimiento
del sistema ya que necesita sincronizar
los procesos.
Programming Language
forbeginners.html workshop.css
}