[petsc-users] Parallelizing a matrix-free code

Michael Werner michael.werner at dlr.de
Tue Oct 17 03:21:27 CDT 2017


That's something I'm still struggling with. In the serial case, I can 
simply extract the values from the original grid, and since the ordering 
of the Jacobian is the same there is no problem. In the parallel case 
this is still a more or less open question. That's why I thought about 
reordering the Jacobian. As long as the position of the individual IDs 
is the same for both, I don't have to care about their absolute position.

I also wanted to thank you for your previous answer, it seems that the 
application ordering might be what I'm looking for. However, in the 
meantime I stumbled about another problem, that I have to solve first. 
My new problem is, that I call the external code within the shell 
matrix' multiply call. But in a parallel case, this call obviously gets 
called once per process. So right now I'm trying to circumvent this, so 
it might take a while before I'm able to come back to the original 
problem...

Kind regards,
Michael

Am 16.10.2017 um 17:25 schrieb Praveen C:
> I am interested to learn more about how this works. How are the 
> vectors created if the ids are not contiguous in a partition ?
>
> Thanks
> praveen
>
> On Mon, Oct 16, 2017 at 2:02 PM, Stefano Zampini 
> <stefano.zampini at gmail.com <mailto:stefano.zampini at gmail.com>> wrote:
>
>
>
>     2017-10-16 10:26 GMT+03:00 Michael Werner <michael.werner at dlr.de
>     <mailto:michael.werner at dlr.de>>:
>
>         Hello,
>
>         I'm having trouble with parallelizing a matrix-free code with
>         PETSc. In this code, I use an external CFD code to provide the
>         matrix-vector product for an iterative solver in PETSc. To
>         increase convergence rate, I'm using an explicitly stored
>         Jacobian matrix to precondition the solver. This works fine
>         for serial runs. However, when I try to use multiple
>         processes, I face the problem that PETSc decomposes the
>         preconditioner matrix, and probably also the shell matrix, in
>         a different way than the external CFD code decomposes the grid.
>
>         The Jacobian matrix is built in a way, that its rows and
>         columns correspond to the global IDs of the individual points
>         in my CFD mesh
>
>         The CFD code decomposes the domain based on the proximity of
>         points to each other, so that the resulting subgrids are
>         coherent. However, since its an unstructured grid, those
>         subgrids are not necessarily made up of points with successive
>         global IDs. This is a problem, since PETSc seems to partition
>         the matrix in  coherent slices.
>
>         I'm not sure what the best approach to this problem might be.
>         Is it maybe possible to exactly tell PETSc, which rows/columns
>         it should assign to the individual processes?
>
>
>     If you are explicitly setting the values in your Jacobians via
>     MatSetValues(), you can create a ISLocalToGlobalMapping
>
>     http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/IS/ISLocalToGlobalMappingCreate.html
>     <http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/IS/ISLocalToGlobalMappingCreate.html>
>
>     that maps the numbering you use for the Jacobians to their
>     counterpart in the CFD ordering, then call
>     MatSetLocalToGlobalMapping and then use MatSetValuesLocal with the
>     same arguments you are calling MatSetValues now.
>
>     Otherwise, you can play with the application ordering
>     http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/AO/index.html
>     <http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/AO/index.html>
>
>
>
>     -- 
>     Stefano
>
>

-- 

____________________________________________________

Deutsches Zentrum für Luft- und Raumfahrt e.V. (DLR)
Institut für Aerodynamik und Strömungstechnik | Bunsenstr. 10 | 37073 Göttingen

Michael Werner
Telefon 0551 709-2627 | Telefax 0551 709-2811 | Michael.Werner at dlr.de
DLR.de









-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20171017/c9437a5b/attachment.html>


More information about the petsc-users mailing list