Hello Franck, From the documentation: "You must call MatSetLocalToGlobalMapping() before using this matrix type.” (http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MATIS.html <http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MATIS.html>) You are missing this call when your Mat is of type MATIS, thus the runtime error.
Thanks, Pierre > On 11 Dec 2017, at 5:42 PM, Franck Houssen <[email protected]> wrote: > > Seems there is a problem with the attachment. Here is the file : > > >> more matExport.cpp > #include <petscmat.h> > #include <petscsys.h> > > int main(int argc, char *argv[]) > { > PetscInitialize(&argc, &argv, "", NULL); > > Mat matrix; > MatCreate(PETSC_COMM_WORLD, &matrix); > const char* matType = (argc >= 2) ? argv[1] : MATMPIAIJ; > PetscPrintf(PETSC_COMM_WORLD, "mat type is %s \n", matType); > MatSetType(matrix, matType); > MatSetSizes(matrix, PETSC_DECIDE, PETSC_DECIDE, 10, 10); > MatSetUp(matrix); > for (int i = 0; i < 10; i++) MatSetValue(matrix, i, i, (double)(i+1.), > ADD_VALUES); > MatAssemblyBegin(matrix, MAT_FINAL_ASSEMBLY); > MatAssemblyEnd(matrix, MAT_FINAL_ASSEMBLY); > > PetscViewer viewer; > PetscViewerBinaryOpen(PETSC_COMM_WORLD, "matExport.bin", FILE_MODE_WRITE, > &viewer); > MatView(matrix, viewer); > PetscViewerDestroy(&viewer); > > PetscViewerASCIIOpen(PETSC_COMM_WORLD, "matExport.log", &viewer); > MatView(matrix, viewer); > PetscViewerDestroy(&viewer); > > PetscViewerASCIIOpen(PETSC_COMM_WORLD, "matExport.mat", &viewer); > PetscViewerPushFormat(viewer, PETSC_VIEWER_ASCII_MATLAB); > MatView(matrix, viewer); > PetscViewerDestroy(&viewer); > > MatDestroy(&matrix); > PetscFinalize(); > } > > > > De: "Franck Houssen" <[email protected]> > À: [email protected] > Envoyé: Lundi 11 Décembre 2017 17:39:40 > Objet: [petsc-dev] MatIS export > > Reporting a small bug related to MatIS export (or is this not meant to be > supported ?). > > Franck > > >> rm -f matExport.log matExport.mat matExport.bin; mpirun -n 2 > >> ./matExport.exe is; more matExport.log matExport.mat matExport.bin > mat type is is > [0]PETSC ERROR: > ------------------------------------------------------------------------ > [0]PETSC ERROR: Caught signal number 11 SEGV: Segmentation Violation, > probably memory access out of range > [0]PETSC ERROR: Try option -start_in_debugger or -on_error_attach_debugger > [0]PETSC ERROR: or see > http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind > [0]PETSC ERROR: or try http://valgrind.org on GNU/linux and Apple Mac OS X to > find memory corruption errors > [0]PETSC ERROR: configure using --with-debugging=yes, recompile, link, and > run > [0]PETSC ERROR: to get more information on the crash. > [1]PETSC ERROR: > ------------------------------------------------------------------------ > [1]PETSC ERROR: Caught signal number 11 SEGV: Segmentation Violation, > probably memory access out of range > [1]PETSC ERROR: Try option -start_in_debugger or -on_error_attach_debugger > [1]PETSC ERROR: or see > http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind > [1]PETSC ERROR: or try http://valgrind.org on GNU/linux and Apple Mac OS X to > find memory corruption errors > [1]PETSC ERROR: configure using --with-debugging=yes, recompile, link, and > run > [1]PETSC ERROR: to get more information on the crash. > [0]PETSC ERROR: --------------------- Error Message > -------------------------------------------------------------- > > > >> rm -f matExport.log matExport.mat matExport.bin; mpirun -n 2 > >> ./matExport.exe mpiaij; more matExport.log matExport.mat matExport.bin > mat type is mpiaij > :::::::::::::: > matExport.log > :::::::::::::: > Mat Object: 2 MPI processes > type: mpiaij > row 0: (0, 2.) > row 1: (1, 4.) > row 2: (2, 6.) > row 3: (3, 8.) > row 4: (4, 10.) > row 5: (5, 12.) > row 6: (6, 14.) > row 7: (7, 16.) > row 8: (8, 18.) > row 9: (9, 20.) > :::::::::::::: > matExport.mat > :::::::::::::: > %Mat Object: 2 MPI processes > % type: mpiaij > % Size = 10 10 > % Nonzeros = 10 > zzz = zeros(10,3); > zzz = [ > 1 1 2.0000000000000000e+00 > 2 2 4.0000000000000000e+00 > 3 3 6.0000000000000000e+00 > 4 4 8.0000000000000000e+00 > 5 5 1.0000000000000000e+01 > 6 6 1.2000000000000000e+01 > 7 7 1.4000000000000000e+01 > 8 8 1.6000000000000000e+01 > 9 9 1.8000000000000000e+01 > 10 10 2.0000000000000000e+01 > ]; > Mat_0x557ffe276ba0_0 = spconvert(zzz); > :::::::::::::: > matExport.bin > :::::::::::::: > > > > > >
