> On Jun 22, 2016, at 1:24 AM, Lisandro Dalcin <[email protected]> wrote: > > On 22 June 2016 at 00:30, Barry Smith <[email protected]> wrote: >> Why not just remove the first if test (below) and just have the two >> conditions diag != 0.0 and drag == 0.0 >> >> if ((diag != 0.0) && (mat->A->rmap->N == mat->A->cmap->N)) { >> ierr = MatZeroRows(mat->A, len, lrows, diag, NULL, >> NULL);CHKERRQ(ierr); > > What about comparing mat->rmap->N and mat->cmap->N, then compare > size(mat->rmap->comm) and size(mat->cmap->comm), and finally compare > (memcmp) mat->rmap-range and mat->rmap-range? If everything matches, > the row&col layout is square, you know that in all processes so no > need to do reductions, and then you can take the fast path zeroing > rows on the diagonal block mat->A.
By then it is worth the optimization? > > > -- > Lisandro Dalcin > ============ > Research Scientist > Computer, Electrical and Mathematical Sciences & Engineering (CEMSE) > Extreme Computing Research Center (ECRC) > King Abdullah University of Science and Technology (KAUST) > http://ecrc.kaust.edu.sa/ > > 4700 King Abdullah University of Science and Technology > al-Khawarizmi Bldg (Bldg 1), Office # 0109 > Thuwal 23955-6900, Kingdom of Saudi Arabia > http://www.kaust.edu.sa > > Office Phone: +966 12 808-0459
