[petsc-users] [KSP] solveTranspose fails with Strumpack and SuperLU_dist

Matthew Knepley knepley at gmail.com
Mon Apr 11 13:41:24 CDT 2022


On Mon, Apr 11, 2022 at 2:33 PM Jean Marques <jeanmarques.eng at gmail.com>
wrote:

> Thank you very much for your inputs.
>
> Matthew, this LS is a part of a rSVD algorithm (Halko et al, SIAM Review,
> 2009), hence I need to compute direct and adjoints system solutions.
>

The reason I asked was to understand whether direct solvers were necessary.

  Thanks,

     Matt


> Hong, that is the option I'll be using. I am explicitly setting a
> transpose for now and this works (at a cost, as you said).
>
> Barry, I'll also try this solution here, thanks!
>
> Best,
> Jean
>
> On Sat, Apr 9, 2022 at 6:37 PM Barry Smith <bsmith at petsc.dev> wrote:
>
>>
>>   It would also be very straightforward for you to provide a merge
>> request that adds support for PETSc to directly use SuperLU_DIST and
>> Strumpacks transpose solver capability.   Just add the support to
>> superlu_dist.c (and for strumpack) mimicking the style in mumps.c More
>> specifically add a
>>
>> PetscErrorCode MatSolveTranspose_SuperLU_DIST(Mat A,Vec b,Vec x) function
>> almost identical to MatSolveTranspose_MUMPS() but setting
>>
>>  Mat_SuperLU_DIST      *lu=(Mat_SuperLU_DIST*)A->data;
>> lu->options.trans = TRANS;
>>
>> and register it where the solve is registered later in the file (seach
>> for ops->solve)
>>
>> Detailed instructions on making a PETSc MR can be found at
>> https://petsc.org/release/developers/integration/#getting-your-code-and-documentation-into-petsc
>>
>>
>>
>>
>> On Apr 9, 2022, at 8:57 PM, Zhang, Hong via petsc-users <
>> petsc-users at mcs.anl.gov> wrote:
>>
>> Jean,
>>
>> You can use -ksp_use_explicittranspose to make KSP transpose the system
>> explicitly in the transposed solve. This option was designed to enable more
>> choices of linear solvers and preconditions in adjoint solves, of course,
>> at a cost.
>>
>> Hong (Mr.)
>>
>> On Apr 8, 2022, at 4:52 PM, Jean Marques <jeanmarques.eng at gmail.com>
>> wrote:
>>
>> Hi all,
>>
>> This may be a naive question, and I hope this is the right place to ask
>> about it.
>> I need to solve a direct linear system with a sparse matrix R, then an
>> adjoint system the hermitian of R.
>>
>> I use a petsc4py, so what I do is this:
>> self.R.setUp()
>> to set up the PETSc KSP variable R, then I do:
>> self.R.solve(f, q)
>> and later:
>> self.R.solveTranspose(f, q)
>>
>> However, 'solveTranspose()' only works when I use MUMPS. If I try
>> STRUMPACK or SUPERLU_DIST it fails, it seems that 'solveTranpose()' is not
>> defined for them? or is there a specific way to call them with these
>> libraries?
>> Maybe the approach would be to define another 'self.R' variable but then
>> set it as a transpose().conjugate() before setUp()?
>> I was trying STRUMPACK because it has a low-memory approach and that's my
>> main bottleneck.
>>
>> I appreciate any help you can provide.
>>
>> Best,
>> Jean
>>
>> --
>> *Jean Helder Marques Ribeiro*
>> Ph.D. Candidate
>> University of California, Los Angeles
>> 420 Westwood Plaza, Los Angeles, CA 90095
>> phone: (310) 689-6593
>>
>>
>>
>>
>
> --
> *Jean Helder Marques Ribeiro*
> Ph.D. Candidate
> University of California, Los Angeles
> 420 Westwood Plaza, Los Angeles, CA 90095
> phone: (310) 689-6593
>


-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener

https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20220411/e8dc9e7f/attachment.html>


More information about the petsc-users mailing list