[petsc-users] matrix-free KSPLSQR and matrix norm

Matthew Knepley knepley at gmail.com
Mon Jun 27 10:12:49 CDT 2011


On Mon, Jun 27, 2011 at 9:54 AM, Alexander Grayver
<agrayver at gfz-potsdam.de>wrote:

> **
> >> Please send the entire error message (this is missing the stack), but I
> am guessing you
> >> are not changed the default preconditioner (ILU) which cannot act on a
> shell matrix. Use
> >> -ksp_view to see what solver is begin used.
>
> The full error message:
>
> test.exe -log_summary -ksp_view
>

The LSQR solver uses the Frobenius norm of the matrix. In order to use a
MATSHELL, you
must implement MatNorm using


http://www.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-dev/docs/manualpages/Mat/MatShellSetOperation.html

  Thanks,

    Matt


>
> [0]PETSC ERROR: --------------------- Error Message
> ------------------------------------
> [0]PETSC ERROR: No support for this operation for this object type!
> [0]PETSC ERROR: Mat type shell!
> [0]PETSC ERROR:
> ------------------------------------------------------------------------
> [0]PETSC ERROR: Petsc Release Version 3.1.0, Patch 7, Mon Dec 20 14:26:37
> CST 2010
> [0]PETSC ERROR: See docs/changes/index.html for recent updates.
> [0]PETSC ERROR: See docs/faq.html for hints about trouble shooting.
> [0]PETSC ERROR: See docs/index.html for manual pages.
> [0]PETSC ERROR:
> ------------------------------------------------------------------------
> [0]PETSC ERROR: test.exe on a cygwin-cx named M0. by Unknown Mon Jun 27
> 16:51:32 2011
> [0]PETSC ERROR: Libraries linked from
> /cygdrive/d/dev/petsc-3.1-p7/cygwin-cxx-debug/lib
>
> [0]PETSC ERROR: Configure run at Fri Mar  4 10:10:06 2011
> [0]PETSC ERROR: Configure options --with-cc="win32fe cl" --with-fc="win32fe
> ifort" --with-cxx="win32fe cl" --with-windows-graphics=0
> --with-precision=double --with-scalar-type=complex --with-clanguage=cxx
> --with-mpi-include=/cygdrive/d/Dev/HPC_2008_SDK/Include --wi
> /HPC_2008_SDK/Lib/amd64/msmpi.lib,/cygdrive/d/Dev/HPC_2008_SDK/Lib/amd64/msmpifec.lib]"
> --useThreads=0 --useThreads=0
>
> [0]PETSC ERROR:
> ------------------------------------------------------------------------
> [0]PETSC ERROR: MatNorm() line 4512 in
> src/mat/interface/D:\dev\PETSC-~3.1-P\src\mat\INTERF~1\matrix.c
> [0]PETSC ERROR: KSPSolve_LSQR() line 90 in
> src/ksp/ksp/impls/lsqr/D:\dev\PETSC-~3.1-P\src\ksp\ksp\impls\lsqr\lsqr.c
> [0]PETSC ERROR: KSPSolve() line 396 in
> src/ksp/ksp/interface/D:\dev\PETSC-~3.1-P\src\ksp\ksp\INTERF~1\itfunc.c
>
> job aborted:
> [ranks] message
>
> [0] application aborted
> aborting MPI_COMM_WORLD, error 56, comm rank 0
>
>
> On 27.06.2011 16:47, Matthew Knepley wrote:
>
> On Mon, Jun 27, 2011 at 9:34 AM, Alexander Grayver <
> agrayver at gfz-potsdam.de> wrote:
>
>> Thanks Barry,
>>
>> Now I get this:
>
>
>  Please send the entire error message (this is missing the stack), but I
> am guessing you
> are not changed the default preconditioner (ILU) which cannot act on a
> shell matrix. Use
> -ksp_view to see what solver is begin used.
>
>     Matt
>
>
>>  [0]PETSC ERROR: --------------------- Error Message
>> ----------------------------
>> --------
>>  [0]PETSC ERROR: No support for this operation for this object type!
>> [0]PETSC ERROR: Mat type shell!
>>
>> [0]PETSC ERROR:
>> ----------------------------------------------------------------
>> --------
>> [0]PETSC ERROR: Petsc Release Version 3.1.0, Patch 7, Mon Dec 20 14:26:37
>> CST 20
>> 10
>> [0]PETSC ERROR: See docs/changes/index.html for recent updates.
>> [0]PETSC ERROR: See docs/faq.html for hints about trouble shooting.
>> [0]PETSC ERROR: See docs/index.html for manual pages.
>> [0]PETSC ERROR:
>> ----------------------------------------------------------------
>> --------
>>  [0]PETSC ERROR: test.exe on a cygwin
>> -cx named MT0. by Unknown Mon Jun 27 16:30:42 2011
>>
>> [0]PETSC ERROR: Libraries linked from
>> /cygdrive/d/dev/petsc-3.1-p7/cygwin-cxx-de
>> bug/lib
>> [0]PETSC ERROR: Configure run at Fri Mar  4 10:10:06 2011
>> [0]PETSC ERROR: Configure options --with-cc="win32fe cl"
>> --with-fc="win32fe ifor
>> t" --with-cxx="win32fe cl" --with-windows-graphics=0
>> --download-f-blas-lapack=1
>> --with-precision=double --with-scalar-type=complex --with-clanguage=cxx
>> --with-m
>> pi-include=/cygdrive/d/Dev/HPC_2008_SDK/Include
>> --with-mpi-lib="[/cygdrive/d/Dev
>>
>> /HPC_2008_SDK/Lib/amd64/msmpi.lib,/cygdrive/d/Dev/HPC_2008_SDK/Lib/amd64/msmpife
>> c.lib]" --useThreads=0 --useThreads=0
>> [0]PETSC ERROR:
>> ----------------------------------------------------------------
>> --------
>>  [0]PETSC ERROR: MatNorm() line 4512 in
>> src/mat/interface/D:\dev\PETSC-3.1-P\src\mat\INTERF~1\matrix.c
>>
>>
>> On 27.06.2011 16:32, Barry Smith wrote:
>>
>>>    You should pass H as third argument to KSPSetOperators() as well as
>>> the second.
>>>
>>>   Barry
>>>
>>> On Jun 27, 2011, at 9:23 AM, Alexander Grayver wrote:
>>>
>>>    Hello!
>>>>
>>>> I'm using matrix-free formulation and KSPLSQR to solve normal equations
>>>> system:
>>>>
>>>> (A'*A)b = -g
>>>>
>>>> I managed to write all necessary code:
>>>>
>>>>  call MatCreateShell(MPI_COMM_WORLD,m,N,N,N,PETSC_NULL_INTEGER,H,ierr)
>>>>  call MatShellSetOperation(H,MATOP_MULT,MFMatMult,ierr)
>>>>
>>>>  call KSPCreate(MPI_COMM_WORLD,ksp,ierr);CHKERRQ(ierr)
>>>>  call KSPSetType(ksp,KSPLSQR,ierr);CHKERRQ(ierr)
>>>>  call KSPGetPC(ksp,pc,ierr);CHKERRQ(ierr)
>>>>  call PCSetType(pc,PCNONE,ierr);CHKERRQ(ierr)
>>>>  call
>>>> KSPSetOperators(ksp,H,PETSC_NULL_OBJECT,SAME_PRECONDITIONER,ierr);CHKERRQ(ierr)
>>>>  call KSPSolve(ksp,g,b,ierr);CHKERRQ(ierr)
>>>>
>>>>
>>>> but fail in KSPSolve stage with that:
>>>> [0]PETSC ERROR: --------------------- Error Message
>>>> ----------------------------
>>>> --------
>>>> [0]PETSC ERROR: Object is in wrong state!
>>>> [0]PETSC ERROR: Mat object's type is not set: Argument # 1!
>>>> [0]PETSC ERROR:
>>>> ----------------------------------------------------------------
>>>> --------
>>>> [0]PETSC ERROR: Petsc Release Version 3.1.0, Patch 7, Mon Dec 20
>>>> 14:26:37 CST 20
>>>> 10
>>>> [0]PETSC ERROR: See docs/changes/index.html for recent updates.
>>>> [0]PETSC ERROR: See docs/faq.html for hints about trouble shooting.
>>>> [0]PETSC ERROR: See docs/index.html for manual pages.
>>>> [0]PETSC ERROR:
>>>> ----------------------------------------------------------------
>>>> --------
>>>>  [0]PETSC ERROR: test.exe on a cygwin
>>>>
>>>> -cx named MT0. by Unknown Mon Jun 27 16:18:43 2011
>>>> [0]PETSC ERROR: Libraries linked from
>>>> /cygdrive/d/dev/petsc-3.1-p7/cygwin-cxx-de
>>>> bug/lib
>>>> [0]PETSC ERROR: Configure run at Fri Mar  4 10:10:06 2011
>>>> [0]PETSC ERROR: Configure options --with-cc="win32fe cl"
>>>> --with-fc="win32fe ifor
>>>> t" --with-cxx="win32fe cl" --with-windows-graphics=0
>>>> --download-f-blas-lapack=1
>>>> --with-precision=double --with-scalar-type=complex --with-clanguage=cxx
>>>> --with-m
>>>> pi-include=/cygdrive/d/Dev/HPC_2008_SDK/Include
>>>> --with-mpi-lib="[/cygdrive/d/Dev
>>>>
>>>> /HPC_2008_SDK/Lib/amd64/msmpi.lib,/cygdrive/d/Dev/HPC_2008_SDK/Lib/amd64/msmpife
>>>> c.lib]" --useThreads=0 --useThreads=0
>>>> [0]PETSC ERROR:
>>>> ----------------------------------------------------------------
>>>> --------
>>>> [0]PETSC ERROR: MatNorm() line 4507 in
>>>> src/mat/interface/D:\dev\PETSC-3.1-P\src\mat\INTERF~1\matrix.c
>>>> [0]PETSC ERROR: KSPSolve_LSQR() line 90 in
>>>> src/ksp/ksp/impls/lsqr/D:\dev\PETSC-3.1-P\src\ksp\ksp\impls\lsqr\lsqr.c
>>>>
>>>> Any suggestions? Do I have to set MATOP_NORM operation? Then how?
>>>>
>>>> Regards,
>>>> Alexander
>>>>
>>>
>>
>
>
> --
> 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
>
>
>


-- 
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20110627/3b5152e0/attachment-0001.htm>


More information about the petsc-users mailing list