Users Guide Client-Server Visualization
One of the main purposes of ParaView is to allow users to create visualizations of large data sets that reside on parallel systems without first collecting the data to a single machine. Transferring the data is often slow and wasteful of disk resources, and the visualization of large data sets can easily overwhelm the processing and especially memory resources of even high-performance workstations. This chapter describes the concepts behind the parallelism in ParaView and explains how a parallel visualization session can be initiated from within the ParaView user interface. Then two different modes of running ParaView in parallel are discussed: client / server mode, and client / data server / render server mode. Next we describe the basis of ParaView’s parallel rendering features, and finally we make recommendations for setting up your own Parallel ParaView server. For a discussion of how to use ParaView to view data using parallel (namely Tiled Display and Cave) display resources, see the next Chapter.
ParaView has three main logical components: client, data server, and render server. The client is responsibly for the GUI and is the interface between you the user and ParaView as a whole. The data server reads in files and processes the data through the pipeline. The render server takes the processed data and renders it to present the results to you. The three logical components can be combined in various different configurations.
When ParaView is started, the client is connected to what is called the builtin server; in this case all three components exist within the same process. Alternatively, you can run the server as an independent program and connect the client to it. In this case the server process contains both the data and render server components. The server can also be started as two separate programs: one for the data server and one for the render server. The server programs are data-parallel programs that can be run as a set of independent processes running on different CPUs. The processes use MPI to coordinate their activities as each works on different pieces of the data.
The client is responsible for the user interface of the application. ParaView’s general-purpose client was written to make powerful visualization and analysis capabilities available from an easy-to-use interface. The client component is a serial program that controls the server components through the Server Manager API.
The data server is primarily constructed from VTK readers, sources, and filters. It is responsible for reading and/or generating data, processing it, and producing geometric models that the render server and client will display. The data server exploits data parallelism by partitioning the data, adding ghost levels around the partitions as needed, and running synchronous parallel filters. Each data server process has an identical VTK pipeline, and each process is told which partition of the data it should load and process. By splitting the data ParaView is able to use the entire aggregate system memory and thus make large data processing possible.
The render server is responsible for rendering the geometry. Like the data server, the render server can be run in parallel and has identical visualization pipelines (only the rendering portion of the pipeline) in all of its processes. Having the ability to run the render server separately from the data server allows for an optimal division of labor between computing platforms. Most large computing clusters are primarily used for batch simulations and do not have hardware rendering resources. Since it is not desirable to move large data files to a separate visualization system, the data server can run on the same cluster that ran the original simulation. The render server can be run on a separate visualization cluster that has hardware rendering resources.
It is possible to run the render server with fewer processes than the data server but never more. Visualization clusters typically have fewer nodes than batch simulation clusters, and processed geometry is usually significantly smaller than the original simulation dump. ParaView repartitions the geometric models on the data server before they are sent to the render server.
Until recently, in order to use ParaView's parallel processing features, one needed to build ParaView from the source code as described in the Appendix. This was because there are many different versions of MPI, the library ParaView’s servers use internally for parallel communication, and for high performance computer users it is extremely important to use the version that is delivered with your networking hardware.
As of ParaView 3.10 however, we have begun to package MPI with our binary releases. If you have a multi-core workstation, you can now simply turn on the Use Multi-Core setting under ParaView's Settings to make use of all of them. This option makes parallel data server mode the default configuration, which can be very effective when you are working on computationally bound intensive processing tasks.
Otherwise, and when you need to run ParaView on an actual distributed memory cluster, you need to start up the various components and establish connections between them as is described in the next section.