[vtkusers] multicore support

David E DeMarle dave.demarle at kitware.com
Fri Nov 21 01:07:56 EST 2008


On Thu, Nov 20, 2008 at 9:07 PM, Paul Harris <harris.pc at gmail.com> wrote:
> Hi,
>
> I am just starting out with VTK, and I want to know how to properly support
> multicore desktop/laptop PCs...
>
> I have done a lot of reading, I've read the VTK OO book, and now I'm
> checking out ParaView...
>
> Am I correct in thinking that MPI is the main (only?) way that people are
> processing their data in parallel?
>
> I have tried without luck to search for info and messages about executing on
> a shared memory system (ie a multicore desktop), or even threaded (seems to
> complicate things a lot).
> Is the solution to use MPI, but on the one node?
> Or is there some sort of decent shared-memory support?
> From what I read on vtkDataObject, it looks like threading is a path to a
> mine field, as a lot of classes may not be thread-safe, right?
>
>
> Am I also correct to say that ParaView adds a lot of parallel processing
> support to VTK ?  Support that is not available to VTK ?
>
>
> I have lots more questions, but I'll stop there for now...
> I eagerly await your responses!
>
> thanks for your time,
> Paul
>
>
> _______________________________________________
> This is the private VTK discussion list.
> Please keep messages on-topic. Check the FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
>

Many of VTK's  imaging filters support thread level parallelism. When
VTK is compiled with threading support, those filters in the Imaging
kit will automatically spawn threads to take advantage of the
available parallelism near to the innermost loop. When processing this
type of data, threading is fairly easy to do and scales, in terms of
execution time, very well.

ParaView heavily uses VTK's process level parallelism to make all data
types (images and unstructured types) scale in terms of memory size.
That is, given enough aggregate RAM, any size problem can be
processed. This is available in VTK through the Parallel toolkit. For
the most part it is only accessible through MPI and parallelizes near
the outermost loop.

To make a long story short, if you are working with image data, VTK
has built in multicore support. If you are working with unstructured
data, your best bet is to use mpi on your multicore machine. If you
want to use VTK with threading otherwise, it can be done but as you
say you are heading into a minefield.

hth
-- 
David E DeMarle
Kitware, Inc.
R&D Engineer
28 Corporate Drive
Clifton Park, NY 12065-8662
Phone: 518-371-3971 x109



More information about the vtkusers mailing list