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

Reply via email to