[petsc-users] Binary input-output for parallel dense matrices (petsc4py)

Barry Smith bsmith at mcs.anl.gov
Thu Jun 30 12:12:51 CDT 2016


  Ahh. When you use the "native" format with dense matrices you can only read the matrix back in later with a dense matrix. You need to set the A_new matrix type to dense before calling the load.

  We need more error checking in the PETSc MatLoad() for non-dense matrix formats that properly stops the code with an error message that the file format is not handled by the matrix type. I will do this.

   Barry



> On Jun 30, 2016, at 11:30 AM, Analabha Roy <hariseldon99 at gmail.com> wrote:
> 
> Hi all,
> 
>  I'm trying to do basic binary input/output for parallel matrices. Following the example in "petsc4py/demo/binary-io/matvecio.py ", the code below seems to work fine (raw python file attached) with "mpirun -np 2 python ./test_binwrite.py" until I uncomment "#A.setType(PETSc.Mat.Type.DENSE)" in order to do it for parallel dense matrices. Then it crashes with error (stderr file attached, see below for highlighted message).  What am I doing wrong?
> 
> Python Code
> ========================================================================================
> 
> #!/usr/bin/env python
> """
> Created on Wed Jun 29 22:05:59 2016
> 
> @author: daneel at utexas.edu
> """
> 
> 
> 
> import numpy as
>  np
> 
> from petsc4py import
>  PETSc
> 
> Print = PETSc.Sys.Print
> 
> 
> matsize 
> = 100
> 
> filename 
> = 'tmpMatrix-A.dat'
> 
> 
> A 
> = PETSc.Mat().create(PETSc.COMM_WORLD)
> 
> A
> .setSizes([matsize, matsize])
> #A.setType(PETSc.Mat.Type.DENSE)
> 
> A
> .setUp()
> 
> 
> Istart
> , Iend = A.getOwnershipRange()
> for I in xrange(Istart, Iend) :
> 
>     A
> [I,:] = np.random.random(matsize)
> 
> 
> A
> .assemble()
> Print("Random matrix assembled. Now writing to temporary file ...")
> # save
> 
> viewer 
> = PETSc.Viewer().createBinary(filename, 'w')
> 
> viewer
> .pushFormat(viewer.Format.NATIVE)
> 
> viewer
> .view(A)
> Print("Written to ", filename)
> # reload
> Print("Now reloading from ", filename)
> 
> viewer_new 
> = PETSc.Viewer().createBinary(filename, 'r')
>     
> viewer_new
> .pushFormat(viewer.getFormat())
> 
> A_new 
> = PETSc.Mat().load(viewer_new)
> assert A_new.equal(A), "Reload unsuccessful"
> Print("Reload successful")
> ========================================================================================
> 
> 
> 
> stderr output for parallel dense matrices:
> ========================================================================================
> Random matrix assembled. Now writing to temporary file ...
> 
> Written to  tmpMatrix-A
> .
> dat
> Now reloading from  tmpMatrix-A
> .
> dat
> Traceback 
> (most recent call last):
> 
>   File 
> "./test_binwrite.py", line 36, in <module>
> 
> Traceback 
> (most recent call last):
> 
>     A_new 
> = PETSc.Mat().load(viewer_new)
> 
>   File 
> "./test_binwrite.py", line 36, in <module>
> 
>       File 
> "PETSc/Mat.pyx", line 642, in petsc4py.PETSc.Mat.load (src/petsc4py.PETSc.c:118243)
> 
> A_new 
> = PETSc.Mat().load(viewer_new)
> 
>   File 
> "PETSc/Mat.pyx", line 642, in petsc4py.PETSc.Mat.load (src/petsc4py.PETSc.c:118243)
> 
> petsc4py
> .PETSc.Errorpetsc4py.PETSc.Error: : error code 55
> [0] MatLoad() line 1013 in /home/daneel/.local/src/petsc-3.7.2/src/mat/interface/matrix.c
> [0] MatLoad_MPIAIJ() line 2947 in /home/daneel/.local/src/petsc-3.7.2/src/mat/impls/aij/mpi/mpiaij.c
> [0] MatLoad_MPIAIJ() line 2947 in /home/daneel/.local/src/petsc-3.7.2/src/mat/impls/aij/mpi/mpiaij.c
> [0] Out of memory. Allocated: 0, Used by process: 23687168
> [0] Memory requested 5942180016
> 
> error code 
> 55
> [1] MatLoad() line 1013 in /home/daneel/.local/src/petsc-3.7.2/src/mat/interface/matrix.c
> [1] MatLoad_MPIAIJ() line 2967 in /home/daneel/.local/src/petsc-3.7.2/src/mat/impls/aij/mpi/mpiaij.c
> [1] MatLoad_MPIAIJ() line 2967 in /home/daneel/.local/src/petsc-3.7.2/src/mat/impls/aij/mpi/mpiaij.c
> [1] Out of memory. Allocated: 0, Used by process: 23506944
> [1] Memory requested 18446744072415633408
> 
> --------------------------------------------------------------------------
> mpirun noticed that the job aborted, but has no info as to the process
> that caused that situation
> .
> 
> --------------------------------------------------------------------------
> 
> ========================================================================================
> 
> 
> 
> 
> 
> 
> 
> -- 
> ---
> Analabha Roy
> Postdoctoral Fellow
> National Institute of Theoretical Physics (NiTheP)
> Private Bag X1, Matieland,
> Stellenbosch, South Africa,7602
> Emails: daneel at utexas.edu, daneel at sun.ac.za, hariseldon99 at gmail.com
> Webpage: http://www.ph.utexas.edu/~daneel/
> <stderr.txt><test_binwrite.py>



More information about the petsc-users mailing list