The only reason why the two systems should give different results is if they are loading different data or the settings do not match up, which you claim is not the case. If you want to ensure that the settings are the same, you can launch ParaView with the -dr flag, which will ignore your settings file and use all the default settings.
The decision for using parallel rendering or to transfer data to the client is made in vtkSMMultiProcessRenderView::GetCompositingDecision(), which is called on the client. If you really want to find out what is going on, you can set a breakpoint there and see what the decision is and how ParaView came about it. -Ken On 10/7/09 4:51 AM, "chew ping" <[email protected]> wrote: Hi all, thanks for the reply below. my friend and i each run parallel rendering using our own notebook as client, but we use the same data, same servers and same version of ParaView, CMake, QT, MPI. We use same settings and did the same thing, however our timer log results are a little bit different. My timer log result ---------------------------------------------------------------------- Local Process --- Disable display lists. --- Disable triangle strips. Still Render, 0.043315 seconds Still Render, 0.021299 seconds Still Render, 0.024769 seconds Still Render, 0.02782 seconds Still Render, 10.7477 seconds Execute vtkMPIMoveData id: 462, 3.73372 seconds Server, Process 0 Execute vtkFileSeriesReader id: 182, 0.641624 seconds Execute vtkPVGeometryFilter id: 248, 0.005231 seconds Execute vtkPVCacheKeeper id: 459, 6.9e-05 seconds Execute vtkMPIMoveData id: 462, 3.3546 seconds Dataserver gathering to 0, 0.831371 seconds Dataserver sending to client, 2.5226 seconds Execute vtkOrderedCompositeDistributor , 0.000142 seconds Server, Process 1 Execute vtkFileSeriesReader id: 182, 0.000345 seconds Execute vtkPVGeometryFilter id: 248, 0.005231 seconds Execute vtkPVCacheKeeper id: 459, 5.7e-05 seconds Execute vtkMPIMoveData id: 462, 0.14266 seconds Dataserver gathering to 0, 0.142351 seconds Execute vtkOrderedCompositeDistributor , 9.8e-05 seconds Server, Process 2 Execute vtkFileSeriesReader id: 182, 0.000325 seconds Execute vtkPVGeometryFilter id: 248, 0.004975 seconds Execute vtkPVCacheKeeper id: 459, 6.3e-05 seconds Execute vtkMPIMoveData id: 462, 0.244045 seconds Dataserver gathering to 0, 0.243799 seconds Execute vtkOrderedCompositeDistributor , 9.7e-05 seconds Server, Process 3 Execute vtkFileSeriesReader id: 182, 0.000408 seconds Execute vtkPVGeometryFilter id: 248, 0.00521 seconds Execute vtkPVCacheKeeper id: 459, 5.6e-05 seconds Execute vtkMPIMoveData id: 462, 0.192467 seconds Dataserver gathering to 0, 0.192195 seconds Execute vtkOrderedCompositeDistributor , 0.000113 seconds ----------------------------------------------------------------------- My friend's timer log result ----------------------------------------------------------------------- Local Process Still Render, 3.98618 seconds Server, Process 0 Execute vtkFileSeriesReader id: 2927, 1.18069 seconds Execute vtkPVGeometryFilter id: 2992, 0.041116 seconds Execute vtkPVCacheKeeper id: 3203, 6.7e-05 seconds Execute vtkMPIMoveData id: 3206, 0.000195 seconds Execute vtkOrderedCompositeDistributor , 0.000138 seconds Execute vtkPolyDataMapper id: 2998, 0.000101 seconds Execute vtkPolyDataMapper id: 2853, 5.5e-05 seconds Execute vtkPolyDataMapper id: 2998, 4.5e-05 seconds Server, Process 1 Execute vtkFileSeriesReader id: 2927, 0.000275 seconds Execute vtkPVGeometryFilter id: 2992, 0.019066 seconds Execute vtkPVCacheKeeper id: 3203, 6.4e-05 seconds Execute vtkMPIMoveData id: 3206, 0.000123 seconds Execute vtkOrderedCompositeDistributor , 8.9e-05 seconds Execute vtkPolyDataMapper id: 2998, 7.3e-05 seconds Execute vtkPolyDataMapper id: 2853, 5.5e-05 seconds Execute vtkPolyDataMapper id: 2998, 4.8e-05 seconds Server, Process 2 Execute vtkFileSeriesReader id: 2927, 0.000303 seconds Execute vtkPVGeometryFilter id: 2992, 0.02033 seconds Execute vtkPVCacheKeeper id: 3203, 5.3e-05 seconds Execute vtkMPIMoveData id: 3206, 0.000158 seconds Execute vtkOrderedCompositeDistributor , 9.6e-05 seconds Execute vtkPolyDataMapper id: 2998, 8.9e-05 seconds Execute vtkPolyDataMapper id: 2853, 5.2e-05 seconds Execute vtkPolyDataMapper id: 2998, 4.7e-05 seconds Server, Process 3 Execute vtkFileSeriesReader id: 2927, 0.000311 seconds Execute vtkPVGeometryFilter id: 2992, 0.02033 seconds Execute vtkPVCacheKeeper id: 3203, 6e-05 seconds Execute vtkMPIMoveData id: 3206, 0.000117 seconds Execute vtkOrderedCompositeDistributor , 9e-05 seconds Execute vtkPolyDataMapper id: 2998, 8.3e-05 seconds Execute vtkPolyDataMapper id: 2853, 5.2e-05 seconds Execute vtkPolyDataMapper id: 2998, 4.7e-05 seconds -------------------------------------------------------------------------- My question are: my local process has Execute vtkMPIMoveData, but my friend's doesn't, why? my process 0 has Dataserver gathering to 0, Dataserver sending to client, but my friend's doesn't, why? my process 1,2,3 has Dataserver gathering to 0, but my friend's doesn't, why? Appreciate your reply, thanks! regards, chew ping ________________________________ From: [email protected] Date: Wed, 30 Sep 2009 09:27:32 -0400 Subject: Re: [Paraview] How to interpret timer log To: [email protected] CC: [email protected]; [email protected]; [email protected] I counted more than one question (six in fact) in that last email. :) does these mean that, at the client's end, it took 3.029 seconds to renders the geometry send back from process 0? I believe the 3.029 seconds includes the transfer time, but I may be incorrect on that. Someone please correct me if I am wrong. what does still render means? While you drag the mouse and move the camera paraview does interactive renders. Iteractive renders will (depending on data and the preference settings) use subsampled geometry and subsampled images. Once you release the mouse, ParaView does a still render at full resolution. how about the third line? after still render, why does the MPI need to move data? See answer to question 1, the MPI time (and processing) is being counted as part of the rendering. Since it is "part of" the rendering, it shows up after in the log (even if it happened first). which data? Geometry (the surface of whatever your data is). to where? >From the root node of the data server to the client. i tried running the same data using np1 until np10, and i get the following reading for still render, the rest of the readings are quite consistent, which makes me wonder why the time (still render) decrease initially but increase eventually? shouldn't it become much faster when more nodes are used? all my server nodes are identical to each other (intel core 2 duo, 2.66 GHz) ParaView doesn't use parallelism to scale in terms of processing speed, it uses it to scale in terms of achievable data size. That means, if you have sufficient memory on one machine, processing the data on two machines isn't likely to give you any speed up and will usually slow it down because of the extra code and especially communication that has to happen in the parallel program (Ahmdahls law). If the problem is too big for one machine, then the only alternative is to split the data and run it on many machines (Gustafsen's law). That said, if the data is nearly to big for one machine, for instance when swapping, then splitting it and running it on several machines will make it faster for a while until the overhead starts to dominate the performance. ---------------------------------------------- number of process used still render (seconds) np1 7.16043 np2 3.93390 np3 3.05784 np4 3.02900 np5 3.02851 np6 3.04962 np7 3.43479 np8 3.47883 np9 3.71554 np10 3.80835 ---------------------------------------------- appreciate your reply! regards, chewping ________________________________ From: [email protected] To: [email protected]; [email protected] CC: [email protected] Date: Mon, 28 Sep 2009 08:37:08 -0600 Subject: Re: [Paraview] How to interpret timer log Both scenarios are wrong. ParaView will not push out data from process 0 to processes 1-3 unless you explicitly run a filter that does that (or the reader does that internally, but I know of no such reader). What is actually happening is more along the lines of: 1. Processes 0-3 each read in a partition of data from the file. 2. Each process extracts polygonal geometry from their local data. 3. Per your settings, ParaView decides to send the geometry to the client. The data is collected to process 0 and sent to the client. The reason you are not seeing vtkFileSeriesReader on all of the servers is that there is a threshold in the timer log to not show anything that executes under a certain amount of time (by default 0.01 seconds). If you change the Time Threshold to Show All, you should be able to see everything that executes, even if it completes immediately. You should note that how readers read partitions is determined by the reader itself. Many of the readers do not really handle partitioned reading. Thus, the reader will do something naïve like read everything on process 0. Based on your timings, that is probably what is happening to you. That is, processes 1-3 probably have empty data. You never specified what format of data you are reader, so I cannot answer the data completely. However, if you want to know how your data is partitioned on the server (at least, before rendering), you can run the Process Ids filter. -Ken On 9/24/09 9:09 PM, "chew ping" <[email protected] <http://msn.com/> > wrote: Hi all, I'm doing parallel rendering using 1 client (dual core laptop) and 2 cluster servers (dual core desktop) below is the timer log result i collected when i run: mpirun -np 4 pvserver ----------------------------------------------------------------------------------------------- Local Process Still Render, 3.029 seconds Execute vtkMPIMoveData id: 457, 1.98248 seconds Server, Process 0 Execute vtkFileSeriesReader id: 176, 0.637821 seconds Execute vtkMPIMoveData id: 457, 1.49186 seconds Dataserver gathering to 0, 0.829525 seconds Dataserver sending to client, 0.661658 seconds Server, Process 1 Execute vtkMPIMoveData id: 457, 0.141821 seconds Dataserver gathering to 0, 0.141544 seconds Server, Process 2 Execute vtkMPIMoveData id: 457, 0.243584 seconds Dataserver gathering to 0, 0.243318 seconds Server, Process 3 Execute vtkMPIMoveData id: 457, 0.191589 seconds Dataserver gathering to 0, 0.191303 seconds ----------------------------------------------------------------------------------------------------- i have difficulty interpreting the timer log, my guess is: Scenario 1: Process 0 reads the whole data, disseminate the dats into 4 pieces, then distribute to itself and Process 1&2&3, each node will process the data and send it back Process 0, Process 0 gather all data and send it back to client, client renders the data Scenario 2: Process 0 reads the whole data, distribute the whole data to Process 0&1&2&3, each node will 'take' their own piece of data to process, then send it back Process 0, Process 0 gather all data and send it back to client, client renders the data Which scenario is the correct one? or both are wrong? is there any resources i could refer to find what does it mean by: Execute vtkFileSeriesReader, Execute vtkMPIMoveData? any help / feedback is highly appreciated! thanks! regards, chewping **** Kenneth Moreland *** Sandia National Laboratories *********** *** *** *** email: [email protected] <http://sandia.gov/> ** *** ** phone: (505) 844-8919 *** web: http://www.cs.unm.edu/~kmorel _______________________________________________ Powered by www.kitware.com <http://www.kitware.com/> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Follow this link to subscribe/unsubscribe: http://www.paraview.org/mailman/listinfo/paraview **** Kenneth Moreland *** Sandia National Laboratories *********** *** *** *** email: [email protected] ** *** ** phone: (505) 844-8919 *** web: http://www.cs.unm.edu/~kmorel
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Follow this link to subscribe/unsubscribe: http://www.paraview.org/mailman/listinfo/paraview
