[petsc-dev] problem with LSQR and CGNE

Raphaël Couturier raphael.couturier at univ-fcomte.fr
Thu Sep 3 13:53:46 CDT 2015


Oups, you are right, thank you
But the problem remains...

[0]PETSC ERROR: --------------------- Error Message 
--------------------------------------------------------------
[0]PETSC ERROR: No support for this operation for this object type
[0]PETSC ERROR: Only square matrices supported.
[0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html 
for trouble shooting.
[0]PETSC ERROR: Petsc Release Version 3.6.1, Jul, 22, 2015
[0]PETSC ERROR: ./ex15 on a arch-linux2-c-debug named extinction by 
couturie Thu Sep  3 20:50:49 2015
[0]PETSC ERROR: Configure options --download-openmpi --download-hypre 
--download-f2cblaslapack --with-fc=0
[0]PETSC ERROR: #2 MatGetDiagonalBlock_MPIDense() line 78 in 
/home/couturie/work/petsc-3.6.1/src/mat/impls/dense/mpi/mpidense.c
[0]PETSC ERROR: #3 MatGetDiagonalBlock() line 159 in 
/home/couturie/work/petsc-3.6.1/src/mat/interface/matrix.c
[0]PETSC ERROR: #4 PCSetUp_BJacobi() line 126 in 
/home/couturie/work/petsc-3.6.1/src/ksp/pc/impls/bjacobi/bjacobi.c
[0]PETSC ERROR: #5 PCSetUp() line 982 in 
/home/couturie/work/petsc-3.6.1/src/ksp/pc/interface/precon.c
[0]PETSC ERROR: #6 KSPSetUp() line 332 in 
/home/couturie/work/petsc-3.6.1/src/ksp/ksp/interface/itfunc.c
[0]PETSC ERROR: #7 KSPSolve() line 546 in 
/home/couturie/work/petsc-3.6.1/src/ksp/ksp/interface/itfunc.c
[0]PETSC ERROR: [1]PETSC ERROR: #3 MatGetDiagonalBlock() line 159 in 
/home/couturie/work/petsc-3.6.1/src/mat/interface/matrix.c


Raphaël
>    I think you mean to have
>
>         ierr = PCSetType(ksp3,PCNONE);
>
> not
>
>         ierr = PCSetType(ksp,PCNONE);
>
> in the code fragment below. Block diagonal (which is the default) doesn't make sense for rectangular matrices.
>
>
> Yes, PETSc is weak on solvers for nonsquare matrices so users would benefit from more choices. See https://bitbucket.org/petsc/petsc/wiki/pull-request-instructions-git and http://www.mcs.anl.gov/petsc/developers/developers.pdf for information on contributing code.
>
>    Barry
>
>
>> On Sep 3, 2015, at 1:21 PM, Raphaël Couturier <raphael.couturier at univ-fcomte.fr> wrote:
>>
>> Hello all,
>>
>> First of all, thank you Matthew and Barry for your answers in July.
>> Your solution using PCKSP is fine.
>> Now it works perfectly with the examples I have tried for ksp and snes. I made many tests with many processors.
>>
>> I have implemented my own CGLS or LSQR method. In Petsc, I have seen that CGNE and LSQR are already implemented. However, I cannot use them because I have a problem of non square matrix.
>> In previous posts, I saw that the problem can come from the preconditioner.
>> In the attached code, I have my new solver (without preconditioner if I made no mistake) which is based on
>> ierr = PCKSPGetKSP(pc,&sub_ksp);CHKERRQ(ierr);
>>
>> and I need to use another ksp to minimize the residual (instead of my own CGLS). The matrix AS is of size (n,10) with n very large.
>> I have tried with that (line 262 in the code)
>> {
>>         KSP ksp3;
>>         ierr = KSPCreate(PETSC_COMM_WORLD, &ksp3); CHKERRQ(ierr);
>>         ierr = KSPSetType(ksp3, KSPLSQR); CHKERRQ(ierr);
>>         ierr = KSPSetOperators(ksp3, AS, AS); CHKERRQ(ierr);
>>         ierr = KSPSetTolerances(ksp3, PETSC_DEFAULT, PETSC_DEFAULT, PETSC_DEFAULT, iter_max_minimization);
>>         ierr = PCSetType(ksp,PCNONE);
>>         ierr = KSPSolve(ksp3, b, Alpha); CHKERRQ(ierr);
>>       }
>>
>> The problem on all the processors is:
>> [0]PETSC ERROR: No support for this operation for this object type
>> [0]PETSC ERROR: Only square matrices supported.
>> [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for trouble shooting.
>> [0]PETSC ERROR: Petsc Release Version 3.6.1, Jul, 22, 2015
>> [0]PETSC ERROR: ./ex15 on a arch-linux2-c-debug named extinction by couturie Thu Sep  3 13:22:03 2015
>> [0]PETSC ERROR: Configure options --download-openmpi --download-hypre --download-f2cblaslapack --with-fc=0
>> [0]PETSC ERROR: #2 MatGetDiagonalBlock_MPIDense() line 78 in /home/couturie/work/petsc-3.6.1/src/mat/impls/dense/mpi/mpidense.c
>> [0]PETSC ERROR: #3 MatGetDiagonalBlock() line 159 in /home/couturie/work/petsc-3.6.1/src/mat/interface/matrix.c
>> [0]PETSC ERROR: #4 PCSetUp_BJacobi() line 126 in /home/couturie/work/petsc-3.6.1/src/ksp/pc/impls/bjacobi/bjacobi.c
>> [0]PETSC ERROR: #5 PCSetUp() line 982 in /home/couturie/work/petsc-3.6.1/src/ksp/pc/interface/precon.c
>> [0]PETSC ERROR: #6 KSPSetUp() line 332 in /home/couturie/work/petsc-3.6.1/src/ksp/ksp/interface/itfunc.c
>> [0]PETSC ERROR: #7 KSPSolve() line 546 in /home/couturie/work/petsc-3.6.1/src/ksp/ksp/interface/itfunc.c
>> [0]PETSC ERROR: #8 KSPSolve_TSIRM() line 269 in /home/couturie/work/petsc-3.6.1/src/ksp/ksp/impls/gmres/tsirm.c
>> [0]PETSC ERROR: #9 KSPSolve() line 604 in /home/couturie/work/petsc-3.6.1/src/ksp/ksp/interface/itfunc.c
>> [0]PETSC ERROR: #10 main() line 200 in /home/couturie/work/petsc-3.6.1/src/ksp/ksp/examples/tutorials/ex15.c
>>
>> Do you have an idea of the problem?
>> Is it a good idea to use the LSQR or CGLS method of Petsc?
>>
>>
>> Moreover I have another question. Do you think that the Petsc community would be interested to use this solver. If yes, I would be glad to improve it in order to integrate it in the source.
>>
>> Thanks
>>
>> Raphaël
>> <tsirm.c>




More information about the petsc-dev mailing list