Thanks, I wouldn't have expected so much ! I have to say I am too far from the code to get all the details "behind" this (I understand these details may be numerous and tricky - no problem). If I got it well, in a near future, MatRARt could support both sequential and distributed matrices, and, MatPtAP will support only distributed ones, correct ? But, the web pages are still identical and the manual.pdf does not mention these functions. So most (rookies, not so experienced) users may still be lost, right ?
A user can understand there are several methods available for different reasons, but, he needs to know why. I just expected adding a 1-line note in the doc (pdf or html) for MatRARt and/or MatPtAP of this kind "this method is meant to support this stuffs but not that stuffs" and/or "if you look for performance, prefer to use this method, not that one" if relevant (?). Franck ----- Mail original ----- > De: "Jed Brown" <[email protected]> > À: "Hong" <[email protected]> > Cc: "petsc-dev" <[email protected]>, "PETSc users list" > <[email protected]> > Envoyé: Jeudi 22 Juin 2017 05:26:57 > Objet: Re: [petsc-users] [petsc-dev] How to compute RARt with A and R as > distributed (MPI) matrices ? > > Hong <[email protected]> writes: > > > Jed : > > > >> > >> Is it better this way or as a fallback when !A->ops->rart? MatPtAP > >> handles other combinations like MAIJ. > >> > > > > Do you mean > > if ( !A->ops->rart) { > > Mat Rt; > > ierr = MatTranspose(R,MAT_INITIAL_MATRIX,&Rt);CHKERRQ(ierr); > > ierr = MatMatMatMult(R,A,Rt,scall,fill,C);CHKERRQ(ierr); > > ierr = MatDestroy(&Rt);CHKERRQ(ierr); > > } > > This does NOT work for most matrix formats because we do not have fallbacks > > for MatTranspose() and MatMatMult(). > > That's fine; they'll trigger an error and we'll be able to see from the > stack that it can be made to work by either implementing the appropriate > MatRARt or MatTranspose and MatMatMatMult. >
