fails when the diagonal block of C has zero entries on the diagonal which are not present in the sparsity pattern and the row still contains other non-zero entries. If the row is empty, i.e. there are no entries in the sparsity pattern of the row, then the check does not fail. On the other hand, the call that aims to put the diagonal entries first: https://github.com/hypre-space/hypre/blob/0dcae3ec7c069785ea25d25aa0bc0c7aa8b0be8d/src/parcsr_mv/par_csr_triplemat_device.c#L581
works fine in this case -- it just ignores the rows that do not contain a diagonal entry.
This is a special case, however, I think it will be better to not generate an error for this in debug mode. What do you think?
I ran into the following issue while running tests in MFEM with HYPRE built with CUDA and
--enable-debug
: thehypre_assert
inhypre_ParCSRTMatMatKTDevice
, here: https://github.com/hypre-space/hypre/blob/0dcae3ec7c069785ea25d25aa0bc0c7aa8b0be8d/src/parcsr_mv/par_csr_triplemat_device.c#L604fails when the diagonal block of
C
has zero entries on the diagonal which are not present in the sparsity pattern and the row still contains other non-zero entries. If the row is empty, i.e. there are no entries in the sparsity pattern of the row, then the check does not fail. On the other hand, the call that aims to put the diagonal entries first: https://github.com/hypre-space/hypre/blob/0dcae3ec7c069785ea25d25aa0bc0c7aa8b0be8d/src/parcsr_mv/par_csr_triplemat_device.c#L581 works fine in this case -- it just ignores the rows that do not contain a diagonal entry.This is a special case, however, I think it will be better to not generate an error for this in debug mode. What do you think?