[petsc-dev] Bug in MatZeroRows_MPIAIJ

Barry Smith bsmith at mcs.anl.gov
Thu Jun 23 12:23:19 CDT 2016


   More concerned about the complexity of the code. Say someone stumbles on this code in 8 years and starts monkeying with it without fully understanding it. Why not just have the simpler code without this special case, would it be that much slower?

   Barry

> On Jun 23, 2016, at 7:46 AM, Stefano Zampini <stefano.zampini at gmail.com> wrote:
> 
> If you are worried about doing memcmp on the ranges, it should be in the order of microseconds. few milliseconds with millions of processes.
> On Lisandro workstation, it took 600 microseconds comparing two equal sets of  a million of integers.
> Since the square case with same row and col layout covers the 90% of the cases (and memcmp need to sweep the entire ranges),
> we can always have an int flag for MPIAIJ and its variants which is set to -1 at creation  and set  up properly the first time MatZeroRow_MPIAIJ is called.
> 
> On Jun 22, 2016, at 8:08 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
> 
>> 
>>> On Jun 22, 2016, at 1:24 AM, Lisandro Dalcin <dalcinl at gmail.com> wrote:
>>> 
>>> On 22 June 2016 at 00:30, Barry Smith <bsmith at mcs.anl.gov> 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
>> 
> 




More information about the petsc-dev mailing list