[petsc-users] Preprocessing Matrix Market matrices and right hand sides

Jed Brown jed at jedbrown.org
Sat May 26 18:02:16 CDT 2018


Can you reproduce using src/ksp/ksp/examples/tutorials/ex10.c?

Najeeb Ahmad <nahmad16 at ku.edu.tr> writes:

> Hi,
>
> I am trying to load a matrix and a right hand side into Petsc from a file.
> The matrix and rhs are preprocessed from matrix market format using the
> following python script:
>
> import scipy.io, PetscBinaryIO
>
> A = scipy.io.mmread('sherman2.mtx')
> PetscBinaryIO.PetscBinaryIO().writeMatSciPy(open('sherman2','w'), A)
>
> B = scipy.io.mmread('sherman2_rhs1.mtx')
> PetscBinaryIO.PetscBinaryIO().writeVec(open('sherman2_rhs','w'), B)
>
> The binary matrix sherman2 and rhs sherman2_rhs are then being loaded into
> Petsc using the following code:
>
>  PetscErrorCode    ierr;
>   PetscViewer         fd;                     /* viewer */
>   Mat                  A;           /* linear system matrix */
>   Vec                  b;           /* RHS */
>   char              file[2][PETSC_MAX_PATH_LEN];
>   PetscBool         flg, PetscPreLoad = PETSC_FALSE;
>   PetscDraw           dc;
>   PetscInt            size;
>   PetscReal           value;
>
>   PetscInitialize(&argc,&args,(char*)0,help);if (ierr) return ierr;
>   //PetscPrintf(MPI_COMM
>   ierr =
> PetscOptionsGetString(PETSC_NULL,PETSC_NULL,"-f",file[0],PETSC_MAX_PATH_LEN,&flg);CHKERRQ(ierr);
>   if (!flg) SETERRQ(PETSC_COMM_WORLD,1,"Must indicate binary file with the
> -f option");
>   // Load Matrix A
>   ierr =
> PetscViewerBinaryOpen(PETSC_COMM_WORLD,file[0],FILE_MODE_READ,&fd);CHKERRQ(ierr);
>
>   ierr = MatCreate(PETSC_COMM_WORLD,&A);CHKERRQ(ierr);
>   ierr = MatSetFromOptions(A);CHKERRQ(ierr);
>   ierr = MatLoad(A,fd);CHKERRQ(ierr);
>   ierr = MatView(A, PETSC_VIEWER_STDOUT_WORLD);
>
>
>   // Load RHS
>   flg  = PETSC_FALSE;
>   ierr =
> PetscOptionsGetString(PETSC_NULL,PETSC_NULL,"-rhs",file[1],PETSC_MAX_PATH_LEN,&flg);CHKERRQ(ierr);
>   if (!flg) SETERRQ(PETSC_COMM_WORLD,1,"Must indicate rhs file with the
> -rhs option");
>
>   ierr = VecCreate(PETSC_COMM_WORLD, &b);CHKERRQ(ierr);
>   ierr = PetscViewerDestroy(&fd);CHKERRQ(ierr);
>   ierr =
> PetscViewerBinaryOpen(PETSC_COMM_WORLD,file[1],FILE_MODE_READ,&fd);CHKERRQ(ierr);
>   ierr = VecSetFromOptions(b);CHKERRQ(ierr);
>
>   ierr = VecLoad(b,fd);CHKERRQ(ierr);
>
>
> While the matrix loads correctly, when I try to load the vector b, the
> behavior of the program becomes unexpected afterwards. For instance, if I
> try to view the vector, sometimes it prints and sometimes not and even when
> it prints, it only shows some entries in process 0 and then stops.
>
> AM I DOING SOMETHING WRONG IN PREPROCESSING? Or am I missing something?
>
> Thank you
>
>
>
> -- 
> *Najeeb Ahmad*
>
>
> *Research and Teaching Assistant*
> *PARallel and MultiCORE Computing Laboratory (ParCoreLab) *
>
> *Computer Science and Engineering*
> *Koç University, Istanbul, Turkey*


More information about the petsc-users mailing list