DAcreate2d process layout order

Sean Dettrick sean at trialphaenergy.com
Thu May 18 18:28:11 CDT 2006


Hi Barry,
the order is determined by MPI_Cart_create.  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