MPI-layout of PETSc
Rolf Kuiper
kuiper at mpia.de
Fri Jul 3 03:52:55 CDT 2009
Hi,
Am 30.06.2009 um 02:24 schrieb Barry Smith:
>
> On Jun 29, 2009, at 7:07 PM, Rolf Kuiper wrote:
>
>> Hi PETSc users,
>>
>> I ran into trouble in combining my developed PETSc application with
>> another code (based on another library called "ArrayLib").
>> The problem is the parallel layout for MPI, e.g. in 2D with 6 cpus
>> the ArrayLib code gives the names/ranks of the local cpus first in
>> y-direction, than in x (from last to first, in the same way the MPI
>> arrays are called, like 3Darray[z][y][x]):
>>
>> y
>> ^
>> | 2-4-6
>> | 1-3-5
>> |--------> x
>>
>> If I call DACreate() from PETSc, it will assume an ordering
>> according to names/ranks first set in x-direction, than in y:
>>
>> y
>> ^
>> | 4-5-6
>> | 1-2-3
>> |--------> x
>>
>> Of course, if I now communicate the boundary values, I mix up the
>> domain (build by the other program).
>>
>> Is there a possibility / a flag to set the name of the ranks?
>> Due to the fact that my application is written and working in
>> curvilinear coordinates and not in cartesian, I cannot just switch
>> the directions.
>
> What we recommend in this case is to just change the meaning of x,
> y, and z when you use the PETSc DA. This does mean changing your
> code that uses the PETSc DA.
The code is used as a module for many codes, so I would prefer to not
change the code (and the meaning of directions, that's not user-
friendly), but 'just' change the communicator.
> I do not understand why curvilinear coordinates has anything to do
> with it. Another choice is to create a new MPI communicator that has
> the different ordering of the ranks of the processors and then using
> that comm to create the PETSc DA objects; then you would not need to
> change your code that calls PETSc.
I tried some time before to use the PetscSetCommWorld() routine, but I
can't find it anymore, how can I set a new communicator in PETSc3.0?
The communicator, I want to use, is the MPI_COMM_WORLD, which takes
the first described ordering.
Now I read that the MPI_COMM_WORLD is the default communicator for
PETSc. But why is the ordering than different?
Sorry for all this question, but (as you can see) I really don't
understand this comm problem at the moment,
Thanks for all,
Rolf
> Unfortunately PETSc doesn't have any way to flip how the DA
> handles the layout automatically.
>
> Barry
>
>>
>> Thanks a lot for your help,
>> Rolf
>
More information about the petsc-users
mailing list