I would have the reader (most parallel readers do this) generate empty
data on all processes of id >= N. Then your filter can redistribute
from those N processes to all M processes. I am pretty sure
RedistributePolyData can do this for polydata as long as you set the
weight to 1 on all processes. Ditto for D3.

-berk

On Fri, Dec 11, 2009 at 4:13 PM, Biddiscombe, John A. <biddi...@cscs.ch> wrote:
> Berk
>
>> It sounds like M is equal to the number of processors (pipelines) and
>> M >> N. Is that correct?
>
> Yes, That's the idea. N blocks, broken (in place) into M new blocks, then 
> fanned out to the M processes downstream where they can be processed 
> separately . If it were on a single node, then each block could be a separate 
> 'connection' to a downstream filter, but distributed, an explicit send is 
> needed.
>
> JB
>
>>
>> -berk
>>
>> On Fri, Dec 11, 2009 at 10:40 AM, Biddiscombe, John A. <biddi...@cscs.ch>
>> wrote:
>> > Berk
>> >
>> > The data will be UnstructuredGrid for now. Multiblock, but actually, I
>> don't really care what each block is, only that I accept one block on each
>> of N processes, split it into more pieces, and the next filter accepts one
>> (or more if the numbers don't match up nicely) blocks and process them. The
>> redistribution shouldn't care what data types, only how many blocks in and
>> out.
>> >
>> > Looking at RedistributePolyData makes me realize my initial idea is no
>> good. In my mind I had a pipeline where multiblock datasets are passed down
>> the pipeline and simply the number of pieces is manipulated to achieve what
>> I wanted - but I see now that if I have M pieces downstream mapped upstream
>> to N pieces, what will happen is the readers will be effectively duplicated
>> and M/N readers will read the same pieces. I don't want this to happen as IO
>> will be a big problem if readers read the same blocks M/N times.
>> > I was hoping there was a way of simply instructing the pipeline to manage
>> the pieces, but I see now that this won't work, as there needs to be a
>> specific Send from each N to their M/N receivers (because the data is
>> physically in another process, so the pipeline can't see it). This is very
>> annoying as there must be a class which already does this (block
>> redistribution, rather than polygon level redistribution), and I would like
>> it to be more 'pipeline integrated' so that the user doesn't have to
>> explicitly send each time an algorithm needs it.
>> >
>> > I'll go through RedistributePolyData in depth and see what I can pull out
>> of it - please feel free to steer me towards another possibility :)
>> >
>> > JB
>> >
>> >
>> >> -----Original Message-----
>> >> From: Berk Geveci [mailto:berk.gev...@kitware.com]
>> >> Sent: 11 December 2009 16:09
>> >> To: Biddiscombe, John A.
>> >> Cc: paraview@paraview.org
>> >> Subject: Re: [Paraview] Parallel Data Redistribution
>> >>
>> >> What is the data type? vtkRedistributePolyData and its subclasses do
>> >> this for polydata. It can do load balancing (where you can specify a
>> >> weight for each processor) as well.
>> >>
>> >> -berk
>> >>
>> >> On Fri, Dec 11, 2009 at 9:59 AM, Biddiscombe, John A. <biddi...@cscs.ch>
>> >> wrote:
>> >> > I have a filter pipeline which reads N blocks from disk, this works
>> fine
>> >> on N processors.
>> >> >
>> >> > I now wish to subdivide those N blocks (using a custom filter) to
>> produce
>> >> new data which will consist of M blocks - where M >> N.
>> >> >
>> >> > I wish to run the algorithm on M processors and have the piece
>> information
>> >> transformed between the two filters (reader -> splitter), so that blocks
>> are
>> >> distributed correctly. The reader will Read N blocks (leaving M-N
>> processes
>> >> unoccupied), but the filter which splits them up needs to output a
>> different
>> >> number of pieces and have the full M processes receiving data.
>> >> >
>> >> > I have a reasonably good idea of how to implement this, but I'm
>> wondering
>> >> if any filters already do something similar. I will of course take apart
>> the
>> >> D3 filter for ideas, but I don't need to do a parallel spatial
>> decomposition
>> >> since my blocks are already discrete - I just want to redistribute the
>> >> blocks around and more importantly change the numbers of them between
>> >> filters.
>> >> >
>> >> > If anyone can suggest examples which do this already, please do
>> >> >
>> >> > Thanks
>> >> >
>> >> > JB
>> >> >
>> >> > --
>> >> > John Biddiscombe,                            email:biddisco @ cscs.ch
>> >> > http://www.cscs.ch/
>> >> > CSCS, Swiss National Supercomputing Centre  | Tel:  +41 (91) 610.82.07
>> >> > Via Cantonale, 6928 Manno, Switzerland      | Fax:  +41 (91) 610.82.82
>> >> >
>> >> >
>> >> > _______________________________________________
>> >> > Powered by www.kitware.com
>> >> >
>> >> > Visit other Kitware open-source projects at
>> >> http://www.kitware.com/opensource/opensource.html
>> >> >
>> >> > Please keep messages on-topic and check the ParaView Wiki at:
>> >> http://paraview.org/Wiki/ParaView
>> >> >
>> >> > Follow this link to subscribe/unsubscribe:
>> >> > http://www.paraview.org/mailman/listinfo/paraview
>> >> >
>> >
>
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the ParaView Wiki at: 
http://paraview.org/Wiki/ParaView

Follow this link to subscribe/unsubscribe:
http://www.paraview.org/mailman/listinfo/paraview

Reply via email to