Hui Zhang <mike.hui.zhang at hotmail.com> writes: > On Apr 12, 2013, at 5:22 PM, Jed Brown wrote: > > I can understand this method. A further question: since Ai itself is shared > by many processors, MatSetValues to A should be called by only one of the > processor sharing Ai. Is it right?
If your Ai are already shared, why can't you just start by creating the big block-diagonal system containing all the Ai along the diagonal? Then MatGetSubMatrix() will give you the part if you really need to do something separate with it. >> or you can create a block diagonal parallel >> matrix A_i constructed by joining together all the diagonal blocks. > > Which function can do this? I only found diagonal block Mat with each block > of the same size and dense. Thanks! There is no function to do it in-place, but you can just create the big matrix and loop through the small matrix inserting rows. It's usually better to start with the big matrix.
