Jed, I think you should namespace the Seg thingy with Petsc and I'd advocate namespacing even all the static functions with PETSc, makes code clearer quicker.
Barry On Jan 6, 2013, at 3:08 PM, Jed Brown <jedbrown at mcs.anl.gov> wrote: > I pushed PetscCommBuildTwoSided() which is a scalable interface for setting > up two-sided communication given one-sided information. > > https://bitbucket.org/petsc/petsc-dev/commits/721cf8e8a07d6de2abc9b4f621f09a70e0d48012#Lsrc/sys/utils/mpits.cT257 > > The default interface uses the O(size) MPI_Reduce, but if you have an MPI-3 > implementation (providing MPI_Ibarrier), it uses the nonblocking consensus > algorithm from > > http://www.unixer.de/publications/img/hoefler-dsde-protocols.pdf > > You can revert to the old implementation using -build_twosided ALLREDUCE > (versus IBARRIER). I'd like to eventually update most uses of > PetscGatherNumberOfMessages() and PetscGatherMessageLengths() to use this > interface, and to use it in new code whenever possible. > > In the implementation, I wrote a utility similar to PetscFreeSpace, but with > what I think is a safer and more generic interface. It's currently called > SegArray, but I'd be happy to change the name (maybe StreamBuffer). It's > essentially used to buffer a chunked stream (with low-latency incremental > allocation) and later return it as a contiguous array. I'd appreciate > comments on the API before moving it to include/petsc-private. > > https://bitbucket.org/petsc/petsc-dev/commits/721cf8e8a07d6de2abc9b4f621f09a70e0d48012#Lsrc/sys/utils/mpits.cT42
