[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Invalid argument! - not a permutation!




Is this because the default LU factorisation routine isn't parallel...

Yes

I just
assumed parallel superlu would be picked up automatically (it is compiled into
my PETSc build) ?

No, in the current model you have to set the matrix type to MATSUPERLU_DIST to get it. Or MATAIJMUMPS for mumps etc.

Hong has suggested an alternative (better?) model, but .....

Petsc only provides sequential LU factorisation. To run parallel LU, you must use one of the external packages, SUPERLU_DIS, MUMPS or spooles. Simply install petsc with these packages, then run your petsc code with the option '-mat_type superlu_dist' '-mat_type aijmumps' or '-mat_type aijspooles' or set the matrix type 'MATSUPERLU_DIST' in your code.

Note: all these packages support sequential implementation.
MUMPS sequential LU solver usually is the fastest. As matrix size increases, SUPERLU might catch up.


Let us know if you have trouble using them,

Hong

Barry


Tim.

Barry Smith wrote:
  I have added this information to the error message that gets printed.

   Barry


On Thu, 25 Oct 2007, Matthew Knepley wrote:


I think you need to tell use that the IS is a permutation:

http://www-unix.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manualpages/IS/ISSetPermutation.html

   Matt

On 10/25/07, Tim Stitt <timothy.stitt@xxxxxxxx> wrote:

Hi all,

Following on from some help I got a few days ago with respect to
MatLUFactorSymbolic() usage in Fortran...I think I now have all the
parts in place but keep getting the following runtime error upon
execution:

[0]PETSC ERROR: --------------------- Error Message
------------------------------------
[0]PETSC ERROR: Invalid argument!
[0]PETSC ERROR: not a permutation!
...
[0]PETSC ERROR:
------------------------------------------------------------------------
[0]PETSC ERROR: ISInvertPermutation() line 183 in
src/vec/is/interface/index.c
[0]PETSC ERROR: MatLUFactorSymbolic_SeqAIJ() line 276 in
src/mat/impls/aij/seq/aijfact.c
[0]PETSC ERROR: MatLUFactorSymbolic() line 2178 in
src/mat/interface/matrix.c
[localhost.localdomain:24730] MPI_ABORT invoked on rank 0 in
communicator MPI_COMM_WORLD with errorcode 62

Here is the portion of  the offending code (I think):

  call MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY,error);CHKERRQ(error)
  call MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY,error);CHKERRQ(error)
  call ISCreateGeneral(PETSC_COMM_WORLD,order,columnIndices,
indexSet,error);CHKERRQ(error)
  call MatFactorInfoInitialize(info,error);CHKERRQ(error)
  call
MatLUFactorSymbolic(A,indexSet,indexSet,info,factorMat,error);CHKERRQ(error)

order - number of rows/columns in square matrix A
columnIndices - 1D array containing values 0-->order-1

All types are set correctly as far as I can tell.

Can anyone suggest why the execution falls over during the
MatLUFactorSymbolic() call?

Thanks again,

Tim.

--
Dr. Timothy Stitt <timothy_dot_stitt_at_ichec.ie>
HPC Application Consultant - ICHEC (www.ichec.ie)

Dublin Institute for Advanced Studies
5 Merrion Square - Dublin 2 - Ireland

+353-1-6621333 (tel) / +353-1-6621477 (fax)