On Tue, Sep 10, 2013 at 8:55 PM, Jed Brown <[email protected]> wrote:
> Matthew Knepley <[email protected]> writes: > >> PetscSF cannot currently scatter individual bytes (4 bytes minimum), and > >> even if it could, it's a horribly inefficient representation (4 or 8 > >> bytes of metadata for each byte of payload). The quick fix at that > >> moment was to send in units of size PetscInt (the struct was always > >> going to be divisible by that size). > >> > > > > The way I understand it, he never had a single MPI_BYTE, but always a > bunch. > > Shouldn't that packing handle that case? > > In DMPlexDistributeData, your fieldSF is blown up so that every unit has > its own metadata (rank, offset). That's a terrible mechanism for moving > structs with hundreds of bytes. > Hmm, okay we can probably handle some of the packing there. I will think about it. Matt > I would rather not make PetscSF deal with fully-heterogeneous data > (where each node can have a different size) because it makes indexing a > nightmare (you need a PetscSection or similar just to get in the door; I > don't want PetscSF to depend on PetscSection). > -- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
