[petsc-dev] MatMPIAIJGetLocalMat problem with GPUs

Mark Adams mfadams at lbl.gov
Thu Jun 23 13:23:49 CDT 2022


We have a bug in the AMGx test snes_tests-ex13_amgx in parallel.
Matt Martineau found that MatMPIAIJGetLocalMat worked in the first pass in
the code below, where the local matrix is created (INITIAL), but in the
next pass, when "REUSE" is used, he sees an invalid pointer.
Matt found that it does have offloadmask == CPU.
Maybe it is missing logic to put the output in same state as the input?

Any ideas on this or should I just dig into it?

Thanks,

bool partial_setup_allowed = (pc->setupcalled && pc->flag !=
DIFFERENT_NONZERO_PATTERN);
199   if (amgx->nranks > 1) {
200     if (partial_setup_allowed) {
202       PetscCall(MatMPIAIJGetLocalMat(Pmat, MAT_REUSE_MATRIX,
&amgx->localA)); // This path seems doesn't work by the time we reach
AmgX API
203     } else {
205       PetscCall(MatMPIAIJGetLocalMat(Pmat, MAT_INITIAL_MATRIX,
&amgx->localA)); // This path works
206     }
207   } else {
208     amgx->localA = Pmat;
209   }
210
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20220623/c14bbd7f/attachment.html>


More information about the petsc-dev mailing list