Parallel rendering
Encyclopedia
Parallel rendering is the application of parallel programming to the computational domain of computer graphics
. Rendering graphics can require massive computational resources for complex scenes that arise in scientific visualization
, medical visualization, CAD applications, and virtual reality
. Rendering is an embarrassingly parallel
workload in multiple domains (e.g., pixels, objects, frames) and thus has been the subject of much research.
and load balancing
issues. The three main options for primitives to distribute are entire frames, pixels, or objects (e.g. triangle meshes).
When rendering sequential frames in parallel there will be a lag for interactive sessions. The lag between user input and the action being displayed is proportional to the number of sequential frames being rendered in parallel.
Distributing interlaced lines of pixels gives good load balancing but makes data scaling impossible. Distributing contiguous 2D tiles of pixels allows for data scaling by culling data with the view frustum. However, there is a data overhead from objects on frustum boundaries being replicated and data has to be loaded dynamically as the view point changes. Dynamic load balancing is also needed to maintain performance scaling.
A load balancing scheme is also needed to maintain performance regardless of the viewing conditions. This can be achieved by over partitioning the object space and assigning multiple pieces to each processing unit in a random fashion, however this increases the number of alpha compositing stages required to create the final image. Another option is to assign a contiguous block to each processing unit and update it dynamically, but this requires dynamic data loading.
calls and processes them, typically to send them to multiple rendering units driving a display wall
.
Equalizer (http://www.equalizergraphics.com) is an open source rendering framework
and resource management system for multipipe applications. Equalizer provides an API
to write parallel, scalable visualization applications which are configured at run-time by a resource server.
OpenSG
(http://opensg.vrsource.org/trac) is an open source scenegraph
system that provides parallel rendering capabilities, especially on clusters. It hides the complexity of parallel multi-threaded
and clustered applications and supports sort-first as well as sort-last rendering.
Implementations
Computer graphics
Computer graphics are graphics created using computers and, more generally, the representation and manipulation of image data by a computer with help from specialized software and hardware....
. Rendering graphics can require massive computational resources for complex scenes that arise in scientific visualization
Scientific visualization
Scientific visualization is an interdisciplinary branch of science according to Friendly "primarily concerned with the visualization of three-dimensional phenomena , where the emphasis is on realistic renderings of volumes, surfaces, illumination sources, and so forth, perhaps...
, medical visualization, CAD applications, and virtual reality
Virtual reality
Virtual reality , also known as virtuality, is a term that applies to computer-simulated environments that can simulate physical presence in places in the real world, as well as in imaginary worlds...
. Rendering is an embarrassingly parallel
Embarrassingly parallel
In parallel computing, an embarrassingly parallel workload is one for which little or no effort is required to separate the problem into a number of parallel tasks...
workload in multiple domains (e.g., pixels, objects, frames) and thus has been the subject of much research.
Workload Distribution
There are two, often competing, reasons for using parallel rendering. Performance scaling allows frames to be rendered more quickly while data scaling allows larger data sets to be visualized. Different methods of distributing the workload tend to favor one type of scaling over the other. There can also be other advantages and disadvantages such as latencyLatency
Latency or latent may refer to:*Latency period , the time between exposure to a pathogen, chemical or radiation, and when symptoms first become apparent...
and load balancing
Load balancing
Load balancing or load distribution may refer to:*Load balancing , balancing a workload amongst multiple computer devices*Load balancing , the storing of excess electrical power by power stations during low demand periods, for release as demand rises*Weight distribution, the apportioning of weight...
issues. The three main options for primitives to distribute are entire frames, pixels, or objects (e.g. triangle meshes).
Frame distribution
Each processing unit can render an entire frame from a different point of view or moment in time. The frames rendered from different points of view can improve image quality with anti-aliasing or add effects like depth-of-field and three dimensional display output. This approach allows for good performance scaling but no data scaling.When rendering sequential frames in parallel there will be a lag for interactive sessions. The lag between user input and the action being displayed is proportional to the number of sequential frames being rendered in parallel.
Pixel distribution
Sets of pixels in the screen space can be distributed among processing units in what is often referred to as sort first rendering.Distributing interlaced lines of pixels gives good load balancing but makes data scaling impossible. Distributing contiguous 2D tiles of pixels allows for data scaling by culling data with the view frustum. However, there is a data overhead from objects on frustum boundaries being replicated and data has to be loaded dynamically as the view point changes. Dynamic load balancing is also needed to maintain performance scaling.
Object distribution
Distributing objects among processing units is often referred to as sort last rendering . It provides good data scaling and can provide good performance scaling, but it requires the intermediate images from processing nodes to be alpha composited to create the final image. As the image resolution grows, the alpha compositing overhead also grows.A load balancing scheme is also needed to maintain performance regardless of the viewing conditions. This can be achieved by over partitioning the object space and assigning multiple pieces to each processing unit in a random fashion, however this increases the number of alpha compositing stages required to create the final image. Another option is to assign a contiguous block to each processing unit and update it dynamically, but this requires dynamic data loading.
Hybrid distribution
The different types of distributions can be combined in a number of fashions. A couple of sequential frames can be rendered in parallel while also rendering each of those individual frames in parallel using a pixel or object distribution. Object distributions can try to minimize their overlap in screen space in order to reduce alpha compositing costs, or even use a pixel distribution to render portions of the object space.Open source applications
The open source software package Chromium (http://chromium.sourceforge.net) provides a parallel rendering mechanism for existing applications. It intercepts the OpenGLOpenGL
OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...
calls and processes them, typically to send them to multiple rendering units driving a display wall
Video wall
A video wall consists of multiple computer monitors, video projectors, or television sets tiled together contiguously or overlapped in order to form one large screen...
.
Equalizer (http://www.equalizergraphics.com) is an open source rendering framework
Software framework
In computer programming, a software framework is an abstraction in which software providing generic functionality can be selectively changed by user code, thus providing application specific software...
and resource management system for multipipe applications. Equalizer provides an API
Application programming interface
An application programming interface is a source code based specification intended to be used as an interface by software components to communicate with each other...
to write parallel, scalable visualization applications which are configured at run-time by a resource server.
OpenSG
OpenSG
OpenSG is a scene graph system to create real-time graphics programs, e.g. for virtual reality applications. It is developed following Open Source principles, LGPL licensed, and can be used freely...
(http://opensg.vrsource.org/trac) is an open source scenegraph
Scene graph
A scene graph is a general data structure commonly used by vector-based graphics editing applications and modern computer games. Examples of such programs include Acrobat 3D, Adobe Illustrator, AutoCAD, CorelDRAW, OpenSceneGraph, OpenSG, VRML97, and X3D....
system that provides parallel rendering capabilities, especially on clusters. It hides the complexity of parallel multi-threaded
Thread (computer science)
In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...
and clustered applications and supports sort-first as well as sort-last rendering.
See also
Concepts- Server farmServer farmA server farm or server cluster is a collection of computer servers usually maintained by an enterprise to accomplish server needs far beyond the capability of one machine. Server farms often have backup servers, which can take over the function of primary servers in the event of a primary server...
- Render farmRender farmA render farm is a computer cluster built to render computer-generated imagery , typically for film and television visual effects, using off-line batch processing. This is different from a render wall, which is a networked, tiled display used for real-time rendering...
Implementations
- Big and Ugly Rendering Project (BURP)Big and Ugly Rendering ProjectBig and Ugly Rendering Project is a non-commercial distributed computing project using the BOINC framework. It is currently under development to work as a publicly distributed system for the rendering of 3D graphics....
- Electric SheepElectric SheepElectric Sheep is a distributed computing project for animating and evolving fractal flames, which are in turn distributed to the networked computers, which display them as a screensaver.-Process:...