[vtkusers] Parallel VTK

Jim Ahrens ahrens at lanl.gov
Mon Jun 26 14:51:59 EDT 2000


A technical report entitled, "A Parallel Approach for Efficiently
Visualizing Extremely Large Time-Varying Datasets" describing this work
can be found at http://www.acl.lanl.gov/Viz/viz-papers.html. Additional
information and examples will be available over the next several weeks.

--Jim Ahrens

Charles Law wrote:

>
> We have received several questions about how to use new
> multiprocessing features in VTK (i.e. MPI with VTK).  Here is a
> summary of what has been done so far, and what we plan to do in the
> future:
>
> Kitware has been contracted to extend VTK to handle extremely large
> data sets on multiprocessing/distributed systems.  The parallel-VTK
> tri-lab project (LosAlamos, Sandia, Lawence Livermoore) is being
> funded by the ASCI/VIEWS project and is being led by Jim Ahrens from
> LANL.
>
> Controllers and MPI :
> VTK2.4 had new objects to manage VTK in multiple processes.
> Unfortunately, these objects were not operational in the official
> VTK3.1 release.  They are now working and available in the nightly
> releases.
>
> vtkMultiProcessController provides an api for communication.  It
> initially sets up the processes at the start of the program, and
> manages communication between these processes.  It can sends arrays,
> and has methods for sending vtk data objects between processes.  It
> also implements remote method invocations (RMIs).  Currently, there
> are two concrete implementations for the controller object.  The
> default vtkThreadedController just runs multiple threads and takes
> advantage of shared memory to implement the communication methods.
> vtkMPIController uses MPI for its communications.  The MPI controller
> allows VTK to be run on distributed clusters.
>
> In order to use MPI you have to do several things.  The first thing
> you need to have are the MPI libraries an header files.  Argonne Nat.
> Lab. has a free version of MPI at
> http://www-unix.mcs.anl.gov/mpi/mpich/ .  You need to edit you
> user.make to point to the MPI libraries and include directories.  Here
> is an example from my user.make:
>
> MPI_INCLUDE=-I/home/lawcc/mpich/include
> MPI_LIBS=/home/lawcc/mpich/build/LINUX/ch_p4/lib/libmpich.a
> /home/lawcc/mpich/build/LINUX/ch_p4/lib/libpmpich.a
>
> The last step is to use the option "--with-mpi" when you configure
> VTK.  This will make the vtkMPIController the default implementation
> of the vtkMultiProcessController object.  If you want to switch back
> to the threaded controller, you can set an environment variable
> (setenv
> VTK_CONTROLLER Threaded).
>
> .../vtk/contrib/examplesCxx/TestController.cxx has a simple example of
> how controllers are used.
>
> Ports
> vtkInputPort and vtkOutputPort are classes that were initially
> developed and contributed by Jim Ahrens.  They allow you to connect
> pipelines in separate processes.  They use the default controller for
> communication, and manage pipeline protocol necessary for updating the
> pipeline.  Examples are:
> .../vtk/contrib/examplesCxx/TestImagePort.cxx
> .../vtk/contrib/examplesCxx/TestStructuredGridPort.cxx
> .../vtk/contrib/examplesCxx/TestStructuredGridPort.cxx
> .../vtk/contrib/examplesCxx/TestPolyDataPort.cxx
>
>
> Data Parallelism
> To take advantage of parallelism, you can break up processing between
> multiple processes.  The easiest way to do this is to divide up the
> data and have each process handle a piece of it.  The image processing
> pipeline has always had the ability process structured volumes in
> pieces.  This featured has been used to breakup the datasets for
> streaming (pieces processed one after another).  VTK3.1 extended the
> graphics (unstructured) pipeline to also process pieces.  Unstructured
> pieces are specified by "Borg" notation: piece n of m.  It is the
> responsibility of the source to determine which cells belong in what
> piece.
>
> For an example of how unstructured pieces can be used to implement
> data parallelism take a look at:
> .../vtk/contrib/examplesCxx/ParallelIso.cxx
> In this example, the append filter asks for different pieces from its
> inputs.
>
> Although the pipeline can handle unstructured pieces, only a hand full
> of sources have been extended to supply pieces.  Most use the default
> behavior of putting the entire dataset in the first piece, and leaving
> the other pieces empty.  We are currently working on expanding the
> number of sources that can divide their output intelligently.
>
> Boundaries
> The above approach for defining pieces has a problem when filters use
> information from neighboring cells (i.e. smoothing).  The filters
> treat piece boundaries as dataset boundaries.  This will produce seams
> between pieces.  We are working on ways to solve this problem.
> Filters that require neighboring information would at least give the
> user an option to disallow pieces.  Another proposed solution is to
> implement ghost cells.  Boundary cells would be duplicated in pieces
> with a special "ghost" status.  The last solution will use custom
> communication during the execute methods of equivalent filters in
> different processes.
>
>
>
> Charles Law.
>
>
>
>
>
>
>
>
>
> _______________________________________________ This is the private
> VTK discussion list. Please keep messages on-topic. Check the FAQ
> at: vtkusers mailing list vtkusers at public.kitware.com
> http://public.kitware.com/mailman/listinfo/vtkusers





More information about the vtkusers mailing list