El renderizado paralelo (o renderizado distribuido ) es la aplicación de la programación paralela al dominio computacional de los gráficos por computadora . La representación de gráficos puede requerir recursos computacionales masivos para escenas complejas que surgen en visualización científica , visualización médica , aplicaciones CAD y realidad virtual . Investigaciones recientes también han sugerido que la representación en paralelo se puede aplicar a los juegos móviles para disminuir el consumo de energía y aumentar la fidelidad gráfica. [1] El renderizado es un paralelismo vergonzoso carga de trabajo en múltiples dominios (por ejemplo, píxeles, objetos, marcos) y, por lo tanto, ha sido objeto de mucha investigación.
Distribución de la carga de trabajo
Hay dos razones, a menudo contrapuestas, para utilizar la representación en paralelo. La escala de rendimiento permite que los fotogramas se representen más rápidamente, mientras que la escala de datos permite visualizar conjuntos de datos más grandes. Los diferentes métodos de distribución de la carga de trabajo tienden a favorecer un tipo de escala sobre el otro. También puede haber otras ventajas y desventajas, como problemas de latencia y equilibrio de carga . Las tres opciones principales para que las primitivas se distribuyan son marcos completos, píxeles u objetos (por ejemplo , mallas triangulares ).
Distribución de cuadros
Cada unidad de procesamiento puede renderizar un fotograma completo desde un punto de vista o momento diferente. Los fotogramas renderizados desde diferentes puntos de vista pueden mejorar la calidad de la imagen con suavizado o agregar efectos como profundidad de campo y salida de pantalla tridimensional . Este enfoque permite un buen escalado de rendimiento pero no un escalado de datos.
Al renderizar fotogramas secuenciales en paralelo, habrá un retraso para las sesiones interactivas. El retraso entre la entrada del usuario y la acción que se muestra es proporcional al número de fotogramas secuenciales que se representan en paralelo.
Distribución de píxeles
Los conjuntos de píxeles en el espacio de la pantalla se pueden distribuir entre las unidades de procesamiento en lo que a menudo se denomina procesamiento de clasificación por primera vez. [2]
La distribución de líneas de píxeles entrelazadas proporciona un buen equilibrio de carga, pero hace imposible el escalado de datos. La distribución de mosaicos 2D contiguos de píxeles permite el escalado de datos mediante la selección de datos con la vista truncada . Sin embargo, hay una sobrecarga de datos de objetos en límites frustum que se replican y los datos deben cargarse dinámicamente a medida que cambia el punto de vista. El equilibrio de carga dinámico también es necesario para mantener la escala de rendimiento.
Distribución de objetos
La distribución de objetos entre unidades de procesamiento a menudo se denomina clasificación de última generación. [3] Proporciona un buen escalado de datos y puede proporcionar un buen escalado de rendimiento, pero requiere que las imágenes intermedias de los nodos de procesamiento se compongan en alfa para crear la imagen final. A medida que aumenta la resolución de la imagen, también aumenta la sobrecarga de composición alfa.
También se necesita un esquema de equilibrio de carga para mantener el rendimiento independientemente de las condiciones de visualización. Esto se puede lograr dividiendo en exceso el espacio del objeto y asignando varias piezas a cada unidad de procesamiento de forma aleatoria; sin embargo, esto aumenta el número de etapas de composición alfa necesarias para crear la imagen final. Otra opción es asignar un bloque contiguo a cada unidad de procesamiento y actualizarlo dinámicamente, pero esto requiere una carga de datos dinámica.
Distribución híbrida
Los diferentes tipos de distribuciones se pueden combinar de varias formas. Se pueden renderizar un par de fotogramas secuenciales en paralelo al mismo tiempo que se renderizan cada uno de esos fotogramas individuales en paralelo utilizando una distribución de píxeles u objetos. Las distribuciones de objetos pueden intentar minimizar su superposición en el espacio de la pantalla para reducir los costos de composición alfa, o incluso utilizar una distribución de píxeles para representar partes del espacio del objeto.
Aplicaciones de código abierto
El paquete de software de código abierto Chromium proporciona un mecanismo de renderizado paralelo para aplicaciones existentes. Intercepta las llamadas OpenGL y las procesa, normalmente para enviarlas a múltiples unidades de renderizado que controlan una pantalla mural .
Equalizer es un marco de renderizado de código abierto y un sistema de gestión de recursos para aplicaciones multipipe. Equalizer proporciona una API para escribir aplicaciones de visualización escalables y paralelas que un servidor de recursos configura en tiempo de ejecución. [4]
OpenSG es una fuente abierta scenegraph sistema que proporciona capacidades de renderización paralelas, especialmente en clusters. Oculta la complejidad de las aplicaciones en clúster y multiproceso paralelas y admite la representación de ordenación primero y ordenación final. [5]
Golem es una aplicación descentralizada de código abierto utilizada para computación paralela que actualmente funciona con renderizado en Blender y tiene planes de incorporar más usos. [6]
Ver también
- Conceptos
- Implementaciones
Referencias
- ^ Wu, C .; Yang, B .; Zhu, W .; Zhang, Y. (2017). "Hacia un alto rendimiento de GPU móvil a través de la descarga de cargas de trabajo colaborativas" . Transacciones IEEE en sistemas paralelos y distribuidos . PP (99): 435–449. doi : 10.1109 / tpds.2017.2754482 . ISSN 1045-9219 .
- ^ Molnar, S., M. Cox, D. Ellsworth y H. Fuchs. " Una clasificación de ordenación de la representación paralela ". IEEE Computer Graphics and Algorithms, páginas 23-32, julio de 1994.
- ^ Molnar, S., M. Cox, D. Ellsworth y H. Fuchs. " Una clasificación de ordenación de la representación paralela ". IEEE Computer Graphics and Algorithms, páginas 23-32, julio de 1994.
- ^ "Copia archivada" . Archivado desde el original el 11 de mayo de 2008 . Consultado el 30 de abril de 2020 .CS1 maint: copia archivada como título ( enlace )
- ^ "Copia archivada" . Archivado desde el original el 6 de agosto de 2017 . Consultado el 30 de abril de 2020 .CS1 maint: copia archivada como título ( enlace )
- ^ "Red Golem" . golem.network . Consultado el 16 de mayo de 2021 .
enlaces externos
- Representación de clústeres en la Universidad de Princeton