DAcreate2d process layout order
Sean Dettrick
sean at trialphaenergy.com
Thu May 18 19:23:30 CDT 2006
Barry Smith wrote:
>
>
>
>
> On Thu, 18 May 2006, Sean Dettrick wrote:
>
>> Hi Barry,
>> the order is determined by MPI_Cart_create.
>
>
> Do you mean that MPI_Cart_create() orders across the 2nd (y-axis)
> fastest and then the first (x-axis)?
I am not sure that my interpretation is correct. I'll send you a small
demo, so you can see for yourself if you agree with it.
Sean
> Hmmm, maybe we should change the
> DA? Changing it once and for all (not supporting both) is probably
> not a big deal and shouldn't break much (I hope).
> Bill, what do you think?
>
> Barry
>
>> I've tried to swap x and y in the DA to make the problem go away but
>> haven't succeeded yet. Not enough brain cells I suspect ... still
>> thinking about it.
>> Thanks for the response,
>> Sean
>>
>> Barry Smith wrote:
>>
>>>
>>>
>>> Sean,
>>>
>>> I don't completely understand what goes wrong. Is it because YOUR
>>> application orders the processors related to geometry in the
>>> following way?
>>>
>>> ^ y direction
>>> |
>>> 2 5 8
>>> 1 4 7
>>> 0 3 6
>>>
>>> -> x direction
>>>
>>> Or is this something inherent in MPI_Cart_create?
>>>
>>> PETSc does it so
>>>
>>> ^ y direction
>>> |
>>> 6 7 8
>>> 3 4 5
>>> 0 1 2
>>>
>>> -> x direction
>>>
>>> If you want to "force" the PETSc DA to match the first case you
>>> could just
>>> "lie" to PETSc and treat the x direction as the y direction and the
>>> x as the y.
>>> Thus you would flip the i and j indices. You could do the same trick in
>>> 3d.
>>>
>>> There is no easy way to change the DA to do the ordering as the first
>>> case above or support both approaches (possible? yes, but ugly
>>> duplicate code to handle the two cases).
>>>
>>> I've cc:ed to Bill since he would know more about the details of
>>> MPI_cart_create().
>>>
>>> Barry
>>>
>>> On Mon, 15 May 2006, Sean Dettrick wrote:
>>>
>>>> Hi,
>>>>
>>>> I'm trying to use DACreate2d and KSP in my existing MPI
>>>> application. I already have a Cartesian communicator established,
>>>> and I set PETSC_COMM_WORLD equal to it and then call PetscInitialize.
>>>>
>>>> This works fine on a prime number of CPUs, because there is only
>>>> one possible ordered MPI layout in one dimension. But with a
>>>> non-prime number there are two possible ordered layouts and it just
>>>> happens that my 2D CPU layout (determined by MPI_Cart_create) is
>>>> the transpose of the PETSc 2D CPU layout. Is there a way to
>>>> organize the DA layout more explicitly than with DACreate2d? Or
>>>> to tell PETSc to transpose its CPU order? I also wonder about the
>>>> 3D case.
>>>>
>>>> thanks
>>>> Sean
>>>>
>>>>
>>>
>>>
>>
>>
>
>
More information about the petsc-users
mailing list