<html><head></head><body bgcolor="#FFFFFF"><div>Hi, Andy and Leo,</div><div><br></div><div>thanks for your replies.</div><div><br></div><div>Is it possible to get this new implementation? I would to give it a try.</div><div><br></div><div>Regards,</div><div>Stephan</div><div><br>Am 31.05.2012 um 17:48 schrieb Yuanxin Liu &lt;<a href="mailto:leo.liu@kitware.com">leo.liu@kitware.com</a>&gt;:<br><br></div><div></div><blockquote type="cite"><div>Hi, Stephan,<br>&nbsp;&nbsp; The previous implementation only has serial performance:&nbsp; It traces the streamlines one at a time and never starts a new streamline until the previous one finishes.&nbsp; With communication overhead, it is not surprising it got slower.<br>
<br>&nbsp; My new implementation is able to let the processes working on different streamlines simultaneously and should scale much better.<br><br>Leo<br><br><br><div class="gmail_quote">On Thu, May 31, 2012 at 11:27 AM, Andy Bauer <span dir="ltr">&lt;<a href="mailto:andy.bauer@kitware.com" target="_blank">andy.bauer@kitware.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Stephan,<br><br>The parallel stream tracer uses the partitioning of the grid to determine which process does the integration. When the streamline exits the subdomain of a process there is a search to see if it enters a subdomain assigned to any other processes before figuring it whether it has left the entire domain. <br>

<br>Leo, copied here, has been improving the streamline implementation inside of VTK so you may want to get his newer version. It is a pretty tough algorithm to parallelize efficiently without making any assumptions on the flow or partitioning.<span class="HOEnZb"><font color="#888888"><br>

<br>Andy</font></span><div class="HOEnZb"><div class="h5"><br><br><div class="gmail_quote">On Thu, May 31, 2012 at 4:16 AM, Stephan Rogge <span dir="ltr">&lt;<a href="mailto:Stephan.Rogge@tu-cottbus.de" target="_blank">Stephan.Rogge@tu-cottbus.de</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<br>
I have a question related to the parallelism of the stream tracer: As I<br>
understand the code right, each line integration (trace) is processed in an<br>
own MPI process. Right?<br>
<br>
To test the scalability of the Stream tracer I've load a structured<br>
(curvilinear) grid and applied the filter with a Seed resolution of 1500 and<br>
check the timings in a single and multi-thread (Multi Core enabled in PV<br>
GUI) situation.<br>
<br>
I was really surprised that multi core slows done the execution time to 4<br>
seconds. The single core takes only 1.2 seconds. Data migration cannot be<br>
the explanation for that behavior (0.5 seconds). What is the problem here?<br>
<br>
Please see attached some statistics...<br>
<br>
Data:<br>
* Structured (Curvilinear) Grid<br>
* 244030 Cells<br>
* 37 MB Memory<br>
<br>
System:<br>
* Intel i7-2600K (4 Cores + HT = 8 Threads)<br>
* 16 GB Ram<br>
* Windows 7 64 Bit<br>
* ParaView (master-branch, 64 bit compilation)<br>
<br>
#################################<br>
Single Thread (Seed resolution 1500):<br>
#################################<br>
<br>
Local Process<br>
Still Render, &nbsp;0.014 seconds<br>
RenderView::Update, &nbsp;1.222 seconds<br>
 &nbsp; &nbsp;vtkPVView::Update, &nbsp;1.222 seconds<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Execute vtkStreamTracer id: 2184, &nbsp;1.214 seconds<br>
Still Render, &nbsp;0.015 seconds<br>
<br>
#################################<br>
Eight Threads (Seed resolution 1500):<br>
#################################<br>
<br>
Local Process<br>
Still Render, &nbsp;0.029 seconds<br>
RenderView::Update, &nbsp;4.134 seconds<br>
vtkSMDataDeliveryManager: Deliver Geome, &nbsp;0.619 seconds<br>
 &nbsp; &nbsp;FullRes Data Migration, &nbsp;0.619 seconds<br>
Still Render, &nbsp;0.042 seconds<br>
 &nbsp; &nbsp;OpenGL Dev Render, &nbsp;0.01 seconds<br>
<br>
<br>
Render Server, Process 0<br>
RenderView::Update, &nbsp;4.134 seconds<br>
 &nbsp; &nbsp;vtkPVView::Update, &nbsp;4.132 seconds<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Execute vtkStreamTracer id: 2193, &nbsp;3.941 seconds<br>
FullRes Data Migration, &nbsp;0.567 seconds<br>
 &nbsp; &nbsp;Dataserver gathering to 0, &nbsp;0.318 seconds<br>
 &nbsp; &nbsp;Dataserver sending to client, &nbsp;0.243 seconds<br>
<br>
Render Server, Process 1<br>
Execute vtkStreamTracer id: 2193, &nbsp;3.939 seconds<br>
<br>
Render Server, Process 2<br>
Execute vtkStreamTracer id: 2193, &nbsp;3.938 seconds<br>
<br>
Render Server, Process 3<br>
Execute vtkStreamTracer id: 2193, &nbsp;4.12 seconds<br>
<br>
Render Server, Process 4<br>
Execute vtkStreamTracer id: 2193, &nbsp;3.938 seconds<br>
<br>
Render Server, Process 5<br>
Execute vtkStreamTracer id: 2193, &nbsp;3.939 seconds<br>
<br>
Render Server, Process 6<br>
Execute vtkStreamTracer id: 2193, &nbsp;3.938 seconds<br>
<br>
Render Server, Process 7<br>
Execute vtkStreamTracer id: 2193, &nbsp;3.939 seconds<br>
<br>
Cheers,<br>
Stephan<br>
<br>
<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the ParaView Wiki at: <a href="http://paraview.org/Wiki/ParaView" target="_blank">http://paraview.org/Wiki/ParaView</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.paraview.org/mailman/listinfo/paraview" target="_blank">http://www.paraview.org/mailman/listinfo/paraview</a><br>
</blockquote></div><br>
</div></div></blockquote></div><br>
</div></blockquote></body></html>