Está en la página 1de 5

Resumen: El procesamiento paralelo y su aplicación en la computación se ha vuelto cada vez más relevante

debido al aumento exponencial en el volumen de datos y la necesidad de procesarlos. Se mencionan diferentes


modelos de programación paralela, incluyendo memoria compartida, hilos, paso de mensajes, datos paralelos y
memoria distribuida. Además, se habla sobre la escalabilidad en sistemas paralelos y la importancia de
considerarla al diseñar sistemas de alto rendimiento. Se menciona el modelo de memoria de acceso aleatorio
paralela (PRAM), que consiste en procesadores conectados a una gran memoria de acceso aleatorio compartida,
y se discute su implementación en hardware real.

Palabras clave: Cómputo Paralelo, Escalabilidad, Arquitectura Paralela.

Introducción:

En un mundo en constante crecimiento de datos, es necesaria la implementación del


procesamiento paralelo para manejar conjuntos de datos extremadamente grandes. El interés
en el procesamiento paralelo inició en la década de 1960 con la creación de la primera
supercomputadora del mundo, la ILLIAC IV. La computación paralela es el uso simultáneo
de múltiples recursos informáticos para resolver problemas computacionales y se puede
aplicar a nivel hardware/software, algorítmico, de programación y diseño de redes de
interconexión. Los modelos de programación paralela más comunes son la memoria
compartida, subprocesos, memoria distribuida/paso de mensajes, datos en paralelo, híbrido,
datos múltiples de programa único (SPMD) y datos múltiples de programa múltiple
(MPMD). La escalabilidad es un aspecto importante a considerar al diseñar sistemas de alto
rendimiento para mantener un alto nivel de rendimiento al aumentar el tamaño del problema
o del conjunto de datos.

Paralelismo.

Para Parhami B. (2019).


Las computadoras de alto rendimiento son muy deseadas en las áreas de análisis estructural,
pronóstico del tiempo, simulaciones aerodinámicas, inteligencia artificial, etc. Lograr un alto
rendimiento depende no solo del uso de dispositivos de hardware más rápidos y confiables,
sino también de mejoras importantes en la arquitectura de la computadora y técnicas de
procesamiento como como paralelismo.

Tradicionalmente, el software se ha escrito para el cálculo en serie. La computación paralela


es el uso simultáneo de múltiples recursos informáticos para resolver problemas
computacionales. El paralelismo se refiere a la técnica de dividir una tarea grande en
subtareas más pequeñas, que pueden ser ejecutadas simultáneamente por diferentes
procesadores o núcleos de un sistema. Es el futuro de la informática, distingue la arquitectura
multiprocesador por instrucción y datos.

Para Chatterjee, Koushik y Joshi, Sumit. (2013).


La discrepancia entre la tasa de crecimiento explosivo en los volúmenes de datos y las
tendencias de mejora en el procesamiento y las velocidades de acceso a la memoria requiere

1
que se aplique el procesamiento paralelo al manejo de conjuntos de datos extremadamente
grandes. El interés en el procesamiento paralelo comenzó en la década de 1960 con el diseño
de ILLIAC IV, generalmente reconocida como la primera supercomputadora del mundo.

El paralelismo aplicado a hardware/software.

Para Chatterjee, Koushik y Joshi, Sumit. (2013).


El paralelismo se puede aplicar a nivel hardware/software (o) a nivel algorítmico, de
programación y de diseño de redes de interconexión en sistemas multiprocesador. El nivel de
programación de paralelización cubre muchos modelos y tendencias de programación.

Hay varias tendencias en el modelo de programación paralela que son de uso común.
Memoria compartida (sin subprocesos), subprocesos, memoria distribuida/paso de mensajes,
datos en paralelo, híbrido, datos múltiples de programa único (SPMD), datos múltiples de
programa múltiple (MPMD).

Ejemplos donde se aplica el paralelismo:

Para Parhami B. (2019).


1. Tendencias y modelos de procesamiento paralelo.
2. Heterogeneidad y aceleración de hardware.
3. Redes de Interconexión.
4. Mapeo, Programación y virtualización.
5. Direcciones futuras.

Características operativas del cómputo paralelo:

Para Chatterjee, Koushik y Joshi, Sumit. (2013).


1. Memoria compartida:
Aparece para el usuario como una única memoria compartida, a pesar de las
implementaciones de hardware.
Se pueden usar bloqueos y semáforos para controlar el acceso a la memoria compartida.
El desarrollo del programa se puede simplificar ya que no hay necesidad de especificar
explícitamente la comunicación entre tareas.

2. Hilos:
Un solo proceso puede tener múltiples rutas de ejecución simultáneas.
Normalmente se usa con una arquitectura de memoria compartida.
El programador es responsable de determinar todo el paralelismo.

3. Paso de mensajes:
Las tareas intercambian datos enviando y recibiendo mensajes.
Normalmente se usa con arquitecturas de memoria distribuida.
La transferencia de datos requiere que cada proceso realice operaciones cooperativas.

2
4. Datos paralelos:
Tareas que realizan las mismas operaciones en un conjunto de datos. Cada tarea trabaja en
una pieza separada del conjunto.
Funciona bien con arquitecturas de memoria compartida o de memoria distribuida.

5. Memoria distribuida:
Cada procesador tiene su propia memoria.
Es escalable, sin gastos generales para la coherencia de caché.
El programador es responsable de muchos detalles de la comunicación entre procesadores.

Relación entre algoritmo y arquitectura paralela.

Para Chatterjee, Koushik y Joshi, Sumit. (2013).


Un algoritmo secuencial es aquel que se ejecuta en una máquina de propósito general,
determinista y de acceso aleatorio, en la que cada instrucción se ejecuta una tras otra en orden
secuencial. En cambio, un algoritmo paralelo se ejecuta en una máquina en la que varias
instrucciones pueden ejecutarse simultáneamente, lo que permite la ejecución de múltiples
tareas en paralelo.

El modelo de memoria de acceso aleatorio paralela (PRAM) es un modelo de computación


paralela que consiste en procesadores conectados a una gran memoria de acceso aleatorio
compartida. Los procesadores disponen de memoria privada para uso computacional, pero
toda la comunicación entre ellos se realiza a través de la memoria compartida. En un
algoritmo PRAM, todos los procesadores ejecutan el mismo programa, pero cada procesador
"conoce" su propio índice y el tamaño de la entrada. La entrada se encuentra en las primeras
celdas de memoria y la salida se coloca en la celda 0.

La implementación del modelo PRAM en hardware real sería difícil y costosa debido a la
complejidad de la red de comunicación que permite a todos los procesadores acceder a
cualquier celda de memoria al mismo tiempo y escribir en cualquier celda en un paso
temporal. Por lo tanto, otros modelos de cálculo paralelo, como el hipercubo, son más
similares al hardware real y tienen sus propias restricciones y limitaciones.

Escalabilidad en sistemas paralelos.

Para Parhami B. (2019).


La escalabilidad en sistemas paralelos se refiere a la capacidad del sistema para manejar un
aumento en el tamaño del problema o del conjunto de datos, ya sea mediante la adición de
más nodos de procesamiento o mediante la utilización de nodos de procesamiento más
potentes.

En otras palabras, la escalabilidad se refiere a la capacidad de un sistema paralelo para


mantener un alto nivel de rendimiento cuando el tamaño del problema o del conjunto de datos

3
aumenta. Un sistema paralelo escalable es aquel que puede manejar eficientemente un
aumento en el tamaño del problema, sin degradar significativamente el rendimiento.

La escalabilidad es un aspecto importante a considerar al diseñar sistemas de alto


rendimiento, ya que los conjuntos de datos y los problemas a menudo crecen en tamaño con
el tiempo, y se necesitan sistemas que puedan manejar estos aumentos en tamaño de manera
eficiente. Por lo tanto, es fundamental que los algoritmos y las arquitecturas paralelas sean
diseñados y optimizados para ser escalables en función del tamaño del problema o del
conjunto de datos.

Dificultades del procesamiento paralelo.

Para Parhami B. (2019).


1. Granularidad del problema:
La granularidad del problema se refiere a la cantidad de trabajo que se puede asignar a cada
procesador en un sistema paralelo. Si el problema es demasiado pequeño, el procesamiento
paralelo no será eficiente, ya que el tiempo de comunicación y la sincronización entre los
procesadores pueden ser mayores que el tiempo necesario para resolver el problema. Por otro
lado, si el problema es demasiado grande, puede ser difícil de dividir en tareas que se puedan
ejecutar de manera paralela. Por lo tanto, es importante encontrar un equilibrio adecuado
entre la granularidad del problema y la cantidad de procesadores utilizados para resolverlo.
2. Comunicación y sincronización
En un sistema paralelo, la comunicación y la sincronización entre los procesadores son
fundamentales para el rendimiento. Sin embargo, la comunicación y la sincronización pueden
ser difíciles de implementar y pueden consumir una cantidad significativa de tiempo de
procesamiento. Además, si la comunicación y la sincronización no se gestionan
adecuadamente, pueden generar cuellos de botella y degradar el rendimiento del sistema.
3. Diseño y programación
El diseño y la programación de algoritmos y aplicaciones para sistemas paralelos pueden ser
muy complejos y requerir habilidades especializadas. Los programadores deben ser capaces
de dividir el problema en tareas que se puedan ejecutar de manera paralela y diseñar
algoritmos que sean eficientes en términos de uso de recursos. Además, la programación para
sistemas paralelos puede requerir el uso de herramientas y lenguajes de programación
especializados, lo que puede aumentar la complejidad y la dificultad para los programadores.

Conclusión

El aumento exponencial en el volumen de datos y las tendencias de mejora en el


procesamiento y velocidades de acceso a la memoria requieren el uso del procesamiento
paralelo en el manejo de conjuntos de datos extremadamente grandes. El procesamiento
paralelo es el uso simultáneo de múltiples recursos informáticos para resolver problemas
computacionales y es considerado el futuro de la computación. Este se puede aplicar a nivel
hardware/software o algorítmico, de programación y de diseño de redes de interconexión en
sistemas multiprocesador. Se pueden aplicar varios modelos de programación paralela como

4
memoria compartida, subprocesos, memoria distribuida paso de mensajes, datos en paralelo,
híbrido, datos múltiples de programa único y datos múltiples de programa múltiple. La
escalabilidad es un aspecto importante a considerar al diseñar sistemas de alto rendimiento ya
que permite que los sistemas paralelos manejen eficientemente un aumento en el tamaño del
problema o del conjunto de datos.

Referencias

[1] Parhami B. (2019) Parallel Processing with Big Data. In: Sakr S., Zomaya A.Y. (eds)
Encyclopedia of Big Data Technologies. Springer, Cham; DOI
https://doi.org/10.1007/978-3-319-77525-8_165;https://web.ece.ucsb.edu/~parhami/pubs_fol
der/parh19b-ebdt-parallel-proc-big-data.pdf

[2] Chatterjee, Koushik & amp; Joshi, Sumit. (2013). An Overview on High Performance
Issues of Parallel Architectures. Internet Technologies and Application Research. V.1. 11-17.
DOI 10.12966/itar.09.01.2013.
https://www.researchgate.net/publication/259181530_An_Overview_on_High_Performance_
Issues_of_Parallel_Architectures

[3] Revista México ambiental, El Centro de Datos y Cómputo de Alto Rendimiento de la


UNAM, posee la colección de datos científicos más importante de México; enero 2019;
https://www.mexicoambiental.com/el-centro-de-datos-y-computo-de-alto-rendimiento-de-la-
unam-posee-la-coleccion-de-datos-cientificos-mas-importante-de-mexico/

También podría gustarte