stringtranslate.com

Representación paralela

La renderización paralela (o renderización distribuida ) es la aplicación de la programación paralela al dominio computacional de los gráficos por computadora . La renderización de gráficos puede requerir recursos computacionales masivos para escenas complejas que surgen en la visualización científica , la visualización médica , las aplicaciones CAD y la realidad virtual . Investigaciones recientes también han sugerido que se puede aplicar renderizado paralelo a los juegos móviles para disminuir el consumo de energía y aumentar la fidelidad gráfica. [1] El renderizado es una carga de trabajo vergonzosamente paralela 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 renderización paralela. El escalado del rendimiento permite representar fotogramas más rápidamente, mientras que el escalado 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 escalamiento sobre el otro. También puede haber otras ventajas y desventajas, como problemas de latencia y equilibrio de carga . Las tres opciones principales para distribuir las primitivas son cuadros completos, píxeles u objetos (por ejemplo, mallas triangulares ).

Distribución del cuadro

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 visualización tridimensional . Este enfoque permite un buen escalamiento del rendimiento pero no un escalamiento de datos.

Al renderizar fotogramas secuenciales en paralelo, habrá un retraso en 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 renderizado de ordenación primero. [2]

La distribución de líneas entrelazadas de píxeles proporciona un buen equilibrio de carga pero imposibilita el escalado de datos. La distribución de mosaicos 2D contiguos de píxeles permite escalar los datos seleccionando datos con la vista frustum . Sin embargo, existe una sobrecarga de datos debido a la replicación de objetos en límites frustum y los datos deben cargarse dinámicamente a medida que cambia el punto de vista. También es necesario el equilibrio de carga dinámico para mantener la escala del rendimiento.

Distribución de objetos

La distribución de objetos entre unidades de procesamiento a menudo se denomina última representación de clasificació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 estén compuestas alfa para crear la imagen final. A medida que aumenta la resolución de la imagen, también crece 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 excesivamente el espacio del objeto y asignando múltiples 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 dinámica de datos.

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 y al mismo tiempo renderizar 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 usar 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, generalmente para enviarlas a múltiples unidades de renderizado que controlan un muro de visualización .

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 paralelas y escalables que un servidor de recursos configura en tiempo de ejecución. [4]

OpenSG es un sistema de gráficos de escenas de código abierto que proporciona capacidades de renderizado paralelo, especialmente en clústeres. Oculta la complejidad de las aplicaciones agrupadas y de subprocesos múltiples paralelos y admite la representación de ordenación primero y ordenación última. [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

  1. ^ Wu, C.; Yang, B.; Zhu, W.; Zhang, Y. (2017). "Hacia un alto rendimiento de la GPU móvil mediante la descarga colaborativa de cargas de trabajo". Transacciones IEEE en sistemas paralelos y distribuidos . PP (99): 435–449. doi : 10.1109/tpds.2017.2754482 . ISSN  1045-9219.
  2. ^ Molnar, S., M. Cox, D. Ellsworth y H. Fuchs. "Una clasificación de clasificación de renderizado paralelo". Algoritmos y gráficos por computadora IEEE, páginas 23-32, julio de 1994.
  3. ^ Molnar, S., M. Cox, D. Ellsworth y H. Fuchs. "Una clasificación de clasificación de renderizado paralelo". Algoritmos y gráficos por computadora IEEE, páginas 23-32, julio de 1994.
  4. ^ "Ecualizador: renderizado paralelo". Archivado desde el original el 11 de mayo de 2008 . Consultado el 30 de abril de 2020 .
  5. ^ "AbiertoSG". Archivado desde el original el 6 de agosto de 2017 . Consultado el 30 de abril de 2020 .
  6. ^ "Red Golem". red.golem . Consultado el 16 de mayo de 2021 .

enlaces externos