Overview
Equalizer is an OpenGL-based parallel rendering system framework. Its developers are from the University of Zurich in Switzerland. The latest version is 0.3. It is estimated that version 0.4 will be released soon.
In short, equalizer wants to construct an OpenGL-Based Graphics Rendering framework. Unlike the rendering engine, equalizer provides control over the rendering environment and process, it is used to quickly extend graphic applications running on a serial computer to environments such as multiple windows, multiple graphics cards (such as SLI), and cluster systems, in this way, the system's Parallel Rendering capability can be fully utilized to achieve higher processing speed. Compared with the traditional chromium designed and implemented by Stanford University and its predecessor wiregl, equalizer implements rendering parallelization at the application layer, to avoid the huge network bandwidth requirements brought about by parallel implementation at the OpenGL instruction layer, equalizer is much more efficient than chromium. For more information about the goal and theory of the equalizer project, refer to the relevant website [1].
Download and install
The example eqply in equalizer is used as the object to deploy the equalizer application in the cluster system.
First, you need.Equalizergraphics.comDownload the source code of the current stable version on the website, or obtain the latest development version through SVN. my system is Windows XP SP2, so after the download is complete, it can be compiled normally under Visual Studio 2005. Note that, development versions updated in real time often have some incomplete settings or files. Therefore, we recommend that you download the stable version first. the compilation will generate several major binary files, including eqserver.exe and eqserver. DLL, eqply.exe, etc. The compiled files are output to/build/Win32/debug.
Because you need to execute various commands in the command line, I copy both the EXE and DLL files compiled and output to the self-built D:/eqbin directory, then copy the example/configs directory to D:/eqbin. The EQC file in this folder is the serverProgramScript file used for system configuration.
Equalizer implements remote management within the cluster system through SSH. In a Windows Cluster, it relies on OpenSSH in cygwin. Therefore, you need to deploy SSH on each node of the cluster system, the computer used as the equalizer server must be configured as an SSH client. Other nodes used for rendering must install the SSH server and ensure that the server can log on to all rendering node computers through the same user. For details about how to install SSH in windows, refer to [3].
Start the server
After all the preparations are complete, start the equalizer server, enter the D:/eqbin directory in the command line window, and then enter the following command:
Eqserver configs/2-000000002d.eqc
The configuration scheme used here is to allocate the computing load to two local windows through screen space division. After rendering, the two windows are merged to obtain the final screen, that is, the sort-first parallel architecture.
Start the client
Start another command line window, enter the D:/eqbin directory, and enter the following command:
Eqply
Two windows will pop up to complete the rendering of a square. One of the Windows will receive the rendering results of the other while rendering, and will be displayed together with its own rendering results, to get the complete picture.
Eqply can load the model file through the command line parameter-M and the specified file, and render it in the scene. Currently, it supports the ply file format. For more information and models, see [4]. Suppose there is a model file in ply format located in the D:/eqbin directory named boat-25.ply, you can enter the following command:
Eqply-M boat-25.ply
You can see that half of the scenes are rendered in the two pop-up windows, and one of them combines the two pictures into the same picture.
Sort-last effect
Turn Off eqply (ESC) and eqserver (CTRL + C), and run the command again in the command line.
Eqserver configs/2-000000002d.eqc
Then, run the following command in the new command line window:
Eqply-M rockerarm. ply
The sort-last Parallel Rendering System Constructed by two windows is implemented, that is, the two windows render a part of the geometric elements respectively, and then the color cache and depth cache of one window are sent to another window, the window is used to perform the final pixel depth detection and filling. Shows the rendered image:
Now let's try the running status in the cluster.
Similarly, you must first run the server. The difference is that you need to use another configuration file 2-node.2d.eqc.
Note that in 2-node.2d.eqc, you must set the computing name or IP address for the node configuration item to run the rendering task.
Cluster settings
After the server is started, it also runs in another command line window
Eqply-M boat-25.ply
At this point, according to the settings in eqply, first run the application node task locally, and then send the command (eqply-M boat-25.ply) to the rendering node computer specified in the configuration file through the SSH pipeline, the latter executes this command. At this time, there should be a window for rendering on the server computer and another computer set as the rendering node, the second half of the rendered image transmitted by the rendering node is included in the window of the server computer.
Others
It should be noted that, due to the SSH commands sent by equalizer in cluster applications, it is required to run applications and search data files in the same path at the remote end, therefore, the applications to be executed and related data files must be placed in the same path.
Concerning equalizer performance, eqply's model recently adopts KD-tree for management and traversal, and loads and draws data through VBO, therefore, the performance and image quality are greatly improved compared with v0.3. Especially in the release compilation version, the speed is faster because many prompts are turned off. The two standalone running examples in front of my geforce 7950gtx can reach more than 300 frames, and the two ply models are respectively 80 thousand and 0.12 million triangle surfaces.
As for the performance of the cluster system, the bottleneck mainly lies in the merging stage, that is, the blocking and delay caused by image frame cache copying and transmission. In my tests, when an image is included for merging, the frame rate is less than 10 frames. If the image merging is disabled (the frame synchronization is still effective), the frame rate of both nodes is restored to several hundred frames per second.
You can delete the rows in the 2-node.2d.eqc file that contain "outputframe" and "inputframe.
References
1. http://www.equalizergraphics.com
2. http://chromium.sourceforge.net
3. http://blog.csdn.net/rickArkin/archive/2007/09/19/1792057.aspx, "Install SSH in Windows"
4. http://graphics.stanford.edu/data/3Dscanrep/