Hi Stefano,
You're right, i just switched the rows and colomns, and it's working fine. However, i've done this in order to have better performance when i access the rows, with MatGetRow. With this order, i need MatGetColumnVector, which is believe is kind of slow, as stated in the comments of the implementation (but i couldn't find it again, maybe i was looking at an old implementation?). I still don't understand why i can not use the transpose of this matrix, as i give the right parallel decomposition. It should be a bijective operation no ? I think i'll be using the KSPMatSolve of Pierre, so i don't have to redevelop this part.
Thanks a lot,
Yann


Le 9/17/2020 à 6:29 PM, Stefano Zampini a écrit :
Yann

 you want to have the number of columns equal to the number of rhs. Not the number of rows. This is also consistent in terms of logical layouts. Simply create and dump the matrix this way and you can read in parallel splitting yhe rows ( ie the logical size per process of the vectors)

Il Gio 17 Set 2020, 18:09 Pierre Jolivet <[email protected] <mailto:[email protected]>> ha scritto:

    Hello Yann,
    This is probably not fully answering your question, but the proper
    way to solve a system with N RHS is _not_ to use KSPSolve(), but
    instead KSPMatSolve(), cf.
    
https://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/KSP/KSPMatSolve.html.
    If you are tracking master (from the GitLab repository), it’s
    available out of the box. If you are using the release tarballs, it
    will be available in 3.14.0 scheduled to be released in a couple of
    days.
    If you want to know more about the current status of block solvers
    in PETSc, please feel free to have a look at this preprint:
    http://jolivet.perso.enseeiht.fr/article.pdf
    If you are using a specific PC which is not “multi-RHS ready”, see
    the list at the top of page 5, please let me know and I’ll tell you
    how easy to support it.
    Thanks,
    Pierre

Reply via email to