Hi, <br>  I have recently gotten Burlen&#39;s code and updated it to work with the latest ParaView.  Aside from vtkstd, there are also a few backward incompatible VTK changes ( see the VTK6.0 section on the VTK wiki).   But it is not too much work. I will be happy send either of you my code changes if you need a reference.<br>
<br>Leo<br><br><br><div class="gmail_quote">On Fri, Jun 8, 2012 at 10:25 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">Someone told me that you have to clear your build directory completely and<br>
start a fresh PV build.<br>
<br>
Stephan<br>
<br>
-----Ursprüngliche Nachricht-----<br>
Von: burlen [mailto:<a href="mailto:burlen.loring@gmail.com" target="_blank">burlen.loring@gmail.com</a>]<br>
Gesendet: Freitag, 8. Juni 2012 16:21<br>
<div><div>An: Stephan Rogge<br>
Cc: &#39;Yuanxin Liu&#39;; <a href="mailto:paraview@paraview.org" target="_blank">paraview@paraview.org</a><br>
Betreff: Re: [Paraview] Parallel Streamtracer<br>
<br>
Hi Stephan,<br>
<br>
Oh, thanks for the update, I wasn&#39;t aware of these changes. I have been<br>
working with 3.14.1.<br>
<br>
Burlen<br>
<br>
On 06/08/2012 01:47 AM, Stephan Rogge wrote:<br>
&gt; Hello Burlen,<br>
&gt;<br>
&gt; thank you very much for your post. I really would like to test your<br>
&gt; plugin and so I&#39;ve start to build it. Unfortunately I&#39;ve got a lot of<br>
&gt; compiler errors (e.g. vtkstd isn&#39;t used in PV master anymore). Which<br>
&gt; PV version is the base for your plugin?<br>
&gt;<br>
&gt; Regards,<br>
&gt; Stephan<br>
&gt;<br>
&gt; -----Ursprüngliche Nachricht-----<br>
&gt; Von: Burlen Loring [mailto:<a href="mailto:bloring@lbl.gov" target="_blank">bloring@lbl.gov</a>]<br>
&gt; Gesendet: Donnerstag, 7. Juni 2012 17:54<br>
&gt; An: Stephan Rogge<br>
&gt; Cc: &#39;Yuanxin Liu&#39;; <a href="mailto:paraview@paraview.org" target="_blank">paraview@paraview.org</a><br>
&gt; Betreff: Re: [Paraview] Parallel Streamtracer<br>
&gt;<br>
&gt; Hi Stephan,<br>
&gt;<br>
&gt; I&#39;ve experienced the scaling behavior that you report when I was<br>
&gt; working on a project that required generating millions of streamlines<br>
&gt; for a topological mapping algorithm interactively in ParaView. To get<br>
&gt; the required scaling I wrote a stream tracer that uses a load on<br>
&gt; demand approach with tunable block cache so that all ranks could<br>
&gt; integrate any streamline and stay busy throughout the entire<br>
&gt; computation. It was very effective on our data and I&#39;ve used it to<br>
&gt; integrate 30 Million streamlines in about 10min on 256 cores. If you<br>
&gt; really need better scalability than the distributed data tracing<br>
&gt; approach implemented in PV, you might take a look at our work. The<br>
&gt; down side of our approach is that in order to provide the demand<br>
&gt; loading the reader has to implement a vtk object that provides an api<br>
&gt; giving the integrator direct access to I/O functionality. In case you&#39;re<br>
interested the stream tracer is class is vtkSQFieldTracer and our reader is<br>
vtkSQBOVReader.<br>
&gt; The latest release could be found here<br>
&gt; <a href="https://github.com/burlen/SciberQuestToolKit/tarball/SQTK-20120531" target="_blank">https://github.com/burlen/SciberQuestToolKit/tarball/SQTK-20120531</a><br>
&gt;<br>
&gt; Burlen<br>
&gt;<br>
&gt; On 06/04/2012 02:21 AM, Stephan Rogge wrote:<br>
&gt;&gt; Hello Leo,<br>
&gt;&gt;<br>
&gt;&gt; ok, I took the &quot;disk_out_ref.ex2&quot; example data set and did some time<br>
&gt;&gt; measurements. Remember, my machine has 4 Cores + HyperThreading.<br>
&gt;&gt;<br>
&gt;&gt; My first observation is that PV seems to have a problem with<br>
&gt;&gt; distributing the data when the Multi-Core option (GUI) is enabled.<br>
&gt;&gt; When PV is started with builtin Multi-Core I was not able to apply a<br>
&gt;&gt; stream tracer with more than 1000 seed points (PV is freezing and<br>
&gt;&gt; never comes back). Otherwise, when pvserver processes has been<br>
&gt;&gt; started manually I was able to set up to 100.000 seed points. Is it a<br>
bug?<br>
&gt;&gt;<br>
&gt;&gt; Now let&#39;s have a look on the scaling performance. As you suggested,<br>
&gt;&gt; I&#39;ve used the D3 filter for distributing the data along the processes.<br>
&gt;&gt; The stream tracer execution time for 10.000 seed points:<br>
&gt;&gt;<br>
&gt;&gt; ##   Bulitin: 10.063 seconds<br>
&gt;&gt; ##   1 MPI-Process (no D3): 10.162 seconds<br>
&gt;&gt; ##   4 MPI-Processes: 15.615 seconds<br>
&gt;&gt; ##   8 MPI-Processes: 14.103 seconds<br>
&gt;&gt;<br>
&gt;&gt; and 100.000 seed points:<br>
&gt;&gt;<br>
&gt;&gt; ##   Bulitin: 100.603 seconds<br>
&gt;&gt; ##   1 MPI-Process (no D3): 100.967 seconds<br>
&gt;&gt; ##   4 MPI-Processes: 168.1 seconds<br>
&gt;&gt; ##   8 MPI-Processes: 171.325 seconds<br>
&gt;&gt;<br>
&gt;&gt; I cannot see any positive scaling behavior here. Maybe is this<br>
&gt;&gt; example not appropriate for scaling measurements?<br>
&gt;&gt;<br>
&gt;&gt; One more thing: I&#39;ve visualized the vtkProcessId and saw that the<br>
&gt;&gt; whole vector field is partitioned. I thought, that each streamline is<br>
&gt;&gt; integrated in its own process. But it seems that this is not the case.<br>
&gt;&gt; This could explain my scaling issues: In cases of small vector fields<br>
&gt;&gt; the overhead of synchronization becomes too large and decreases the<br>
&gt; overall performance.<br>
&gt;&gt; My suggestion is to have a parallel StreamTracer which is built for a<br>
&gt;&gt; single machine with several threads. Could be worth to randomly<br>
&gt;&gt; distribute the seeds over all available (local) processes? Of course,<br>
&gt;&gt; each process have access on the whole vector field.<br>
&gt;&gt;<br>
&gt;&gt; Cheers,<br>
&gt;&gt; Stephan<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Von: Yuanxin Liu [mailto:<a href="mailto:leo.liu@kitware.com" target="_blank">leo.liu@kitware.com</a>]<br>
&gt;&gt; Gesendet: Freitag, 1. Juni 2012 16:13<br>
&gt;&gt; An: Stephan Rogge<br>
&gt;&gt; Cc: Andy Bauer; <a href="mailto:paraview@paraview.org" target="_blank">paraview@paraview.org</a><br>
&gt;&gt; Betreff: Re: [Paraview] Parallel Streamtracer<br>
&gt;&gt;<br>
&gt;&gt; Hi, Stephan,<br>
&gt;&gt;     I did measure the performance at some point and was able to get<br>
&gt;&gt; fairly decent speed up with more processors. So I am surprised you<br>
&gt;&gt; are seeing huge latency.<br>
&gt;&gt;<br>
&gt;&gt;     Of course, the performance is sensitive to the input.  It is also<br>
&gt;&gt; sensitive to how readers distribute data. So, one thing you might<br>
&gt;&gt; want to try is to attach the &quot;D3&quot; filter to the reader.<br>
&gt;&gt;<br>
&gt;&gt;     If that doesn&#39;t help,  I will be happy to get your data and take<br>
&gt;&gt; a<br>
&gt; look.<br>
&gt;&gt; Leo<br>
&gt;&gt;<br>
&gt;&gt; On Fri, Jun 1, 2012 at 1:54 AM, Stephan<br>
&gt;&gt; Rogge&lt;<a href="mailto:Stephan.Rogge@tu-cottbus.de" target="_blank">Stephan.Rogge@tu-cottbus.de</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; Leo,<br>
&gt;&gt;<br>
&gt;&gt; As I mentioned in my initial post of this thread: I used the<br>
&gt;&gt; up-to-date master branch of ParaView. Which means I have already used<br>
&gt;&gt; your implementation.<br>
&gt;&gt;<br>
&gt;&gt; I can imagine, to parallelize this algorithm can be very tough. And I<br>
&gt;&gt; can see that distribute the calculation over 8 processes does not<br>
&gt;&gt; lead to a nice scaling.<br>
&gt;&gt;<br>
&gt;&gt; But I don&#39;t understand this huge amount of latency when using the<br>
&gt;&gt; StreamTracer in a Cave-Mode with two view ports and two pvserver<br>
&gt;&gt; processes on the same machine (extra machine for the client). I guess<br>
&gt;&gt; the tracer filter is applied for each viewport separately? This would<br>
&gt;&gt; be ok as long as both filter executions run parallel. And I doubt<br>
&gt;&gt; that<br>
&gt; this is the case.<br>
&gt;&gt; Can you help to clarify my problem?<br>
&gt;&gt;<br>
&gt;&gt; Regards,<br>
&gt;&gt; Stephan<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Von: Yuanxin Liu [mailto:<a href="mailto:leo.liu@kitware.com" target="_blank">leo.liu@kitware.com</a>]<br>
&gt;&gt; Gesendet: Donnerstag, 31. Mai 2012 21:33<br>
&gt;&gt; An: Stephan Rogge<br>
&gt;&gt; Cc: Andy Bauer; <a href="mailto:paraview@paraview.org" target="_blank">paraview@paraview.org</a><br>
&gt;&gt; Betreff: Re: [Paraview] Parallel Streamtracer<br>
&gt;&gt;<br>
&gt;&gt; It is in the current VTK and ParaView master.  The class is<br>
&gt;&gt; vtkPStreamTracer.<br>
&gt;&gt;<br>
&gt;&gt; Leo<br>
&gt;&gt; On Thu, May 31, 2012 at 3:31 PM, Stephan<br>
&gt;&gt; Rogge&lt;<a href="mailto:stephan.rogge@tu-cottbus.de" target="_blank">stephan.rogge@tu-cottbus.de</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; Hi, Andy and Leo,<br>
&gt;&gt;<br>
&gt;&gt; thanks for your replies.<br>
&gt;&gt;<br>
&gt;&gt; Is it possible to get this new implementation? I would to give it a try.<br>
&gt;&gt;<br>
&gt;&gt; Regards,<br>
&gt;&gt; Stephan<br>
&gt;&gt;<br>
&gt;&gt; Am 31.05.2012 um 17:48 schrieb Yuanxin Liu&lt;<a href="mailto:leo.liu@kitware.com" target="_blank">leo.liu@kitware.com</a>&gt;:<br>
&gt;&gt; Hi, Stephan,<br>
&gt;&gt;      The previous implementation only has serial performance:  It<br>
&gt;&gt; traces the streamlines one at a time and never starts a new<br>
&gt;&gt; streamline until the previous one finishes.  With communication<br>
&gt;&gt; overhead, it is not surprising it got slower.<br>
&gt;&gt;<br>
&gt;&gt;     My new implementation is able to let the processes working on<br>
&gt;&gt; different streamlines simultaneously and should scale much better.<br>
&gt;&gt;<br>
&gt;&gt; Leo<br>
&gt;&gt;<br>
&gt;&gt; On Thu, May 31, 2012 at 11:27 AM, Andy Bauer&lt;<a href="mailto:andy.bauer@kitware.com" target="_blank">andy.bauer@kitware.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt; Hi Stephan,<br>
&gt;&gt;<br>
&gt;&gt; The parallel stream tracer uses the partitioning of the grid to<br>
&gt;&gt; determine which process does the integration. When the streamline<br>
&gt;&gt; exits the subdomain of a process there is a search to see if it<br>
&gt;&gt; enters a subdomain assigned to any other processes before figuring it<br>
&gt;&gt; whether it has left the entire domain.<br>
&gt;&gt;<br>
&gt;&gt; Leo, copied here, has been improving the streamline implementation<br>
&gt;&gt; inside of VTK so you may want to get his newer version. It is a<br>
&gt;&gt; pretty tough algorithm to parallelize efficiently without making any<br>
&gt;&gt; assumptions on the flow or partitioning.<br>
&gt;&gt;<br>
&gt;&gt; Andy<br>
&gt;&gt;<br>
&gt;&gt; On Thu, May 31, 2012 at 4:16 AM, Stephan<br>
&gt;&gt; Rogge&lt;<a href="mailto:Stephan.Rogge@tu-cottbus.de" target="_blank">Stephan.Rogge@tu-cottbus.de</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; Hello,<br>
&gt;&gt;<br>
&gt;&gt; I have a question related to the parallelism of the stream tracer: As<br>
&gt;&gt; I understand the code right, each line integration (trace) is<br>
&gt;&gt; processed in an own MPI process. Right?<br>
&gt;&gt;<br>
&gt;&gt; To test the scalability of the Stream tracer I&#39;ve load a structured<br>
&gt;&gt; (curvilinear) grid and applied the filter with a Seed resolution of<br>
&gt;&gt; 1500 and check the timings in a single and multi-thread (Multi Core<br>
&gt;&gt; enabled in PV<br>
&gt;&gt; GUI) situation.<br>
&gt;&gt;<br>
&gt;&gt; I was really surprised that multi core slows done the execution time<br>
&gt;&gt; to 4 seconds. The single core takes only 1.2 seconds. Data migration<br>
&gt;&gt; cannot be the explanation for that behavior (0.5 seconds). What is<br>
&gt;&gt; the<br>
&gt; problem here?<br>
&gt;&gt; Please see attached some statistics...<br>
&gt;&gt;<br>
&gt;&gt; Data:<br>
&gt;&gt; * Structured (Curvilinear) Grid<br>
&gt;&gt; * 244030 Cells<br>
&gt;&gt; * 37 MB Memory<br>
&gt;&gt;<br>
&gt;&gt; System:<br>
&gt;&gt; * Intel i7-2600K (4 Cores + HT = 8 Threads)<br>
&gt;&gt; * 16 GB Ram<br>
&gt;&gt; * Windows 7 64 Bit<br>
&gt;&gt; * ParaView (master-branch, 64 bit compilation)<br>
&gt;&gt;<br>
&gt;&gt; #################################<br>
&gt;&gt; Single Thread (Seed resolution 1500):<br>
&gt;&gt; #################################<br>
&gt;&gt;<br>
&gt;&gt; Local Process<br>
&gt;&gt; Still Render,  0.014 seconds<br>
&gt;&gt; RenderView::Update,  1.222 seconds<br>
&gt;&gt;      vtkPVView::Update,  1.222 seconds<br>
&gt;&gt;          Execute vtkStreamTracer id: 2184,  1.214 seconds Still<br>
&gt;&gt; Render,<br>
&gt;&gt; 0.015 seconds<br>
&gt;&gt;<br>
&gt;&gt; #################################<br>
&gt;&gt; Eight Threads (Seed resolution 1500):<br>
&gt;&gt; #################################<br>
&gt;&gt;<br>
&gt;&gt; Local Process<br>
&gt;&gt; Still Render,  0.029 seconds<br>
&gt;&gt; RenderView::Update,  4.134 seconds<br>
&gt;&gt; vtkSMDataDeliveryManager: Deliver Geome,  0.619 seconds<br>
&gt;&gt;      FullRes Data Migration,  0.619 seconds Still Render,  0.042<br>
&gt;&gt; seconds<br>
&gt;&gt;      OpenGL Dev Render,  0.01 seconds<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Render Server, Process 0<br>
&gt;&gt; RenderView::Update,  4.134 seconds<br>
&gt;&gt;      vtkPVView::Update,  4.132 seconds<br>
&gt;&gt;          Execute vtkStreamTracer id: 2193,  3.941 seconds FullRes<br>
&gt;&gt; Data Migration,  0.567 seconds<br>
&gt;&gt;      Dataserver gathering to 0,  0.318 seconds<br>
&gt;&gt;      Dataserver sending to client,  0.243 seconds<br>
&gt;&gt;<br>
&gt;&gt; Render Server, Process 1<br>
&gt;&gt; Execute vtkStreamTracer id: 2193,  3.939 seconds<br>
&gt;&gt;<br>
&gt;&gt; Render Server, Process 2<br>
&gt;&gt; Execute vtkStreamTracer id: 2193,  3.938 seconds<br>
&gt;&gt;<br>
&gt;&gt; Render Server, Process 3<br>
&gt;&gt; Execute vtkStreamTracer id: 2193,  4.12 seconds<br>
&gt;&gt;<br>
&gt;&gt; Render Server, Process 4<br>
&gt;&gt; Execute vtkStreamTracer id: 2193,  3.938 seconds<br>
&gt;&gt;<br>
&gt;&gt; Render Server, Process 5<br>
&gt;&gt; Execute vtkStreamTracer id: 2193,  3.939 seconds<br>
&gt;&gt;<br>
&gt;&gt; Render Server, Process 6<br>
&gt;&gt; Execute vtkStreamTracer id: 2193,  3.938 seconds<br>
&gt;&gt;<br>
&gt;&gt; Render Server, Process 7<br>
&gt;&gt; Execute vtkStreamTracer id: 2193,  3.939 seconds<br>
&gt;&gt;<br>
&gt;&gt; Cheers,<br>
&gt;&gt; Stephan<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;&gt;<br>
&gt;&gt; Visit other Kitware open-source projects at<br>
&gt;&gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;&gt;<br>
&gt;&gt; Please keep messages on-topic and check the ParaView Wiki at:<br>
&gt;&gt; <a href="http://paraview.org/Wiki/ParaView" target="_blank">http://paraview.org/Wiki/ParaView</a><br>
&gt;&gt;<br>
&gt;&gt; Follow this link to subscribe/unsubscribe:<br>
&gt;&gt; <a href="http://www.paraview.org/mailman/listinfo/paraview" target="_blank">http://www.paraview.org/mailman/listinfo/paraview</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;&gt;<br>
&gt;&gt; Visit other Kitware open-source projects at<br>
&gt;&gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;&gt;<br>
&gt;&gt; Please keep messages on-topic and check the ParaView Wiki at:<br>
&gt;&gt; <a href="http://paraview.org/Wiki/ParaView" target="_blank">http://paraview.org/Wiki/ParaView</a><br>
&gt;&gt;<br>
&gt;&gt; Follow this link to subscribe/unsubscribe:<br>
&gt;&gt; <a href="http://www.paraview.org/mailman/listinfo/paraview" target="_blank">http://www.paraview.org/mailman/listinfo/paraview</a><br>
&gt;<br>
<br>
<br>
</div></div></blockquote></div><br>