“Another operation which uses a recursive tree structure is 
CascadedPolygonUnion.  This should be fairly easy to make parallel, I think”

Exactly the same one I was thinking of! (and just started to look at). The new 
concurrent classes in JDK 8 look promising, in particular the RecursiveTask and 
ForkJoinPool.

Jim


From: Martin Davis [mailto:[email protected]]
Sent: 30 November 2015 17:41
To: Kay, Jim
Cc: [email protected]
Subject: Re: [Jts-topo-suite-user] JTS and Parallel Computing

I've given parallel computation with JTS only some casual thought, but one 
thing that occurred to me is that there's two ways to parallelize geometry 
computation with JTS.  The first is what I'll call *external* parallelism.  In 
this scenario JTS itself runs sequentially, but the invoking process is 
parallelized.  In many cases the client process is easily parallelizable, so 
this provides improved throughput for low effort.

The other approach is *internal* parallelism, in which JTS algorithms are 
reworked to offer some degree of multi-execution. This sounds like what you're 
thinking of.  Is it the case that the frameworks mentioned can only improve 
performance for internal parallelism?  (In which case I'm curious to know why 
this is - and to what extent it's in fact possible.)

For internal parallelism, the obvious place to look is at the major loops in 
the processes.  In the case of overlay operations, this would be the noding 
phase.  Ironically, the algorithms which provide best performance in the 
sequential case often are not ones which parallelize.  For instance, currently 
overlay uses a sweepline algorithm for noding (SimpleMCSweepLineIntersector), 
which is inherently sequential.  To parallelize this it would be better to use 
something like MCIndexNoder, which iterates over a set of unordered chains.

In the case of distance, the current (inefficient) algorithm iterates over a 
set of unordered geometry "facets", so this should be easily parallelized.  
However, there's a much more efficient approach which is to use a 
Branch-and-Bound algorithm over two spatial indexes.  Perhaps this would be 
harder to parallelize?

Another operation which uses a recursive tree structure is 
CascadedPolygonUnion.  This should be fairly easy to make parallel, I think.

One worthy goal would be to generalize the code so that it is easy to switch 
between parallel and sequential execution modes.  How hard would this be?

On Mon, Nov 30, 2015 at 12:44 AM, Kay, Jim 
<[email protected]<mailto:[email protected]>> wrote:
I am starting to think about dipping my toe in the water of Java parallel 
computing; possibly using JCuda for gpu calculations, or PJ2 for everything, or 
possibly MPJ-Express.
Has anybody got any experience or advice of using JTS in a parallel Java world?

Our application principally uses a lot of basic Polygon operations (union, 
intersection, distance between geometries).
Can anybody provide any useful pointers as to which core Geometry routines 
might benefit from speedup by being rewritten to use parallel methods?

Thanks.

Jim

Jim Kay
Principal Engineer
Tel:   +44 (0) 1332 223229<tel:%2B44%20%280%29%201332%20223229>
Mob:   +44 (0) 7715 536828<tel:%2B44%20%280%29%207715%20536828>
Email: [email protected]<mailto:[email protected]>



[cid:[email protected]]
interfleetgroup.com<http://www.interfleetgroup.com/>   |   
snclavalin.com<http://snclavalin.com>


------------------------------------------------------------------------------
Go from Idea to Many App Stores Faster with Intel(R) XDK
Give your users amazing mobile app experiences with Intel(R) XDK.
Use one codebase in this all-in-one HTML5 development environment.
Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
http://pubads.g.doubleclick.net/gampad/clk?id=254741911&iu=/4140
_______________________________________________
Jts-topo-suite-user mailing list
[email protected]<mailto:[email protected]>
https://lists.sourceforge.net/lists/listinfo/jts-topo-suite-user

------------------------------------------------------------------------------
Go from Idea to Many App Stores Faster with Intel(R) XDK
Give your users amazing mobile app experiences with Intel(R) XDK.
Use one codebase in this all-in-one HTML5 development environment.
Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
http://pubads.g.doubleclick.net/gampad/clk?id=254741911&iu=/4140
_______________________________________________
Jts-topo-suite-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jts-topo-suite-user

Reply via email to