[yt-users] IsBound and mpi4py

Matthew Turk matthewturk at gmail.com
Wed Sep 28 09:14:35 PDT 2011


On Wed, Sep 28, 2011 at 12:03 PM, Stephen Skory <s at skory.us> wrote:
> Hi Eve,
>
>> But is the derived quantity "IsBound" also not parallel in general? The code
>> I'm using does not use clump object at all; all it's doing is picking out a
>> sphere object centred around some point in the box
>
> "IsBound" is precisely the expensive operation I mentioned in my last
> email that is not parallel. That calls the functionality that
> calculates the gravitational attraction between all cells in the
> object and tells you if the object is bound or not. When someone is
> sufficiently motivated, there are parallel treecodes that could be
> included in yt, but that would be a significant project, and is not
> likely to happen any time soon. Unless you want to volunteer! :)
>
>> I thought the reason why clump finding does not work in parallel was because
>> parallel contour algorithm was not yet implemented, which, if I understand
>> correctly, is separate from "IsBound".
>
> Yes, that is another reason why clump finding is not truly parallel.

To echo what Stephen says, parallelizing clump finding is actually
easier than parallelizing the IsBound operation.  There is some extant
code currently in testing to work with parallel clump finding, but I
do not have an estimate of when it could be included; likely not for
several months.

>
> The only way clump finding is parallelized now is over individual
> clumps. That is, given a bunch of different objects, each object can
> be processed by a single core, and therefore many are done at the same
> time, but all the heavy lifting (IsBound) is done in serial.

One can implement this with mpi4py, if you have saved clumps.  You
will have to run yt in serial mode, but something like this could
work:

from yt.mods import *
from mpi4py import MPI
rank = MPI.COMM_WORLD.rank
size = MPI.COMM_WORLD.size

all_my_clumps = get_my_list_of_clumps(somehow)

for clump in all_my_clumps[rank::size]:
    binding_energy = clump.quantities["IsBound"]()

We're hoping to add helper functions to make this kind of thing easier
in the future.

-Matt

>
> --
> Stephen Skory
> s at skory.us
> http://stephenskory.com/
> 510.621.3687 (google voice)
> _______________________________________________
> yt-users mailing list
> yt-users at lists.spacepope.org
> http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
>



More information about the yt-users mailing list