2. Introducción
El dinámico ámbito del diseño de algoritmos paralelos ha tenido lugar un viaje transformador
en la última década, reconfigurando nuestra aproximación a los desafíos computacionales. En
esta presentación, buscamos explorar los conceptos de paralelismo, la necesidad de utilizar
algoritmos paralelos, los tipos de algoritmos paralelos, los modelos existentes, técnicas y
demás.
Mediante este medio, queremos proveer una visión actualizada sobre el tema de los algoritmos
paralelos, con el objetivo de comprender la importancia de los mismos y entender las
vertientes que puedan seguir en los años venideros.
4. El paralelismo en algoritmos paralelos se refiere a la capacidad de
realizar múltiples tareas o procesos simultáneamente en un sistema
computacional. En lugar de ejecutar una tarea tras otra en secuencia,
como en un algoritmo convencional, los algoritmos paralelos dividen
la tarea en partes más pequeñas que pueden ser ejecutadas al mismo
tiempo en diferentes procesadores o núcleos de procesamiento.
Esto permite un aumento en el rendimiento y la velocidad de
procesamiento, ya que se pueden realizar más operaciones
simultáneamente. El paralelismo es especialmente útil en
aplicaciones que requieren un alto grado de procesamiento, como la
simulación, el procesamiento de imágenes, el análisis de datos
masivos y la inteligencia artificial.
¿Qué es el paralelismo?
5. Los algoritmos en paralelo surgieron como respuesta a la necesidad de
procesar grandes volúmenes de datos y realizar tareas complejas de manera
más eficiente. A medida que la tecnología avanzaba, se volvía cada vez más
difícil mejorar el rendimiento de los procesadores individuales debido a
limitaciones físicas y de diseño.
Los algoritmos en paralelo aprovechan el poder de múltiples procesadores o
núcleos de procesamiento trabajando simultáneamente para dividir las tareas
en partes más pequeñas y ejecutarlas de manera concurrente. Esto permite un
mayor rendimiento y una reducción en el tiempo de procesamiento, lo que
resulta especialmente beneficioso para aplicaciones que requieren un alto
grado de computación, como el procesamiento de imágenes, la simulación
científica, el análisis de datos masivos y la inteligencia artificial.
¿Por qué surgieron los
algoritmos en paralelo?
7. Algoritmos de descomposición de datos: Dividen el conjunto de datos en partes más pequeñas que pueden
ser procesadas de manera independiente en paralelo. Ejemplos incluyen la división de matriz para
operaciones matriciales y la partición de datos en algoritmos de búsqueda y ordenación.
Algoritmos de descomposición de tareas: Dividen una tarea en sub-tareas que pueden ser ejecutadas en
paralelo. Esto se utiliza en algoritmos como la división y conquista, donde se dividen problemas complejos
en subproblemas más simples que se resuelven por separado antes de combinar los resultados.
Algoritmos de flujo de datos: Modelan problemas como flujos de datos y operan sobre ellos de manera
concurrente. Este enfoque es común en aplicaciones de procesamiento de señales, procesamiento de
imágenes y análisis de datos en tiempo real.
Algoritmos de malla: Utilizan una estructura de malla o red para dividir el problema en partes que pueden
ser resueltas de manera independiente. Estos algoritmos son comunes en aplicaciones de simulación
numérica y modelado de sistemas físicos.
Tipos de Algoritmos en Paralelo
9. Modelos Paralelos de Computación
La búsqueda de un modelo paralelo estandarizado de computación ha sido un desafío
formidable, marcado por las diversas arquitecturas y funcionalidades de los sistemas de
computación paralela.
Principios Clave Explorados:
- Eficiencia en el Trabajo: Enfatizando la importancia de la eficiencia sobre la
velocidad bruta, donde el número total de operaciones o trabajo ejecutado por un
algoritmo sirve como una métrica fundamental.
- Emulación: Destacando el concepto de que los modelos no necesitan replicar
máquinas reales con precisión; el enfoque radica en la traducción fluida de
algoritmos eficientes a eficiencia computacional en el mundo real.
- Modelado de la Comunicación: Adentrándose en la consideración explícita de
aspectos de comunicación como latencia, ancho de banda y topología de red para
optimizar el rendimiento y la escalabilidad en entornos de computación paralela.
10. Técnicas Algorítmicas
● Las técnicas algorítmicas fundamentales desempeñan un
papel crucial en el diseño y optimización de algoritmos
paralelos, con algunas técnicas diseñadas específicamente
para explotar el paralelismo.
● Paradigma de Divide y Vencerás: Revelando el enfoque natural
de descomponer problemas complejos en subproblemas
manejables para su resolución concurrente, fomentando la
ejecución paralela y una eficiencia computacional mejorada.
● Exploración de Otras Técnicas: Revelando la importancia de
los separadores de grafos para la partición de datos,
estrategias de equilibrio de carga a través de hashing y
métodos iterativos como alternativas a los solucionadores
directos de sistemas lineales, culminando en el desarrollo de
algoritmos paralelos eficientes en diversos dominios de
problemas.
11. Teoría de la Complejidad Paralela
● Estableciendo paralelismos con la NP-completitud,
la evolución de una sólida teoría de complejidad
paralela ha sido fundamental para comprender las
complejidades computacionales de los algoritmos
paralelos.
● Clase NC y P-Completitud: Revelando la
clasificación de problemas resolubles en tiempo
polilogarítmico con un número polinómico de
procesadores (Clase NC) y problemas resolubles en
tiempo polinómico (P-Completitud), con
implicaciones para la tratabilidad de problemas en
computación paralela.
● Ejemplificación a través de Problemas: Ilustrando
los conceptos a través de ejemplos como el flujo
máximo y las envolventes convexas, mostrando la
profundidad y amplitud de la teoría de complejidad
paralela en el análisis de desafíos computacionales.
12. Tendencias Futuras e Implicaciones
● Anticipando un cambio de paradigma en la
utilización de algoritmos paralelos con la
proliferación de computadoras personales multi-
procesador y el advenimiento de tecnologías de
computación paralela.
● Visualizando avances continuos en el diseño y
comprensión de algoritmos paralelos, allanando el
camino para soluciones innovadoras a problemas
computacionales complejos en diversos dominios y
aplicaciones.
13. Tendencias Futuras e Implicaciones
A medida que navegamos por el intrincado
panorama del diseño de algoritmos paralelos,
caracterizado por una búsqueda incansable de
eficiencia, técnicas algorítmicas innovadoras y una
profunda comprensión de la teoría de la
complejidad, el futuro promete un inmenso
potencial para nuevos avances en computación
paralela. El impacto transformador de los
algoritmos paralelos en los paradigmas de
computación modernos subraya el papel crítico que
desempeñan en la configuración del futuro de la
ciencia y tecnología computacional.
14. Rasterización de Polígonos
● La rasterización de polígonos es un proceso en los
gráficos por computadora que implica convertir
descripciones de formas geométricas definidas de
manera abstracta en una representación discreta
apropiada para su visualización. En términos de
gráficos por computadora, un polígono es una figura
geométrica plana definida por una secuencia de
vértices ordenada conectada por segmentos de línea
recta.
● Este proceso se encarga de determinar que píxeles
están contenidos dentro del polígono, para
asignarles una propiedad o color, dependiendo de la
apariencia del polígono. Este proceso, claramente,
varía de polígono en polígono, por lo que puede
tener una complejidad considerable.
15. Algoritmos Paralelos para la
Rasterización de Polígonos
● Debido a lo mencionado anteriormente, se ha discutido un
algoritmo paralelo que busca rasterizar polígonos en
implementaciones gráficas 3D. El mismo, utiliza funciones de borde
lineales para la computación eficiente de funciones de borde para
píxeles adyacentes. Este algoritmo está limitado por el ancho de
banda de memoria, siendo adecuado para buffers de imagen que
utilizan DRAM y VRAM convencional.
Este algoritmo trata 4 puntos fundamentales:
● -Diseño de un Motor de Gráficos Raster
● -Imágenes “Jag-Free” en Pantallas Raster
● -Recorte/Clipping
● -Diseño de Memoria para Pantallas de Gráficos Raster
16. Diseño de un Motor de Gráficos
Raster
● Es fundamental el diseño de un motor de gráficos
ráster para la presentación eficiente de polígonos
en entornos 3D. La renderización rápida de
polígonos 3D interpolados linealmente con Z-buffer
es esencial para las estaciones de trabajo. La
computación precisa de los límites de los polígonos
es esencial para la rasterización de un frame buffer,
garantizando una representación visual adecuada y
detallada de los objetos 3D en la pantalla. Todo
esto sin mencionar que la optimización de los
algoritmos de rasterización es vital para un
rendimiento óptimo en la visualización en tiempo
real de los gráficos.
17. Imágenes “Jag-Free” en Pantallas
Raster
● La técnica tradicional para evitar el
efecto de “Jag” implica uso de
algoritmos de interpolación de
líneas para los bordes de los
polígonos. Pero, el sistema “Pixel-
Planes” busca innovar y utilizar un
árbol de multiplicadores paralelo
para calcular funciones lineales para
todos los píxeles en el frame buffer,
permitiendo una representación más
suave y realista de los objetos.
18. Recorte/Clipping
● Este puede ser comprendido como bordes
adicionales de un polígono que forman parte del
valor del píxel. Al considerar esto, un algoritmo de
recorrido inteligente evitará renderizar áreas
recortadas de un polígono, optimizando la
renderización, mejorando la eficiencia en la
representación, lo cual mejora significativamente la
calidad final.
19. Diseño de Memoria para Pantallas de
Gráficos Raster
● La organización de los buffers de imagen en marcos
gráficos permite acceso simultáneo a bloques de
píxeles adyacentes, facilitando el cálculo paralelo
de funciones de borde para varios píxeles dentro de
un bloque. Esta capacidad en paralelo mejora la
eficiencia en la renderización de polígonos y la
determinación de si un píxel debe ser dibujado en
un ciclo único. La combinación de diseño y
algoritmos optimizados facilita una renderización
eficiente y de alta calidad en entornos gráficos,
mejorando la experiencia visual del usuario.
20. Conclusión
Los algoritmos paralelos son una gran herramienta dentro de la computación moderna, que abre
una serie de posibilidades explorables nuevas en la resolución eficiente de problemas
complejos. Luego de explorar la temática del paralelismo, hemos observado su importancia
creciente en un entorno tecnológico cada vez más demandante. Desde su utilización en la
renderización de gráficos tridimensionales hasta sus intervenciones en el procesamiento de
grandes volúmenes de datos, los algoritmos paralelos están redefiniendo los límites de la
computación y desafiando el status quo. Orientado en la optimización del rendimiento y la
utilización eficiente de recursos, estos algoritmos proveen la capacidad de enfrentar desafíos
computacionales con mayor agilidad y precisión. Los algoritmos paralelos seguirán siendo un
área de investigación vital y providenciales para la innovación en la era digital.
21. Lista de referencias
Blelloch, G. E., & Maggs, B. M. (1996). Parallel algorithms. ACM Computing Surveys, 28(1), 51-54.
https://doi.org/10.1145/234313.234339 Microsoft. (2023, 16 junio). Algoritmos paralelos.
Microsoft Learn. Recuperado 24 de marzo de 2024, de https://learn.microsoft.com/es-es/cpp/parallel/concrt/parallel-
algorithms?view=msvc-170
Orenia, L. M., Taymi, C. C., Alejandro, R. S., & Humberto, D. P. (2017, 6 febrero). Algoritmo paralelo para la obtención
de predicados difusos: Parallel Algorithm to obtain fuzzy predicates. Recuperado 24 de marzo de 2024, de
http://scielo.sld.cu/scielo.php?script=sci_arttext&pid=S2227-18992017000200009
Pineda, J. A. (1988). A parallel algorithm for polygon rasterization. ACM Computing Surveys, 22(2).
https://doi.org/10.1145/54852.378457