investigación de los Avances tecnológicos del siglo XXI
Procesamiento Paralelo en programacion - Presentacion
1. Procesamiento Paralelo
El procesamiento paralelo es una técnica en la que múltiples tareas o
instrucciones se ejecutan simultáneamente para mejorar la eficiencia y el
rendimiento en sistemas computacionales. En lugar de realizar
operaciones de manera secuencial, el procesamiento paralelo permite la
ejecución simultánea de múltiples operaciones, ya sea dividiendo una
tarea grande en partes más pequeñas o realizando múltiples tareas
independientes al mismo tiempo.
Delio Yunior Díaz 2-18-0335
2. Principios Básicos del Procesamiento
Paralelo
1 División de Tareas
En un sistema que utiliza procesamiento paralelo, las tareas se dividen en subconjuntos
más pequeños que pueden ejecutarse simultáneamente. Esta división puede basarse en
la naturaleza de las tareas o en la estructura del problema que se está abordando.
2 Ejecución Simultánea
Cada subconjunto de tareas se procesa al mismo tiempo utilizando múltiples núcleos de
procesador, unidades de procesamiento gráfico (GPU) o incluso sistemas distribuidos.
Esto permite una mayor velocidad de procesamiento en comparación con la ejecución
secuencial.
3 Coordinación y Sincronización
A medida que las tareas se ejecutan simultáneamente, es crucial tener mecanismos de
coordinación y sincronización para garantizar que los resultados se combinen
correctamente al final. Esto evita problemas como condiciones de carrera y asegura la
coherencia de los datos.
3. Importancia del Procesamiento
Paralelo
1 Rendimiento Mejorado
El procesamiento paralelo mejora el rendimiento general al realizar varias tareas al mismo
tiempo, lo que es crucial para aplicaciones que requieren un procesamiento rápido y
eficiente.
2 Manejo Eficiente de Grandes Conjuntos de Datos
En entornos que trabajan con grandes cantidades de datos, como análisis de big data y
aprendizaje automático, el procesamiento paralelo facilita la manipulación eficiente de estos
conjuntos de datos masivos.
3 Aplicaciones Científicas y de Simulación
En campos como la simulación científica, la capacidad de dividir y procesar tareas
simultáneamente es esencial para abordar problemas complejos en un tiempo razonable.
4. Modelos de cómputo paralelos
Memoria Compartida
(Shared Memory)
En este modelo, varios
procesadores comparten un
espacio de memoria común.
Cada procesador puede
acceder y modificar
directamente la memoria
compartida.
Memoria Distribuida
(Distributed Memory)
En lugar de compartir
memoria, cada procesador en
este modelo tiene su propia
memoria local. La
comunicación entre
procesadores se realiza
mediante paso de mensajes.
Modelo de
Procesamiento en
Flujo (Dataflow Model)
Este modelo se centra en la
ejecución de operaciones a
medida que los datos están
disponibles. Cada tarea se
ejecuta tan pronto como sus
datos de entrada están listos.
5. Desempeño computacional de
algoritmos paralelos
1 Speedup
El speedup (aceleración) es una medida fundamental que compara el tiempo de
ejecución de un algoritmo paralelo con el tiempo de ejecución de su equivalente
secuencial.
2 Eficiencia
La eficiencia se refiere a la proporción del speedup en relación con el número de
procesadores o núcleos utilizados.
3 Ley de Amdahl
Propuesta por Gene Amdahl, esta ley establece que el speedup de un programa
paralelo está limitado por la fracción secuencial del programa.
6. Complejidad de la comunicación
Latencia y Ancho de
Banda
Latencia: Es el tiempo que
tarda un mensaje en ser
transmitido desde el emisor
hasta el receptor. Reducir la
latencia es importante para
minimizar el tiempo de espera
entre la solicitud y la
recepción de datos.
Overhead de
Comunicación
Cada operación de
comunicación introduce cierto
overhead. Puede incluir la
preparación de los datos, el
envío, la recepción y
cualquier operación de
sincronización necesaria para
coordinar los procesadores.
Modelo de
Comunicación
El modelo de comunicación
utilizado en un algoritmo
paralelo influye en su
complejidad.
7. Topología de Red
1 Topología de Red
La topología de red utilizada en un sistema paralelo afecta la complejidad de la
comunicación. Topologías como anillo, malla, o árbol pueden influir en la distancia
física entre nodos y, por lo tanto, en la latencia y el ancho de banda.
2 Granularidad de la Comunicación
La granularidad de la comunicación se refiere al tamaño relativo de los mensajes
intercambiados.
3 Balance de Carga y Comunicación
El desequilibrio en la carga de trabajo puede conducir a una comunicación
ineficiente.
8. Optimización
Identificación de
Cuellos de Botella
Realizar un análisis detallado
del código para identificar las
partes que limitan el
rendimiento.
Profilado del Código
Utilizar herramientas de
perfilado para analizar el
comportamiento del programa
en términos de tiempo de
ejecución, uso de CPU,
acceso a memoria, y otros
aspectos.
Optimización de
Algoritmos
Revisar y, si es necesario,
modificar algoritmos para
hacerlos más eficientes.
9. Optimización de Comunicación
1 Optimización de Comunicación
Minimizar la comunicación entre procesadores o nodos, ya que la sobrecarga de
comunicación puede ser un factor limitante.
2 Afinidad de Procesadores
Asignar tareas a procesadores específicos para aprovechar la afinidad de memoria y
minimizar la latencia de acceso a datos.
3 Gestión de Memoria
Optimizar el uso de la memoria, minimizando las operaciones de lectura/escritura
innecesarias y evitando fugas de memoria.