[petsc-users] Copy MPIAIJ Matrix onto MPISeq Matrices on All Processors
Ali Berk Kahraman
aliberkkahraman at yahoo.com
Tue Mar 20 08:31:31 CDT 2018
Thank your for the reply.
I have tried it, but could not get it to work. For it to work, I have to
know at which vector entry the epsilon in the FD approximation is to be
added. It is an input for my inexpensive function, and I could not find
a way to pass it in using MFFD context.
I have been trying to get it working with PETSC_COMM_WORLD too with no
luck. My guess is that my FormRHSFunction becomes a collective function
on WORLD, so I cannot generate many separate copies each doing its own
thing. For this reason I am trying to move it to SELF, but I cannot do
that if I cannot find a way to represent my WORLD matrix input fully on
each process.
Sorry I am stuck in the same question, but any ideas on how to move a
matrix from WORLD to SELF, similar to the way it is possible with
vectors using VecScatter?
On 19-03-2018 21:08, Smith, Barry F. wrote:
>
>> On Mar 19, 2018, at 12:00 PM, Ali Berk Kahraman <aliberkkahraman at yahoo.com> wrote:
>>
>> Dear All,
>>
>> I have to create my Jacobian numerically using an FD function I have written, but the problem is that the function evaluation FormRHSFunction creates PETSC_COMM_WORLD objects in it, and takes 1 PETSC_COMM_WORLD matrix as an input. So I cannot work it on parallel (every processor calculating its own portion of Jacobian), I tried but the machine gets confused.
> Huh. It is fine to have the function work on PETSC_COMM_WORLD, and it can be in parallel.
>> My initial idea was to create the objects in PETSC_COMM_SELF type within the RHS function, but the input COMM_WORLD matrix standed where it was. So my question is, is there a way to get a complete copy of a distributed matrix on all the processors as seq matrices?
>>
>> I cannot use the Petsc's version FD function because the FormRHSFunction I call to create the Jacobian is slightly different than the original FormRHSFunction. The original function is too expensive, so I only calculate the relevant parts of it in the Jacobian function.
> You can do this with MatCreateMFFD() and set your inexpensive function as the function.
>
>> Best Regards,
>>
>> Ali Berk Kahraman
>> M.Sc. Student, Mechanical Engineering
>> Bogazici Uni. Istanbul, Turkey
>>
More information about the petsc-users
mailing list