If the matrices are stored as dense it is likely new code is the best way to 
go. 

  What pieces live on the sub communicator? Is it an m by N matrix where m is 
the number of rows (on that rank) and N is the total number of columns in the 
final matrix? Or are they smaller "chunks" that need to be combined together?

  Barry


> On Oct 25, 2023, at 3:38 PM, Damyn Chipman <[email protected]> 
> wrote:
> 
> Great thanks, that seemed to work well. This is something my algorithm will 
> do fairly often (“elevating” a node’s communicator to a communicator that 
> includes siblings). The matrices formed are dense but low rank. With 
> MatCreateSubMatrix, it appears I do a lot of copying from one Mat to another. 
> Is there a way to do it with array copying or pointer movement instead of 
> copying entries?
> 
> -Damyn
> 
>> On Oct 24, 2023, at 9:51 PM, Jed Brown <[email protected]> wrote:
>> 
>> You can place it in a parallel Mat (that has rows or columns on only one 
>> rank or a subset of ranks) and then MatCreateSubMatrix with all new 
>> rows/columns on a different rank or subset of ranks.
>> 
>> That said, you usually have a function that assembles the matrix and you can 
>> just call that on the new communicator.
>> 
>> Damyn Chipman <[email protected]> writes:
>> 
>>> Hi PETSc developers,
>>> 
>>> In short, my question is this: Does PETSc provide a way to move or copy an 
>>> object (say a Mat) from one communicator to another?
>>> 
>>> The more detailed scenario is this: I’m working on a linear algebra solver 
>>> on quadtree meshes (i.e., p4est). I use communicator subsets in order to 
>>> facilitate communication between siblings or nearby neighbors. When 
>>> performing linear algebra across siblings (a group of 4), I need to copy a 
>>> node’s data (i.e., a Mat object) from a sibling’s communicator to the 
>>> communicator that includes the four siblings. From what I can tell, I can 
>>> only copy a PETSc object onto the same communicator.
>>> 
>>> My current approach will be to copy the raw data from the Mat on one 
>>> communicator to a new Mat on the new communicator, but I wanted to see if 
>>> there is a more “elegant” approach within PETSc.
>>> 
>>> Thanks in advance,
>>> 
>>> Damyn Chipman
>>> Boise State University
>>> PhD Candidate
>>> Computational Sciences and Engineering
>>> [email protected]
> 

Reply via email to